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"])