|
@@ -1736,10 +1736,12 @@ class AIVideoGenerationService
|
|
|
*/
|
|
*/
|
|
|
private function kuaikuaiStatusToLocal(string $status): string
|
|
private function kuaikuaiStatusToLocal(string $status): string
|
|
|
{
|
|
{
|
|
|
- switch ($status) {
|
|
|
|
|
|
|
+ switch (strtolower(trim($status))) {
|
|
|
case 'ready':
|
|
case 'ready':
|
|
|
|
|
+ case 'success':
|
|
|
return MpAsset::STATUS_ACTIVE;
|
|
return MpAsset::STATUS_ACTIVE;
|
|
|
case 'failed':
|
|
case 'failed':
|
|
|
|
|
+ case 'failure':
|
|
|
return MpAsset::STATUS_FAILED;
|
|
return MpAsset::STATUS_FAILED;
|
|
|
default:
|
|
default:
|
|
|
return MpAsset::STATUS_PROCESSING;
|
|
return MpAsset::STATUS_PROCESSING;
|
|
@@ -1843,9 +1845,20 @@ class AIVideoGenerationService
|
|
|
$result['asset_id'] = $assetId;
|
|
$result['asset_id'] = $assetId;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 同步更新本地素材状态
|
|
|
|
|
- if (!empty($result['status'])) {
|
|
|
|
|
- $updateData = ['status' => $this->kuaikuaiStatusToLocal($result['status'])];
|
|
|
|
|
|
|
+ // 状态归一化:ready/success 视为就绪,failed/failure 视为失败
|
|
|
|
|
+ $resultStatus = $result['status'] ?? '';
|
|
|
|
|
+ if (!empty($resultStatus)) {
|
|
|
|
|
+ $normalizedStatus = in_array(strtolower((string)$resultStatus), ['ready', 'success'], true)
|
|
|
|
|
+ ? 'ready'
|
|
|
|
|
+ : (in_array(strtolower((string)$resultStatus), ['failed', 'failure'], true) ? 'failed' : 'pending');
|
|
|
|
|
+ $result['status'] = $normalizedStatus;
|
|
|
|
|
+
|
|
|
|
|
+ // 同步更新本地素材状态(同时刷新extra_params为最新查询结果,避免保留上传时的pending快照)
|
|
|
|
|
+ $updateData = [
|
|
|
|
|
+ 'status' => $this->kuaikuaiStatusToLocal($normalizedStatus),
|
|
|
|
|
+ 'extra_params' => json_encode($responseData, JSON_UNESCAPED_UNICODE),
|
|
|
|
|
+ 'updated_at' => date('Y-m-d H:i:s'),
|
|
|
|
|
+ ];
|
|
|
if (!empty($result['failure_reason'])) {
|
|
if (!empty($result['failure_reason'])) {
|
|
|
$updateData['error_message'] = $result['failure_reason'];
|
|
$updateData['error_message'] = $result['failure_reason'];
|
|
|
}
|
|
}
|
|
@@ -1968,7 +1981,7 @@ class AIVideoGenerationService
|
|
|
MpAsset::create($recordData);
|
|
MpAsset::create($recordData);
|
|
|
|
|
|
|
|
// 网关已就绪/失败,直接返回
|
|
// 网关已就绪/失败,直接返回
|
|
|
- if ($status === 'ready') {
|
|
|
|
|
|
|
+ if (in_array($status, ['ready', 'success'], true)) {
|
|
|
logDB('generate', 'info', '快快AI素材上传成功', ['asset_id' => $assetId, 'url' => $url]);
|
|
logDB('generate', 'info', '快快AI素材上传成功', ['asset_id' => $assetId, 'url' => $url]);
|
|
|
return [
|
|
return [
|
|
|
'code' => 0,
|
|
'code' => 0,
|
|
@@ -2001,7 +2014,7 @@ class AIVideoGenerationService
|
|
|
$lastStatus = $assetInfo['status'] ?? '';
|
|
$lastStatus = $assetInfo['status'] ?? '';
|
|
|
dLog('generate')->info("快快AI素材 {$assetId} 状态查询第 {$attempt} 次,状态: {$lastStatus}");
|
|
dLog('generate')->info("快快AI素材 {$assetId} 状态查询第 {$attempt} 次,状态: {$lastStatus}");
|
|
|
|
|
|
|
|
- if ($lastStatus === 'ready') {
|
|
|
|
|
|
|
+ if (in_array($lastStatus, ['ready', 'success'], true)) {
|
|
|
logDB('generate', 'info', '快快AI素材处理成功', ['asset_id' => $assetId, 'url' => $url]);
|
|
logDB('generate', 'info', '快快AI素材处理成功', ['asset_id' => $assetId, 'url' => $url]);
|
|
|
return [
|
|
return [
|
|
|
'code' => 0,
|
|
'code' => 0,
|