Tasks completed: 2/2 - Task 1: topic_overrides in CalendarRequest + pipeline wiring - Task 2: picker Swipe File nel form Genera Calendario + mark-used SUMMARY: .planning/phases/03-organization-layer/03-02-SUMMARY.md
5.1 KiB
5.1 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | duration | completed | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 03-organization-layer | 02 | ui |
|
|
|
|
|
|
|
|
3min | 2026-03-09 |
Phase 3 Plan 02: Swipe-to-Calendar Integration Summary
topic_overrides in CalendarRequest + picker Swipe File inline per 13 slot nel form Genera Calendario con mark-used automatico
Performance
- Duration: ~3 min
- Started: 2026-03-08T23:30:30Z
- Completed: 2026-03-08T23:33:16Z
- Tasks: 2
- Files modified: 5
Accomplishments
- Backend schema —
topic_overrides: Optional[dict[int, str]]aggiunto aCalendarRequestin Pydantic; campo passa validazione e arriva alla pipeline - Pipeline wiring —
GenerationPipeline._run_generationcontrolla override per slot_index prima di chiamare LLM; log informativo quando applicato; slot senza override non modificati - Frontend types + hook —
CalendarRequest.topic_overridesin types.ts; hookuseMarkSwipeUsedaggiunto in hooks.ts (POST /swipe/{id}/mark-used con invalidateQueries) - UI griglia 13 slot — Form Genera Calendario con sezione "Topic Override" opzionale: griglia 3 colonne su desktop, 1 su mobile; ogni slot mostra bottone "Da Swipe File" o topic assegnato con X per rimuovere
- Picker inline — Apre lista SwipeItems con nicchia badge e badge Usato; selezione assegna topic + chiama mark-used; slot con override ha bordo amber-500/30
Task Commits
Ogni task committato atomicamente:
- Task 1: Backend — topic_overrides in CalendarRequest + pipeline wiring -
67769dd(feat) - Task 2: Frontend — Picker Swipe File nel form Genera Calendario + mark used -
f449d94(feat)
Plan metadata: (vedi commit docs sotto)
Files Created/Modified
backend/schemas/calendar.py- Aggiunto campotopic_overrides: Optional[dict[int, str]]backend/services/generation_pipeline.py- Override applicato nel_run_generationprima della chiamata LLMfrontend/src/types.ts-CalendarRequest.topic_overrides?: Record<number, string> | nullfrontend/src/api/hooks.ts- HookuseMarkSwipeUsedaggiunto nella sezione Swipe Filefrontend/src/pages/GenerateCalendar.tsx- Sezione Topic Override con griglia slot e picker inline
Decisions Made
- dict[int, str] per topic_overrides: chiave numerica = indice slot (0-12), piu' diretto di lista; JSON serializza come
{"0": "topic"}ma Pydantic converte automaticamente string key → int - Override check prima di slot.topic e prima di LLM: ordine di priorita' — override utente > topic gia' presente > generazione LLM
- fire-and-forget per mark-used:
markUsed.mutate(item.id)senza await per non bloccare la UI; il cache invalidation avviene in background - Picker inline con absolute positioning: evita modal overlay pesante; z-20 garantisce visibilita'; si chiude automaticamente dopo selezione o cliccando X
Deviations from Plan
None — piano eseguito esattamente come scritto.
Issues Encountered
None.
User Setup Required
None — nessuna configurazione esterna richiesta.
Next Phase Readiness
- Phase 3 (Organization Layer) completa: SwipeService CRUD + pagina SwipeFile + integrazione nel form Genera Calendario
- Pronto per
vps-lab-deployper deployare end-to-end su VPS e testare il flusso completo - Phase 4 (Enrichment — Unsplash) puo' iniziare indipendentemente
Phase: 03-organization-layer Completed: 2026-03-09