feat(01-02): costanti dominio, schemas Pydantic, FormatSelector

- backend/constants.py: CANVA_FIELDS (33 col locked), PERSUASION_DISTRIBUTION (13), SCHWARTZ_DISTRIBUTION (13)
- backend/schemas/calendar.py: CalendarSlot, CalendarRequest, CalendarResponse
- backend/schemas/generate.py: SlideContent, GeneratedPost, TopicResult, GenerateRequest, PostResult, GenerateResponse
- backend/data/format_mapping.json: matrice 6 tipi x 5 livelli (30 combinazioni)
- backend/services/format_selector.py: FormatSelector con select_format e fallback PAS
- fix .gitignore: backend/data/prompts/ e format_mapping.json non erano ignorabili
This commit is contained in:
Michele
2026-03-08 01:54:58 +01:00
parent 50d5708016
commit 209d8962f7
8 changed files with 635 additions and 2 deletions

View File

@@ -0,0 +1,45 @@
{
"_comment": "Matrice di mapping tipo_contenuto x livello_schwartz -> formato_narrativo. Scegliere il formato più efficace per ogni combinazione in base al livello di consapevolezza del pubblico.",
"valore": {
"L5": "Listicle",
"L4": "PAS",
"L3": "PAS",
"L2": "Obiezione_Risposta",
"L1": "AIDA"
},
"storytelling": {
"L5": "BAB",
"L4": "Storytelling",
"L3": "BAB",
"L2": "Storytelling",
"L1": "AIDA"
},
"news": {
"L5": "Dato_Implicazione",
"L4": "Dato_Implicazione",
"L3": "PAS",
"L2": "Obiezione_Risposta",
"L1": "AIDA"
},
"riprova_sociale": {
"L5": "Storytelling",
"L4": "BAB",
"L3": "Obiezione_Risposta",
"L2": "PAS",
"L1": "AIDA"
},
"coinvolgimento": {
"L5": "Listicle",
"L4": "PAS",
"L3": "Obiezione_Risposta",
"L2": "Obiezione_Risposta",
"L1": "AIDA"
},
"promozione": {
"L5": "AIDA",
"L4": "AIDA",
"L3": "PAS",
"L2": "PAS",
"L1": "AIDA"
}
}