mirror of
https://github.com/computerim/impactflow-discovery.git
synced 2026-08-27 09:00:36 +00:00
Persist discovery answers to CSV for reprocessing and recovery
Save each discovery conversation's prompts and answers to durable CSV files (per-conversation + append-only master log) on both save and completion, so answers survive an extraction error, can be re-fed to the AI, and can be reviewed/resumed by the user. - app/services/answer_store.py: canonical prompt list + atomic CSV writes, master append, and read-back helpers (DB stays system of record; CSV failures are logged, never fatal). - discovery router: write CSV on /respond and /complete; new endpoints GET /answers, GET /answers.csv, POST /reprocess (shared extraction helper; locked profiles return 409). - discovery.html: prefill/resume from saved answers after an error and a "Re-run analysis" button wired to /reprocess. - scripts/reprocess_csv.py: offline CLI to re-run extraction from a CSV (print or --write-db). - QUESTIONS_DIR / QUESTIONS_MASTER_CSV config, .gitignore, README, tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dg6XWUwprmP5QCL18HxssY
This commit is contained in:
@@ -24,6 +24,21 @@ class RespondResponse(BaseModel):
|
||||
status: str
|
||||
|
||||
|
||||
class AnswerItem(BaseModel):
|
||||
prompt_key: str
|
||||
prompt_title: str
|
||||
answer: str = ""
|
||||
|
||||
|
||||
class AnswersResponse(BaseModel):
|
||||
"""The saved prompts and answers for a conversation, for review/resume."""
|
||||
|
||||
conversation_id: str
|
||||
started_at: datetime
|
||||
completed_at: Optional[datetime] = None
|
||||
answers: list[AnswerItem] = []
|
||||
|
||||
|
||||
class Confidence(BaseModel):
|
||||
triad: Optional[str] = None
|
||||
type: Optional[str] = None
|
||||
|
||||
Reference in New Issue
Block a user