feat(briefing): wire pre-processing pipeline; run_compilation returns (text, metadata)

- Task change detection via snapshot diff
- RSS scoring/filtering via briefing_preferences
- Weather card via parse_weather_card_data (staleness-gated)
- News card markdown format with ordering constraint
- Metadata stored on Message record via post_message()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 10:38:28 -04:00
parent e3c1e97cfa
commit dc93e0d39f
3 changed files with 86 additions and 23 deletions
@@ -153,9 +153,9 @@ async def _run_slot_for_user(user_id: int, slot: str) -> None:
await _run_profile_closeout(user_id, model)
conv = await get_or_create_today_conversation(user_id, model)
text = await run_compilation(user_id, slot, model)
text, metadata = await run_compilation(user_id, slot, model)
if text:
await post_message(conv.id, "assistant", text)
await post_message(conv.id, "assistant", text, metadata=metadata)
else:
conv = await get_or_create_today_conversation(user_id, model)