diff --git a/backend/internal/backend/handlers_textgen.go b/backend/internal/backend/handlers_textgen.go index 4aa4a2d..f81c063 100644 --- a/backend/internal/backend/handlers_textgen.go +++ b/backend/internal/backend/handlers_textgen.go @@ -233,6 +233,7 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R } } + var allResults []proposedChapterTitle chaptersDone := resumeFrom firstEvent := true for i, batch := range batches { @@ -287,6 +288,7 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R NewTitle: p.Title, }) } + allResults = append(allResults, result...) chaptersDone += len(batch) if jobID != "" && s.deps.AIJobStore != nil { @@ -310,16 +312,20 @@ func (s *Server) handleAdminTextGenChapterNames(w http.ResponseWriter, r *http.R 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 { status := domain.TaskStatusDone if jobCtx.Err() != nil { 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{ "status": string(status), "items_done": chaptersDone, "finished": time.Now().Format(time.RFC3339), + "payload": finalPayload, }) }