|
|
@@ -90,7 +90,7 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
// 查询视频生成任务状态
|
|
|
$videoTask = DB::table('mp_generate_video_tasks')
|
|
|
->where('id', $videoTaskId)
|
|
|
- ->select('id', 'status', 'result_url', 'compressed_url', 'last_frame_url', 'error_message', 'result_json', 'extra_params')
|
|
|
+ ->select('id', 'status', 'result_url', 'compressed_url', 'last_frame_url', 'error_message', 'result_json', 'extra_params', 'alias_segment_id', 'alias_act_id')
|
|
|
->first();
|
|
|
|
|
|
if (!$videoTask) {
|
|
|
@@ -152,7 +152,7 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
$successCount++;
|
|
|
|
|
|
// 更新分镜视频成功后新增对话记录
|
|
|
- $this->addVideoGenerationRecords($segmentId, $videoTask->result_url);
|
|
|
+ $this->addVideoGenerationRecords($videoTask, $segmentId, $videoTask->result_url);
|
|
|
|
|
|
dLog('command')->info('分镜视频生成成功', [
|
|
|
'segment_id' => $segmentId,
|
|
|
@@ -207,27 +207,56 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
|
|
|
/**
|
|
|
* 添加视频生成对话记录
|
|
|
- *
|
|
|
- * @param int $segmentId 分镜ID
|
|
|
+ * @param array $task 任务数据
|
|
|
+ * @param string|int $segmentIdOrActId segment_id(分镜模式)或 act_id(全能模式)
|
|
|
* @param string $videoUrl 视频URL
|
|
|
* @return void
|
|
|
*/
|
|
|
- private function addVideoGenerationRecords($segmentId, $videoUrl)
|
|
|
+ private function addVideoGenerationRecords($task, $segmentIdOrActId, $videoUrl)
|
|
|
{
|
|
|
try {
|
|
|
- // 获取分镜信息
|
|
|
- $segment = DB::table('mp_episode_segments')
|
|
|
- ->where('segment_id', $segmentId)
|
|
|
- ->select('uid', 'anime_id', 'episode_number', 'tail_frame')
|
|
|
- ->first();
|
|
|
+ $segment_id = getProp($task, 'alias_segment_id');
|
|
|
+ $act_id = getProp($task, 'alias_act_id');
|
|
|
+
|
|
|
+ if ($segment_id) {
|
|
|
+ // 分镜模式:使用segment_id查询
|
|
|
+ $segment = DB::table('mp_episode_segments as a')->leftJoin('mp_animes as b', 'a.anime_id', 'b.id')
|
|
|
+ ->where('a.segment_id', $segmentIdOrActId)
|
|
|
+ ->select('b.user_id as uid', 'a.anime_id', 'a.episode_number', 'a.tail_frame', 'a.segment_id')
|
|
|
+ ->first();
|
|
|
+ } elseif ($act_id) {
|
|
|
+ // 全能模式:使用id查询
|
|
|
+ $segment = DB::table('mp_episode_segments as a')->leftJoin('mp_animes as b', 'a.anime_id', 'b.id')
|
|
|
+ ->where('a.id', $segmentIdOrActId)
|
|
|
+ ->select('b.user_id as uid', 'a.anime_id', 'a.episode_number', 'a.tail_frame', 'a.segment_id', 'a.id')
|
|
|
+ ->first();
|
|
|
+ } else {
|
|
|
+ dLog('generate')->warning('无法确定查询模式,任务缺少segment_id和act_id', ['segment_id_or_act_id' => $segmentIdOrActId]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
if (!$segment) {
|
|
|
- dLog('command')->warning('分镜信息不存在,无法添加对话记录', ['segment_id' => $segmentId]);
|
|
|
+ dLog('generate')->warning('分镜信息不存在,无法添加对话记录', ['segment_id_or_act_id' => $segmentIdOrActId]);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
$now = date('Y-m-d H:i:s');
|
|
|
|
|
|
+ // 根据模式确定保存的字段和值
|
|
|
+ if ($segment_id) {
|
|
|
+ // 分镜模式:保存segment_id字段
|
|
|
+ $recordField = 'segment_id';
|
|
|
+ $recordValue = $segmentIdOrActId;
|
|
|
+ $userContent = '图片转视频';
|
|
|
+ $assistantContent = $segment->tail_frame ?: '';
|
|
|
+ } else {
|
|
|
+ // 全能模式:保存act_id字段
|
|
|
+ $recordField = 'act_id';
|
|
|
+ $recordValue = $segmentIdOrActId;
|
|
|
+ $userContent = '片段转视频';
|
|
|
+ $assistantContent = $segment->act_content ?: '';
|
|
|
+ }
|
|
|
+
|
|
|
// 保存对话记录
|
|
|
$records = [
|
|
|
[
|
|
|
@@ -235,8 +264,8 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
'anime_id' => $segment->anime_id,
|
|
|
'sequence' => $segment->episode_number,
|
|
|
'role' => 'user',
|
|
|
- 'content' => '图片转视频',
|
|
|
- 'segment_id' => $segmentId,
|
|
|
+ 'content' => $userContent,
|
|
|
+ $recordField => $recordValue,
|
|
|
'video_url' => '',
|
|
|
'created_at' => $now,
|
|
|
'updated_at' => $now
|
|
|
@@ -246,8 +275,8 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
'anime_id' => $segment->anime_id,
|
|
|
'sequence' => $segment->episode_number,
|
|
|
'role' => 'assistant',
|
|
|
- 'content' => $segment->tail_frame ?: '',
|
|
|
- 'segment_id' => $segmentId,
|
|
|
+ 'content' => $assistantContent,
|
|
|
+ $recordField => $recordValue,
|
|
|
'video_url' => $videoUrl,
|
|
|
'created_at' => $now,
|
|
|
'updated_at' => $now
|
|
|
@@ -256,16 +285,16 @@ class CheckVideoGenerationTasksCommand extends Command
|
|
|
|
|
|
DB::table('mp_anime_records')->insert($records);
|
|
|
|
|
|
- dLog('command')->info('视频生成对话记录添加成功', [
|
|
|
- 'segment_id' => $segmentId,
|
|
|
+ dLog('generate')->info('视频生成对话记录添加成功', [
|
|
|
+ 'segment_id_or_act_id' => $segmentIdOrActId,
|
|
|
'video_url' => $videoUrl,
|
|
|
'uid' => $segment->uid,
|
|
|
'anime_id' => $segment->anime_id
|
|
|
]);
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
- dLog('command')->error('添加视频生成对话记录失败: ' . $e->getMessage(), [
|
|
|
- 'segment_id' => $segmentId,
|
|
|
+ dLog('generate')->error('添加视频生成对话记录失败: ' . $e->getMessage(), [
|
|
|
+ 'segment_id' => $segmentIdOrActId,
|
|
|
'video_url' => $videoUrl,
|
|
|
'error' => $e->getMessage()
|
|
|
]);
|