1
This commit is contained in:
@@ -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).
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user