Skip to content

feat(synthese): génération manuelle sur une plage de dates depuis l'admin - #59

Merged
ijdan merged 1 commit into
mainfrom
claude/ai-synthesis-date-filtering-srkyrr
Jul 17, 2026
Merged

feat(synthese): génération manuelle sur une plage de dates depuis l'admin#59
ijdan merged 1 commit into
mainfrom
claude/ai-synthesis-date-filtering-srkyrr

Conversation

@ijdan

@ijdan ijdan commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Contexte

Suite à #58 : la génération manuelle de la synthèse ne ciblait qu'un jour unique. Cette PR permet de synthétiser les articles collectés sur une plage de dates, avec la contrainte date de départ ≤ date de fin.

Changements

IHM admin (DailySynthesisSettings.tsx)

  • Le champ « Date de la synthèse » devient deux champs « Articles collectés du … au … » (initialisés à aujourd'hui).
  • Contrainte départ ≤ fin appliquée à trois niveaux : bornes min/max des inputs, bouton « Générer » désactivé avec message d'erreur, garde dans launchGeneration.
  • Plage d'un seul jour = comportement jour unique inchangé.

Backend (app/routers/admin.py)

  • POST /admin/synthesis/generate accepte end_date : 400 si départ > fin, si fin future, ou si fin fournie sans départ. La période est transmise au collector via la nouvelle variable COLLECTOR_SYNTHESIS_DATE_END (local et Cloud Run Job).
  • GET /admin/syntheses accepte end_date pour consulter la synthèse d'une période (syntheses/{date}_{end_date}).

Collector (processors/synthesis.py, main.py)

  • run_synthesis prend target_date_end : corpus borné de {départ}T00:00:00 à {fin}T23:59:59.999999.
  • Document écrit dans syntheses/{départ}_{fin} — les synthèses quotidiennes ne sont jamais écrasées par une synthèse de période. Champs target_date / target_date_end stockés pour l'affichage.
  • Garde-fou : période invalide → abandon loggé, aucun appel LLM, aucune écriture.

Page /admin/synthesis

  • Lien « Voir la synthèse → », bandeau de consultation, en-têtes de carte et états vides affichent la période « du X au Y » ; la mention « générée a posteriori » se base sur la fin de période.

Tests

  • 2 nouveaux tests : test_run_synthesis_date_range (bornes, ID {start}_{end}, champs stockés) et test_run_synthesis_invalid_range_writes_nothing (plage inversée → aucune écriture, aucun appel LLM).
  • test_synthesis.py (28) + test_collector.py (7) : 35 tests verts.
  • tsc --noEmit vert sur le frontend.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X3j8zF5W8ru4o83KsATVHb


Generated by Claude Code

…dmin

- IHM admin : deux champs « Articles collectés du … au … » ; la date de
  départ est contrainte à être antérieure ou égale à la date de fin
  (bornes min/max des inputs + bouton désactivé + message d'erreur).
- Backend : /admin/synthesis/generate accepte end_date (400 si départ >
  fin, si fin future, ou si fin sans départ) et transmet la période au
  Cloud Run Job via COLLECTOR_SYNTHESIS_DATE_END. /admin/syntheses accepte
  end_date pour consulter une synthèse de période.
- Collector : run_synthesis borne le corpus du début du premier jour à la
  fin du dernier et écrit le document dans syntheses/{date}_{date_fin}
  (jour unique : comportement inchangé, syntheses/{date}). Les champs
  target_date/target_date_end sont stockés pour l'affichage.
- Page /admin/synthesis : bandeau, en-tête et états vides affichent la
  période « du X au Y ».

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X3j8zF5W8ru4o83KsATVHb
@ijdan
ijdan merged commit 04e988f into main Jul 17, 2026
7 checks passed
@ijdan
ijdan deleted the claude/ai-synthesis-date-filtering-srkyrr branch July 17, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants