Spaces:
Running
Running
| from app.models.enums import NoteStatus | |
| from app.utils.time import now_ts | |
| from fastapi import APIRouter, BackgroundTasks, HTTPException | |
| from pydantic import BaseModel | |
| from typing import List | |
| from app.services.note_store import get_note, update_note | |
| from app.jobs.async_enrichment_job import enrich_note | |
| router = APIRouter(prefix="/notes", tags=["notes"]) | |
| class RegenerateRequest(BaseModel): | |
| generate: List[str] | |
| def regenerate_note(note_id: str, req: RegenerateRequest, bg: BackgroundTasks): | |
| note = get_note(note_id) | |
| if not note: | |
| raise HTTPException(404, "Note not found") | |
| allowed = {"normalize", "keywords", "summary", "mindmap"} | |
| if not set(req.generate).issubset(allowed): | |
| raise HTTPException(400, "Invalid generate task, generate list must not be empty") | |
| # mark processing immediately | |
| update_note(note_id, { | |
| "status": NoteStatus.processing, | |
| "normalized_text": None, | |
| "title": None, | |
| "keywords": None, | |
| "summary": None, | |
| "mindmap": None, | |
| "updated_at": now_ts(), | |
| }) | |
| bg.add_task(enrich_note, note_id, req.generate) | |
| return { | |
| "note_id": note_id, | |
| "status": NoteStatus.processing, | |
| } | |