fix: persist chapter-names results into job payload from sync SSE handler
The SSE (non-async) chapter-names handler streamed results to the client
but never wrote them into the PocketBase job payload — only the initial
{pattern} stub was stored. The Review button then fetched the job and
found no results, showing 'No results found in this job's payload.'
Fix: accumulate allResults across batches (same as the async handler) and
write the full {pattern, slug, results:[...]} payload when marking done.
This commit is contained in:
@@ -233,6 +233,7 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var allResults []proposedChapterTitle
|
||||||
chaptersDone := resumeFrom
|
chaptersDone := resumeFrom
|
||||||
firstEvent := true
|
firstEvent := true
|
||||||
for i, batch := range batches {
|
for i, batch := range batches {
|
||||||
@@ -287,6 +288,7 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R
|
|||||||
NewTitle: p.Title,
|
NewTitle: p.Title,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
allResults = append(allResults, result...)
|
||||||
chaptersDone += len(batch)
|
chaptersDone += len(batch)
|
||||||
|
|
||||||
if jobID != "" && s.deps.AIJobStore != nil {
|
if jobID != "" && s.deps.AIJobStore != nil {
|
||||||
@@ -310,16 +312,20 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R
|
|||||||
sseWrite(evt)
|
sseWrite(evt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark job as done in PB.
|
// Mark job as done in PB, persisting results so the Review button works.
|
||||||
if jobID != "" && s.deps.AIJobStore != nil {
|
if jobID != "" && s.deps.AIJobStore != nil {
|
||||||
status := domain.TaskStatusDone
|
status := domain.TaskStatusDone
|
||||||
if jobCtx.Err() != nil {
|
if jobCtx.Err() != nil {
|
||||||
status = domain.TaskStatusCancelled
|
status = domain.TaskStatusCancelled
|
||||||
}
|
}
|
||||||
|
resultsJSON, _ := json.Marshal(allResults)
|
||||||
|
finalPayload := fmt.Sprintf(`{"pattern":%q,"slug":%q,"results":%s}`,
|
||||||
|
req.Pattern, req.Slug, string(resultsJSON))
|
||||||
_ = s.deps.AIJobStore.UpdateAIJob(r.Context(), jobID, map[string]any{
|
_ = s.deps.AIJobStore.UpdateAIJob(r.Context(), jobID, map[string]any{
|
||||||
"status": string(status),
|
"status": string(status),
|
||||||
"items_done": chaptersDone,
|
"items_done": chaptersDone,
|
||||||
"finished": time.Now().Format(time.RFC3339),
|
"finished": time.Now().Format(time.RFC3339),
|
||||||
|
"payload": finalPayload,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user