This commit is contained in:
2026-07-01 16:08:55 +08:00
parent 503545fba6
commit 04ff35ea4f
2 changed files with 28 additions and 23 deletions
+18
View File
@@ -197,6 +197,24 @@ func (d *generationTaskDao) ListByEpisodeIds(ctx context.Context, episodeIds []i
return
}
// ListByStatuses — 按多状态查询所有生成任务
func (d *generationTaskDao) ListByStatuses(ctx context.Context, statuses []string) (res []*entity.GenerationTask, err error) {
if len(statuses) == 0 {
return []*entity.GenerationTask{}, nil
}
r, err := g.DB().Model(public.TableNameGenerationTask).Ctx(ctx).
Where("status in (?)", statuses).
OrderDesc("id").All()
if err != nil {
return
}
if r == nil {
return []*entity.GenerationTask{}, nil
}
err = r.Structs(&res)
return
}
// ListByStatus — 按状态查询所有生成任务
func (d *generationTaskDao) ListByStatus(ctx context.Context, status string) (res []*entity.GenerationTask, err error) {
r, err := g.DB().Model(public.TableNameGenerationTask).Ctx(ctx).
+10 -23
View File
@@ -790,33 +790,20 @@ func (s *dramaService) pollPendingVideos(ctx context.Context) {
return
}
tasks, err := dao.GenerationTask.ListByStatus(ctx, "generating")
allTasks, err := dao.GenerationTask.ListByStatuses(ctx, []string{"generating", "review"})
if err != nil || len(allTasks) == 0 {
return
}
// 兜底:检查是否有剧集所有任务已完成但状态未更新
if revTasks, _ := dao.GenerationTask.ListByStatus(ctx, "review"); len(revTasks) > 0 {
seenEp := make(map[int64]bool)
for _, rt := range revTasks {
if seenEp[rt.EpisodeId] {
continue
}
seenEp[rt.EpisodeId] = true
if ep, _ := dao.Episode.GetOne(ctx, rt.EpisodeId); ep != nil && ep.Status != "review" && ep.Status != "completed" {
allTasks, _ := dao.GenerationTask.ListByEpisode(ctx, rt.EpisodeId)
allDone := true
for _, t := range allTasks {
if t.Status != "review" && t.Status != "completed" {
allDone = false
break
}
}
if allDone {
_ = dao.Episode.UpdateStatus(ctx, rt.EpisodeId, "review", "")
}
}
// 只处理 generating 任务,review/completed 任务由主流程推进时已更新 episode 状态
var tasks []*entity.GenerationTask
for _, t := range allTasks {
if t.Status == "generating" {
tasks = append(tasks, t)
}
}
if err != nil || len(tasks) == 0 {
if len(tasks) == 0 {
return
}