chore: complete v1 milestone
Archived: - milestones/v1-ROADMAP.md (full phase details) - milestones/v1-REQUIREMENTS.md (46/46 shipped) - milestones/v1-MILESTONE-AUDIT.md (audit report) Created: - MILESTONES.md (project milestone history) Deleted: - REQUIREMENTS.md (fresh one for next milestone) Updated: - PROJECT.md (requirements → Validated, decisions with outcomes) - ROADMAP.md (collapsed to one-line v1 summary) - STATE.md (reset for next milestone) v1 MVP: 4 phases, 10 plans, 46 requirements, 8080 LOC Timeline: 2 days (2026-03-07 → 2026-03-09) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,100 +1,26 @@
|
||||
# Roadmap: PostGenerator
|
||||
|
||||
## Overview
|
||||
## Milestones
|
||||
|
||||
PostGenerator trasforma framework strategici di content marketing (Persuasion Nurturing + livelli Schwartz) in caroselli Instagram pronti per Canva Bulk Create. Il percorso di sviluppo segue una logica precisa: prima costruire la pipeline di generazione end-to-end funzionante (Fase 1), poi dare il controllo sulla qualita' dell'output tramite editor di prompt e anteprima (Fase 2), poi aggiungere gli strumenti organizzativi per un workflow sostenibile (Fase 3), infine arricchire con integrazioni opzionali (Fase 4). Ogni fase consegna un sistema verificabile e utilizzabile indipendentemente dalla successiva.
|
||||
- v1 MVP — Phases 1-4 (shipped 2026-03-09)
|
||||
|
||||
## Phases
|
||||
|
||||
**Phase Numbering:**
|
||||
- Integer phases (1, 2, 3): Planned milestone work
|
||||
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
|
||||
<details>
|
||||
<summary>v1 MVP (Phases 1-4) — SHIPPED 2026-03-09</summary>
|
||||
|
||||
Decimal phases appear between their surrounding integers in numeric order.
|
||||
- [x] Phase 1: Core Generation Pipeline (4/4 plans) — completed 2026-03-08
|
||||
- [x] Phase 2: Prompt Control + Output Review (2/2 plans) — completed 2026-03-08
|
||||
- [x] Phase 3: Organization Layer (2/2 plans) — completed 2026-03-09
|
||||
- [x] Phase 4: Enrichment (2/2 plans) — completed 2026-03-09
|
||||
|
||||
- [x] **Phase 1: Core Generation Pipeline** - Infrastruttura + pipeline calendario → LLM → CSV funzionante end-to-end
|
||||
- [x] **Phase 2: Prompt Control + Output Review** - Editor prompt via UI e anteprima caroselli prima dell'export
|
||||
- [x] **Phase 3: Organization Layer** - Swipe File e gestione storico campagne per workflow sostenibile
|
||||
- [x] **Phase 4: Enrichment** - Integrazione Unsplash, context injection da Swipe File, polish UI
|
||||
|
||||
## Phase Details
|
||||
|
||||
### Phase 1: Core Generation Pipeline
|
||||
**Goal**: L'utente puo' generare un calendario di 13 caroselli completi e scaricare un CSV valido per Canva Bulk Create con un click dalla Web UI deployata su VPS.
|
||||
**Depends on**: Nothing (first phase)
|
||||
**Requirements**: INF-01, INF-02, INF-03, INF-04, INF-05, INF-06, CAL-01, CAL-02, CAL-03, CAL-04, CAL-05, CAL-06, CAL-07, FMT-01, FMT-02, LLM-01, LLM-02, LLM-03, LLM-04, LLM-05, LLM-06, PRM-01, PRM-02, PRM-03, PRM-04, CSV-01, CSV-02, CSV-03, CSV-04, IMG-01, IMG-04, UI-01, UI-02, UI-03, UI-04, UI-07, UI-08
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. L'utente accede a `https://lab.mlhub.it/postgenerator/` e la Web UI si carica senza errori
|
||||
2. L'utente inserisce obiettivo campagna e settimane desiderate, clicca "Genera Calendario" e vede un progress indicator per ogni post in generazione
|
||||
3. Al termine della generazione, l'utente puo' scaricare un file CSV che si apre correttamente in Excel con caratteri italiani intatti e header che corrispondono esattamente ai placeholder del template Canva
|
||||
4. Il CSV contiene esattamente 13 righe di contenuto con la distribuzione Persuasion Nurturing corretta (4 valore, 2 storytelling, 2 news, 3 riprova, 1 coinvolgimento, 1 promo) e i livelli Schwartz assegnati
|
||||
5. Se la generazione di un singolo post fallisce (errore API), gli altri post del batch sono salvati e scaricabili; il post fallito e' marcato come errore senza bloccare il resto
|
||||
**Plans**: 4 plans
|
||||
|
||||
Plans:
|
||||
- [ ] 01-01-PLAN.md — Infrastructure setup: FastAPI skeleton + React SPA + Docker multi-stage build + subpath /postgenerator/ (Wave 1)
|
||||
- [ ] 01-02-PLAN.md — Core services: CalendarService + FormatSelector + PromptService + costanti dominio + 5 prompt italiani (Wave 1)
|
||||
- [ ] 01-03-PLAN.md — LLM pipeline: LLMService + CSVBuilder + GenerationPipeline + API routers (Wave 2)
|
||||
- [ ] 01-04-PLAN.md — Web UI: Dashboard + Genera Calendario + Output Review + Genera Singolo + Settings (Wave 3)
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: Prompt Control + Output Review
|
||||
**Goal**: L'utente puo' modificare i prompt direttamente dalla Web UI senza toccare il codice, rigenerare singoli post insoddisfacenti, e rivedere l'anteprima completa di ogni carosello prima di esportare il CSV.
|
||||
**Depends on**: Phase 1
|
||||
**Requirements**: PRM-05, UI-05
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. L'utente apre la sezione Prompt Editor, vede la lista dei file .txt disponibili, clicca su un prompt e ne modifica il contenuto direttamente nel browser
|
||||
2. Dopo aver salvato un prompt modificato, l'utente genera un nuovo post e il contenuto prodotto riflette le modifiche apportate al prompt
|
||||
3. L'utente puo' rigenerare un singolo post dell'anteprima senza rigenerare l'intero batch
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [ ] 02-01-PLAN.md — Prompt Editor: backend prompts router CRUD (list/read/write/reset) + frontend pagina PromptEditor con lista, textarea, variabili, badge modificato/default (Wave 1)
|
||||
- [ ] 02-02-PLAN.md — Per-item regeneration: bottone Rigenera con popover inline (topic/note override), badge rigenerato, summary counter rigenerati/modificati in OutputReview (Wave 2)
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: Organization Layer
|
||||
**Goal**: L'utente puo' salvare rapidamente idee e topic interessanti in un Swipe File consultabile, e ritrovare e ri-scaricare calendari generati in sessioni precedenti.
|
||||
**Depends on**: Phase 1
|
||||
**Requirements**: SWP-01, SWP-02, SWP-03, SWP-04, UI-06
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. L'utente aggiunge un'idea al Swipe File con topic, nicchia e note; l'idea appare immediatamente nella lista e persiste al riavvio del container
|
||||
2. L'utente puo' eliminare una voce dal Swipe File e la lista si aggiorna
|
||||
3. L'utente puo' selezionare un topic dallo Swipe File come override per uno slot specifico prima di avviare la generazione del calendario
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [x] 03-01-PLAN.md — SwipeService CRUD backend + Pydantic schemas + FastAPI router + pagina SwipeFile UI con form aggiunta, modifica inline, eliminazione con conferma, filtro nicchia (Wave 1)
|
||||
- [x] 03-02-PLAN.md — Swipe-to-calendar integration: topic_overrides in CalendarRequest + picker Swipe File nel form Genera Calendario con mark-used (Wave 2)
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: Enrichment
|
||||
**Goal**: L'utente con API key Unsplash configurata vede URL immagini reali nel CSV invece di placeholder; l'utente puo' passare voci dello Swipe File come contesto durante la generazione topic per risultati piu' aderenti alle proprie osservazioni.
|
||||
**Depends on**: Phase 3
|
||||
**Requirements**: IMG-02, IMG-03
|
||||
**Success Criteria** (what must be TRUE):
|
||||
1. Se l'API key Unsplash e' configurata nelle Impostazioni, il CSV esportato contiene URL immagini reali (non placeholder) per ogni slide
|
||||
2. Se Unsplash non e' configurato o supera il rate limit, il CSV usa URL placeholder senza errori e senza bloccare l'export
|
||||
3. La cache locale evita chiamate duplicate a Unsplash per keyword identiche nella stessa sessione
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [x] 04-01-PLAN.md — UnsplashService backend + Settings unsplash_api_key + integrazione pipeline/CSV con risoluzione keyword -> URL (Wave 1)
|
||||
- [x] 04-02-PLAN.md — Frontend: campo Unsplash in Settings, thumbnail cover in PostCard, hint OutputReview (Wave 2)
|
||||
|
||||
---
|
||||
</details>
|
||||
|
||||
## Progress
|
||||
|
||||
**Execution Order:**
|
||||
Phases execute in numeric order: 1 → 2 → 3 → 4
|
||||
|
||||
| Phase | Plans Complete | Status | Completed |
|
||||
|-------|----------------|--------|-----------|
|
||||
| 1. Core Generation Pipeline | 4/4 | Complete | 2026-03-08 |
|
||||
| 2. Prompt Control + Output Review | 2/2 | Complete | 2026-03-08 |
|
||||
| 3. Organization Layer | 2/2 | Complete | 2026-03-09 |
|
||||
| 4. Enrichment | 2/2 | Complete | 2026-03-09 |
|
||||
| Phase | Milestone | Plans Complete | Status | Completed |
|
||||
|-------|-----------|----------------|--------|-----------|
|
||||
| 1. Core Generation Pipeline | v1 | 4/4 | Complete | 2026-03-08 |
|
||||
| 2. Prompt Control + Output Review | v1 | 2/2 | Complete | 2026-03-08 |
|
||||
| 3. Organization Layer | v1 | 2/2 | Complete | 2026-03-09 |
|
||||
| 4. Enrichment | v1 | 2/2 | Complete | 2026-03-09 |
|
||||
|
||||
Reference in New Issue
Block a user