Add files page and router, update settings, sessions, and notes
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi import APIRouter, HTTPException, Request
|
||||
|
||||
from .. import database as db, jobs
|
||||
from ..pipeline.turns import load_turns
|
||||
from ..pipeline.summarize import summarize_session
|
||||
from ..pipeline.summarize import summarize_session, PLAYER_FINAL_PROMPTS
|
||||
|
||||
router = APIRouter(prefix="/api/sessions/{session_id}/notes", tags=["notes"])
|
||||
|
||||
|
||||
@router.post("/generate")
|
||||
def generate_notes(session_id: str):
|
||||
async def generate_notes(session_id: str, request: Request):
|
||||
body = await request.json() if request.headers.get("content-type") else {}
|
||||
session = db.get_conn().execute("SELECT * FROM sessions WHERE id = ?", (session_id,)).fetchone()
|
||||
if not session:
|
||||
raise HTTPException(404, "Session not found")
|
||||
@@ -22,21 +23,31 @@ def generate_notes(session_id: str):
|
||||
db.get_conn().execute("SELECT raw_label, display_name FROM speakers WHERE session_id = ?", (session_id,))
|
||||
if r["display_name"]}
|
||||
|
||||
# Per-request style overrides the global setting
|
||||
style = body.get("player_recap_style") or settings.get("player_recap_style") or "story"
|
||||
custom = body.get("player_recap_custom_prompt") or settings.get("player_recap_custom_prompt") or ""
|
||||
|
||||
# Resolve the prompt template (same logic as summarize_session)
|
||||
if style == "custom":
|
||||
player_template = custom if custom else PLAYER_FINAL_PROMPTS["story"]
|
||||
else:
|
||||
player_template = PLAYER_FINAL_PROMPTS.get(style, PLAYER_FINAL_PROMPTS["story"])
|
||||
|
||||
job_id = db.create_job(session_id, "summarize")
|
||||
|
||||
def run(progress_cb):
|
||||
turns = load_turns(Path(session["transcript_path"]), speaker_map)
|
||||
dm_notes, player_recap = summarize_session(
|
||||
turns, settings, progress_cb=progress_cb,
|
||||
player_recap_style=settings.get("player_recap_style"),
|
||||
player_recap_custom_prompt=settings.get("player_recap_custom_prompt"),
|
||||
player_recap_style=style,
|
||||
player_recap_custom_prompt=custom,
|
||||
)
|
||||
with db.tx() as conn:
|
||||
conn.execute(
|
||||
"INSERT INTO notes (session_id, dm_notes, player_recap, generated_at) VALUES (?, ?, ?, ?) "
|
||||
"INSERT INTO notes (session_id, dm_notes, player_recap, player_recap_prompt, generated_at) VALUES (?, ?, ?, ?, ?) "
|
||||
"ON CONFLICT(session_id) DO UPDATE SET dm_notes=excluded.dm_notes, "
|
||||
"player_recap=excluded.player_recap, generated_at=excluded.generated_at",
|
||||
(session_id, dm_notes, player_recap, db.now()),
|
||||
"player_recap=excluded.player_recap, player_recap_prompt=excluded.player_recap_prompt, generated_at=excluded.generated_at",
|
||||
(session_id, dm_notes, player_recap, player_template, db.now()),
|
||||
)
|
||||
conn.execute("UPDATE sessions SET status = 'complete' WHERE id = ?", (session_id,))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user