from adalan_decks import *
OUT = "../"
K = "Client · Direction des Opérations"
CONTACTS[:] = [("Prénom Nom", "adresse@adalan.fr")] # signataires donnés par l'utilisateur
# deck_0 : synthèse
S = [cover(K, "Ce que nous avons entendu", "Synthèse de l'atelier de découverte, et les pistes d'accompagnement."),
qsn_general(), refs(),
light("01 · Contexte", "Votre contexte", "Des équipes qui veulent avancer, des outils qui freinent.", None,
cards([("layers", "Une organisation récente", "", None, ["...", "..."]),
("database", "Des outils hétérogènes", "", None, ["...", "..."]),
("cpu", "L'IA disponible, sans mode d'emploi", "", None, ["...", "..."])])),
section("02 · Priorités", "02", "Trois priorités, trois propositions."),
light("02 · Priorités", "Proposition 1", "Un titre qui dit le message.", None,
two_col(ulist(["Le besoin : ...", "Attendu : ..."]), ink_box("Ce que nous proposons", ["...", "..."]))),
light("04 · Suite", "Prochaines étapes", "Quatre étapes pour démarrer.", None,
steps([("adalan", "Propositions", "..."), ("Client", "Accès", "..."), ("Client", "Validation", "..."), ("Ensemble", "Lancement", "...")], 3, 3)),
merci()]
build("Synthèse atelier Client", "Synthèse de l'atelier", "\n".join(S), OUT + "deck_0_synthese.html")
# deck_1 : une proposition (POC), sans prix
S = [cover(K + " · Proposition 1", "Un titre qui donne envie", "Un POC au périmètre réduit pour ..."),
qsn_factory(1), refs(),
kpi("01 · Enjeu", "L'enjeu", "800", "k€", "de pénalités par an, environ. ...", "Ordre de grandeur communiqué lors de l'atelier."),
light("02 · Solution", "Le périmètre", "Un périmètre réduit, sans intégration dans vos systèmes.", None,
table(["", "Dans le POC", "Plus tard"], [["Enseignes", "1 enseigne", "Les autres"], ["Factures", "Export SAP", "Connexion directe"]]), small=True),
light("02 · Solution", "Comment ça marche", "De la source à la décision.", None,
flow([("Sources", "Portail et mails", "...", False), ("IA", "Lecture", "...", True), ("Humain", "Décision", "...", True)])),
light("05 · Suite", "Après le POC", "Commencer petit, puis étendre.", None,
steps([("Étape 1", "Étendre", "..."), ("Étape 2", "Connecter", "...")], 3)
+ note("Le budget de cette proposition est présenté dans un document séparé.", 8, "file", True)),
merci()]
build("POC Client", "Proposition 1", "\n".join(S), OUT + "deck_1_poc_penalites.html")
# deck_2 : budget
prix = {"POC": None} # montants fournis par l'utilisateur, sinon None
fmt = lambda v, lbl: v if v else todo(lbl)
total = None if None in prix.values() else "..." # somme calculée ici, par le script, si tout est fourni
S = [cover(K + " · Budget", "Le budget, proposition par proposition", "Chaque proposition peut être engagée seule, à votre rythme."),
light("01 · Vue d'ensemble", "Vue d'ensemble", "Des budgets distincts, un total global.", None,
table(["Proposition", "Contenu", "Prix HT"], [["1 · POC", "1 enseigne, 6 semaines, forfait", fmt(prix["POC"], "prix du POC")],
["Total global", "", fmt(total, "total global HT")]], 3, 2)),
section("02 · POC", "01", "POC : le budget."),
light("02 · POC", "Proposition 1 · POC", "Un forfait, sur un périmètre réduit.", None,
two_col(table(["Élément", "Prix HT"], [["POC · forfait", fmt(prix["POC"], "prix du POC")]], 3, 1),
box("check", "Ce qui est inclus", ["...", "..."]))),
merci()]
build("Budget Client", "Budget des propositions", "\n".join(S), OUT + "deck_2_budget.html")
# accueil
build_index(OUT + "index.html", K, "Nos propositions, en un seul endroit.",
"À la suite de notre atelier : la synthèse, nos propositions et leur budget.",
[(None, None, [("00", "deck_0_synthese.html", "Synthèse", "Ce que nous avons entendu", "...", ["8 slides", "Synthèse"], True)]),
("Une proposition, pour démarrer petit.", "Chaque proposition commence sur un périmètre réduit.",
[("01", "deck_1_poc_penalites.html", "Proposition 1", "Titre", "...", ["8 slides", "POC · 6 semaines"], False)]),
("Le budget, à part.", None, [("02", "deck_2_budget.html", "Budget", "Le budget, proposition par proposition", "...", ["5 slides", "Budget"], False)])],
facts=["1 synthèse", "1 proposition", "1 budget"])