Aucune conversation '
- 'Narrator — travaille le plan d\'abord.'
- '
')
+ 'Narrator — travaille le plan d\'abord, '
+ 'puis sauvegarde-le.
')
+ proj = fac.Project(slug)
try:
- md = entry["agent"].send(
- "formalise — produis la formalisation complète slide par "
- "slide (SLIDE N — titre, contenus, Notes éventuelles), "
- "sans commentaire autour.")
- entry["chat"].append(("system", "Formalisation demandée…"))
+ # Message IDENTIQUE à /formalise du facilitator (le Narrator
+ # produit un Markdown structuré #/##/### — PAS des "SLIDE N —
+ # layout" : ce sont le Designer puis l'Encoder qui les créent).
+ md = entry["agent"].feedback(
+ "Formalise maintenant le plan compact validé en Markdown "
+ "structuré complet pour le Designer (format #, ##, ###), "
+ "en développant le contenu de chaque slide. Inclus les "
+ "slides tiroir en les marquant [OPT-XXX].")
+ entry["chat"].append(("system", "Formalisation demandée."))
+ entry["chat"].append(("narrator", md))
+ # Garde : le Narrator a-t-il vraiment produit un plan ?
+ if md.count("#") < 3 or len(md) < 300:
+ return HTMLResponse(
+ '
Le Narrator n\'a pas renvoyé un plan '
+ 'formalisé exploitable (réponse trop courte ou non '
+ 'structurée). Vérifie le plan dans le chat, ajuste, '
+ 'puis relance.
')
+ proj.mark_formalised(md)
r = api.formalise(slug, md)
except Exception as e:
return HTMLResponse(f'
Échec : '
f'{html.escape(str(e))}
')
if r.get("error"):
- return HTMLResponse(f'
'
- f'{html.escape(str(r))}
')
+ return HTMLResponse(
+ f'
{html.escape(str(r.get("error")))}'
+ f' Le Designer/Encoder n\'a pas su '
+ f'transcrire ce plan. Regarde la formalisation dans le '
+ f'chat : elle doit lister les slides une à une.'
+ f'
')
return HTMLResponse(
f'
Deck généré : {r["slides"]} slides — '
f'{html.escape(r["validation"])} '
- f'Télécharger le PPTX · '
- f'
')
+ f'Télécharger le '
+ f'PPTXpuis « Générer les aperçus » '
+ f'ci-dessus pour les voir.')
async def preview(request):
@@ -325,6 +343,8 @@ async def preview(request):
f''
for i, n in enumerate(r["slides"]))
return HTMLResponse(
+ f'
{len(r["slides"])} aperçus générés. Coche des '
+ f'slides pour les réviser.