per-campaign settings, default campaign folders, custom prompt fix
All checks were successful
Build and Push / build (push) Successful in 12m10s

This commit is contained in:
KansaiGaijin
2026-07-21 17:46:37 +12:00
parent 0daca2f208
commit ca13989ca0
14 changed files with 181 additions and 99 deletions

View File

@@ -4,7 +4,7 @@ from fastapi import APIRouter, HTTPException, Request
from .. import database as db, jobs
from ..pipeline.turns import load_turns
from ..pipeline.summarize import summarize_session, PLAYER_FINAL_PROMPTS
from ..pipeline.summarize import summarize_session
router = APIRouter(prefix="/api/sessions/{session_id}/notes", tags=["notes"])
@@ -18,26 +18,21 @@ async def generate_notes(session_id: str, request: Request):
if not session["transcript_path"]:
raise HTTPException(400, "Session hasn't been transcribed yet")
settings = db.get_settings()
cid = session["campaign_id"] or "default"
settings = db.get_campaign_settings(cid)
speaker_map = {r["raw_label"]: r["display_name"] for r in
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
# Per-request style overrides the campaign 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(
dm_notes, player_recap, used_template = summarize_session(
turns, settings, progress_cb=progress_cb,
player_recap_style=style,
player_recap_custom_prompt=custom,
@@ -47,7 +42,7 @@ async def generate_notes(session_id: str, request: Request):
"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, player_recap_prompt=excluded.player_recap_prompt, generated_at=excluded.generated_at",
(session_id, dm_notes, player_recap, player_template, db.now()),
(session_id, dm_notes, player_recap, used_template, db.now()),
)
conn.execute("UPDATE sessions SET status = 'complete' WHERE id = ?", (session_id,))