import json
from doc_helpers import *

ANALYSIS=[
('P1 — Messages égarés ou mal dirigés. La réception alterne papier, Word et Excel; aucun circuit de transmission uniforme n’est décrit.','S1 — Registre Messages : service choisi dans une liste, responsable par RECHERCHEV, état du suivi et alerte après un jour civil.','Une seule trace consultable facilite la relève. La réception doit consulter et transmettre les messages; la formule n’envoie pas de notification.'),
('P2 — Heures attribuées au mauvais client et désaccord entre agenda et facturation. Les transmissions orales et les ressaisies ne reposent pas sur un identifiant commun.','S2 — Clients et RendezVous liés par ID_Client; une ligne par rendez-vous. Séparer heures prévues, réalisées et état de facturation.','Le nom est repris automatiquement. Une alerte signale les doublons et les écarts d’heures. Le professionnel demeure responsable de confirmer la durée réelle.'),
('P3 — Promotion d’un service déjà occupé. Le directeur se fie à des heures inexactes et confond activité réalisée et disponibilités.','S3 — Portrait mensuel : heures réalisées, réservées, capacité et occupation par service.','La décision devient fondée sur des données distinctes. Un taux mensuel faible n’assure pas la disponibilité d’un créneau précis.'),
('P4 — Portrait mensuel et bilan annuel non actualisés. La secrétaire recopie manuellement les chiffres d’Excel dans Word.','S4 — Portrait par SOMME.SI.ENS; bilan Word comportant des champs LINK et un contrôle par champs calculés.','Les données sont reprises sans ressaisie. La mise à jour des liaisons, l’emplacement des fichiers et l’écart nul doivent être contrôlés.'),
('P5 — Rabais de fidélité susceptible d’être oublié. Aucune règle commune ne relie l’historique, la période promotionnelle et la facturation.','S5 — Admissibilité calculée depuis les consultations réalisées; SI imbriqués et facture par RECHERCHEV.','La réduction de 5 % est limitée à la sexologie, aux personnes admissibles et à la période prévue. Les dates limites et les arrondis sont testés.'),
('P6 — Une seule lettre par client, avec un contenu différent selon l’admissibilité. Certains clients utilisent plusieurs services.','S6 — Feuille Fusion : une ligne par ID_Client. Publipostage Word avec règle SI… ALORS… SINON sur Admissible.','Une personne utilisant deux services reçoit une seule lettre. L’offre apparaît seulement pour les personnes admissibles; les autres lisent uniquement l’anniversaire.'),
('P7 — Lettres disparates et signatures non respectées. Il n’existe pas de modèle commun validé.','S7 — Deux modèles Word .dotx pour la psychologie et la sexologie, avec présentation commune et signatures typographiques distinctes.','Les éléments administratifs restent stables; la signature correspond au service. Les véritables coordonnées devront remplacer les repères.'),
('P8 — Fichier de facturation indisponible lorsqu’il est ouvert. Le mode de partage ne permet pas une modification simultanée fiable.','S8 — Classeur .xlsx sans macro; déploiement proposé dans un espace OneDrive professionnel ou SharePoint Online autorisé.','La coédition répond au besoin si les versions et les comptes la prennent en charge [5]. L’essai à deux comptes reste à effectuer.'),
('P9 — Pratiques individuelles et responsabilités peu formalisées. Le poste de coordination vient d’être créé.','S9 — Guide commun, responsabilités nommées, implantation progressive et journal des anomalies.','La documentation facilite les remplacements. Un exercice pratique permettra de vérifier sa compréhension et de corriger les consignes ambiguës.')]

PLANS=[
('S1 — Registre Messages','Excel regroupe des lignes filtrables; les listes et RECHERCHEV uniformisent le routage.','100 % des messages du pilote inscrits le jour de réception; aucun message sans service ni responsable.'),
('S2 — Référentiels et journal RendezVous','Excel recherche les coordonnées par identifiant et compare des valeurs numériques.','Zéro doublon d’identifiant; 100 % des durées réalisées confirmées avant émission.'),
('S3 — Tableau de bord','Excel totalise les heures par mois et service à partir du journal unique.','Produire le portrait mensuel en moins de 10 minutes après validation des saisies; cible à mesurer.'),
('S4 — Bilan lié','Word convient à un rapport administratif; les liaisons reprennent les résultats calculés dans Excel.','Aucune retranscription manuelle des indicateurs; différence Word–Excel de 0,00 $.'),
('S5 — Rabais et facture','Excel applique des conditions et arrondit les montants, puis présente la facture imprimable.','Réussir 100 % des cas limites; aucune réduction sur un autre service, une annulation ou une période exclue.'),
('S6 — Lettre anniversaire','Word personnalise une lettre soignée à partir d’une liste Excel et d’une règle conditionnelle.','Une lettre par personne ciblée; zéro mention de l’offre dans la variante non admissible.'),
('S7 — Modèles et signatures','Word .dotx conserve styles, disposition et blocs de signature.','Deux modèles distincts; 100 % des lettres échantillonnées avec la bonne signature et des coordonnées complètes.'),
('S8 — Accès simultané','Excel .xlsx est compatible avec la coédition Microsoft 365 dans un stockage pris en charge.','Deux personnes modifient des lignes différentes sans verrouillage ni perte de données pendant le pilote.'),
('S9 — Guide et suivi','Word structure un guide de procédures et des fiches de contrôle.','Deux utilisatrices réussissent cinq tâches sur cinq avec le guide; révision des étapes causant une hésitation.')]

AUTOS=[
('W1','Word — Modèle','05 et 06, fichiers .dotx','Créer une lettre depuis un modèle; préserver la signature du service.'),
('W2','Word — Publipostage avancé avec règle','04, IF imbriquant MERGEFIELD; source Fusion','Choisir le paragraphe promotionnel selon Admissible.'),
('W3','Word — Champs calculés personnalisés','07, tableau Contrôle des montants','Recalculer le net par =A2-B2 et l’écart par =C2-D2.'),
('W4','Word — Liens hypertextes et signets dans un outil','07, signets Synthese, PortraitMensuel et ControleMontants','Naviguer dans le bilan et retourner à la synthèse.'),
('E1','Excel — Validation de données','03, Clients, RendezVous et Messages','Limiter services, statuts, identifiants, dates et durées.'),
('E2','Excel — Mise en forme conditionnelle','03, alertes et occupation','Faire ressortir les erreurs et les messages à relancer.'),
('E3','Excel — RECHERCHEV','03, colonnes automatiques et Facture','Retrouver le nom, le professionnel, le tarif et les montants.'),
('E4','Excel — SI imbriqué','03, RendezVous!L2:L301','Appliquer le rabais seulement si toutes les conditions sont remplies.'),
('E5','Excel — Liens hypertextes','03, Accueil et liens de retour','Atteindre rapidement la feuille voulue.')]

SOURCES=[
('1','CÉGEP DE SOREL-TRACY.','Outil eva 00VB (ESP).','Document fourni, 13 p., sans date. Consignes et mise en situation.',''),
('2','MICROSOFT.','Définir les règles pour un publipostage.','Support Microsoft, sans date.','https://support.microsoft.com/fr-FR/Word/set-the-rules-for-a-mail-merge'),
('3','MICROSOFT.','Fonction RECHERCHEV.','Support Microsoft, sans date.','https://support.microsoft.com/fr-fr/office/fonction-recherchev-0bbc8083-26fe-4963-8ab8-93a18ad188a1'),
('4','MICROSOFT.','Utiliser une formule dans un tableau Word.','Support Microsoft, sans date.','https://support.microsoft.com/fr-fr/word/use-a-formula-in-a-word-table'),
('5','MICROSOFT.','Partager votre classeur Excel avec d’autres personnes.','Support Microsoft, sans date.','https://support.microsoft.com/fr-fr/excel/get-started/share-your-excel-workbook-with-others'),
('6','MICROSOFT.','Créer un modèle.','Support Microsoft, sans date.','https://support.microsoft.com/fr-fr/word/create-a-template'),
('7','MICROSOFT.','Apply data validation to cells.','Support Microsoft, sans date.','https://support.microsoft.com/en-us/excel/get-started/apply-data-validation-to-cells'),
('8','OFFICE QUÉBÉCOIS DE LA LANGUE FRANÇAISE.','Éléments de la vedette dans la lettre.','Vitrine linguistique, mise à jour 2026.','https://vitrinelinguistique.oqlf.gouv.qc.ca/22096/la-redaction-et-la-communication/redaction-administrative-et-commerciale/correspondance/lettre/elements-de-la-vedette-dans-la-lettre')]

def build():
    d=base();p(d,'CÉGEP DE SOREL-TRACY','Subtitle');p(d,'DEC EN TECHNIQUES DE BUREAUTIQUE')
    p(d,'');title(d,'Réorganisation du travail administratif','Épreuve synthèse de programme • 00VB, 00VF et 00UY')
    p(d,ORG);p(d,'');p(d,'Travail présenté par : [Nom et prénom]\nNuméro DA : [À compléter]\nDate de remise : [À compléter]')
    p(d,'Spécialistes de contenu : [Noms]\nConseillère pédagogique : [Nom]')
    p(d,'Dossier préparé le 14 septembre 2026. Les données clients, les dates de campagne et les tarifs sont des hypothèses pédagogiques. La partie 00V6 est fournie dans un document distinct à personnaliser.','Caption')
    newpage(d,'Table des matières')
    toc=[('Introduction','Introduction'),('A. Analyse des besoins','Analyse'),('B. Planification du travail','Planification'),('C. Automatisations et outils','Automatisations'),('C.1 Règles de gestion','Regles'),('C.2 Calendrier d’implantation','Calendrier'),('D. Vérification et suivi','Verification'),('D.1 Réévaluation et maintien','Suivi'),('E. Documentation et guide','Guide'),('Conclusion','Conclusion'),('Annexe A — Captures et procédures','Captures'),('Annexe B — Concordance et remise','Remise'),('Bibliographie','Bibliographie')]
    for label,mark in toc:
        pa=p(d);link(pa,label,anchor=mark);pa.add_run('  ···  ');field(pa,f' PAGEREF {mark} \\h ','')
    heading(d,'Liste des tableaux et figures',2)
    for s in ['Tableau 1 — Analyse des problèmes et solutions (section A).','Tableau 2 — Planification et objectifs (section B).','Tableau 3 — Automatisations reconnues (section C).','Tableau 4 — Calendrier et responsabilités (section C.2).','Tableau 5 — Tests et résultats (section D).','Figures 1 à 4 — Aperçus des outils et de leurs résultats (annexe A).']:p(d,s)
    newpage(d,'Introduction','Introduction')
    heading(d,'Situation et contexte',2)
    p(d,'La Société d’accueil social et communautaire de ressources adaptées et personnelles offre les services d’un avocat, d’une psychologue et d’une sexologue. Sa croissance a entraîné la création d’un poste de technicienne en bureautique. Toutefois, les pratiques administratives demeurent dispersées : les messages sont consignés sur différents supports, les heures sont transmises de plusieurs façons et les données du bilan annuel sont recopiées manuellement. Ces pratiques entraînent des pertes d’information, des erreurs de facturation et des décisions de promotion fondées sur des données inexactes.')
    heading(d,'Mandat',2)
    p(d,'Le mandat consiste à analyser les opérations inefficaces, à retenir des solutions adaptées et à concevoir des outils automatisés dans Word et Excel. Il comprend également la préparation d’une lettre soulignant le cinquième anniversaire de l’organisme, l’application d’un rabais de 5 % aux clients admissibles de la sexologue, la création de signatures professionnelles et la production d’un portrait mensuel lié au bilan annuel. Les outils doivent soutenir la collaboration souhaitée par Henriette Bonmarché et faciliter le travail d’Anne-Marie Sauvageau.')
    heading(d,'Organisation du travail',2)
    p(d,'Le rapport présente d’abord l’analyse des besoins et l’évaluation des solutions. Il expose ensuite les objectifs, les automatisations retenues et leur calendrier d’implantation. La vérification des résultats, les mécanismes de suivi et le guide d’utilisation complètent la démarche. Les annexes présentent les aperçus disponibles, les procédures à reproduire et la concordance entre les exigences et les fichiers remis.')
    heading(d,'Périmètre et données',2)
    p(d,'Le scénario ne fournit ni fichiers de clients, ni tarifs, ni dates précises de promotion. Le prototype utilise donc 12 personnes fictives et 28 rendez-vous fictifs. La promotion est fixée, pour les essais, du 1er septembre 2026 au 31 août 2027. Les tarifs horaires de 180 $, 120 $ et 100 $ sont des valeurs de démonstration. Les montants sont présentés hors taxes; le traitement fiscal et les véritables coordonnées ne sont pas déterminés par le scénario.')
    p(d,'Le nom Anne-Marie Sauvageau est retenu pour la responsable de la comptabilité, même si les intitulés de sa fonction varient dans le document source. Les causes présentées ci-dessous sont déduites des faits du scénario et devront être confirmées pendant l’entretien de démarrage.')
    newpage(d,'A. Analyse des besoins','Analyse')
    p(d,'La méthode retenue suit cinq étapes : décrire les faits, identifier leurs causes, comparer les pistes, choisir une solution et vérifier ses effets. Le tableau 1 relie chaque problème à une intervention concrète et à ses limites.')
    table(d,['1. Problème observé et cause','2. Solution retenue','3. Évaluation de la pertinence'],ANALYSIS[:3],[5.5,5.5,5])
    newpage(d,'A. Analyse des besoins — suite')
    table(d,['1. Problème observé et cause','2. Solution retenue','3. Évaluation de la pertinence'],ANALYSIS[3:6],[5.5,5.5,5])
    newpage(d,'A. Analyse des besoins — suite')
    table(d,['1. Problème observé et cause','2. Solution retenue','3. Évaluation de la pertinence'],ANALYSIS[6:],[5.5,5.5,5])
    heading(d,'Comparaison des pistes envisagées',2)
    p(d,'L’uniformisation de fiches papier améliorerait la présentation, mais laisserait subsister les ressaisies et les risques de perte. Des fichiers indépendants par service préserveraient les habitudes, mais maintiendraient les doublons et compliqueraient la facturation d’un client utilisant plusieurs services. Le classeur central relié aux documents Word est donc retenu : il respecte les logiciels imposés, réunit les données administratives et réduit les manipulations répétitives. Un logiciel de gestion spécialisé pourrait être étudié ultérieurement, si le volume ou les contrôles d’accès dépassent les possibilités du prototype.')
    newpage(d,'B. Planification du travail','Planification')
    p(d,'Le tableau 2 couvre toutes les solutions retenues. Les objectifs de délai et d’autonomie sont des cibles de pilote; aucun gain de productivité en situation réelle n’est présenté comme déjà mesuré.')
    table(d,['1. Solution','2. Justification du logiciel','3. Objectif vérifiable'],PLANS[:5],[4,6,6])
    newpage(d,'B. Planification du travail — suite')
    table(d,['1. Solution','2. Justification du logiciel','3. Objectif vérifiable'],PLANS[5:],[4,6,6])
    heading(d,'Organisation des données',2)
    p(d,'Le fichier Clients contient une seule ligne par personne. Son identifiant est repris dans RendezVous. Le service permet de retrouver automatiquement le professionnel et le tarif de démonstration. Les heures réellement effectuées alimentent les montants et le portrait; les heures prévues alimentent l’occupation. La feuille Fusion reprend les personnes ciblées sans multiplier les lignes selon les services. Le registre Messages sert uniquement au suivi administratif des appels.')
    heading(d,'Responsabilité des mises à jour',2)
    p(d,'Sandra Fontaine inscrit les messages et les rendez-vous. Les professionnels confirment les prestations effectuées. Nicole Bourassa tient à jour les coordonnées et prépare la correspondance à partir des modèles. La technicienne contrôle les anomalies, documente les corrections et accompagne l’équipe. Pierre Tremblay valide la concordance des heures; Anne-Marie Sauvageau vérifie les factures. Henriette Bonmarché approuve les périodes de promotion et la diffusion du bilan.')
    newpage(d,'C. Automatisations et outils','Automatisations')
    p(d,'Le dossier contient quatre catégories d’automatisation Word et cinq catégories Excel figurant dans l’annexe des consignes. Ce choix répond aussi à la grille de relecture qui mentionne « plus de 3 », alors que le corps des consignes en exige au minimum trois [1]. Plusieurs modèles ou plusieurs formules d’un même type ne sont comptés qu’une fois.')
    table(d,['Code','Catégorie reconnue','Outil et emplacement','Opération automatisée'],AUTOS,[1,3.7,5.3,6])
    p(d,'Les totaux conditionnels, le graphique et les champs LINK complètent les outils. Ils ne sont pas ajoutés artificiellement au décompte des catégories exigées. Les fichiers sont sans macro. Les fonctions de recherche utilisent une correspondance exacte, afin d’éviter l’attribution d’un client ou d’un tarif approximatif [3].')
    newpage(d,'C.1 Règles de gestion','Regles')
    heading(d,'Admissibilité au rabais',2)
    p(d,'Une personne est admissible si elle possède au moins une consultation de sexologie réalisée entre le début de l’historique inclus et le début de la promotion exclu. Dans les données d’essai, cette période correspond au 1er septembre 2025 au 31 août 2026. Une consultation annulée ou une réservation ne suffit pas. La liste obtenue comprend C001, C002, C007, C008, C009 et C012.')
    p(d,'Le rabais n’est accordé que si le nouveau rendez-vous est réalisé, concerne la sexologie, appartient à une personne admissible et se situe entre les deux dates de promotion incluses. Un client admissible qui consulte aussi la psychologue paie le tarif normal pour la psychologie. Le montant brut est arrondi au cent; le rabais est calculé puis arrondi au cent; le net correspond au brut moins le rabais.')
    heading(d,'Ciblage de la lettre',2)
    p(d,'La campagne comprend les clients actuels de l’organisme ainsi que les personnes admissibles à l’offre de fidélité. Cette interprétation permet de remercier aussi une personne ayant utilisé la sexologie pendant l’année de référence, même si elle n’a plus de rendez-vous courant. C009 illustre ce cas. Les données doivent comporter un identifiant unique et une adresse complète. Une seule lettre est produite par personne; la règle Word ajoute le paragraphe du rabais uniquement lorsque Admissible vaut Oui [2].')
    heading(d,'Validation et conservation',2)
    p(d,'Le portrait mesure les services réalisés, y compris ceux restant à facturer. Il ne représente donc pas un encaissement. Les factures émises doivent être conservées en PDF et leur numéro demeure unique. Un tarif modifié dans le catalogue recalcule les valeurs du prototype : une période clôturée doit rester archivée, avec son classeur figé et ses PDF. La durée de conservation devra suivre la politique de l’organisme.')
    p(d,'Seules les personnes autorisées ont accès au classeur administratif. Il ne contient pas de notes de consultation. La protection des cellules prévient une modification accidentelle; elle ne remplace pas les droits d’accès du dossier partagé. Les données cliniques et les dossiers professionnels restent dans leur circuit confidentiel habituel.')
    newpage(d,'C.2 Calendrier d’implantation','Calendrier')
    p(d,'L’implantation est prévue sur vingt jours ouvrables. Les tâches se chevauchent uniquement lorsque leurs dépendances sont satisfaites. La technicienne coordonne le calendrier; les directrices valident les jalons.')
    gantt=[('Cadrage, dates et champs requis','J1–J2','DG + technicienne','Aucune','Paramètres et responsabilités confirmés'),('Nettoyage des identifiants et historique','J3–J5','Nicole + réception','Cadrage','Liste clients et historique contrôlés'),('Paramétrage Excel et droits d’accès','J4–J7','Technicienne + comptabilité','Paramètres confirmés','Classeur prêt pour essais'),('Modèles, signatures et bilan Word','J6–J8','Nicole + professionnelles','Coordonnées et champs confirmés','Modèles validés'),('Tests de calcul et contrôles Word','J9–J10','Technicienne + Pierre + Anne-Marie','Outils et données contrôlés','Aucune anomalie bloquante'),('Pilote et essai à deux comptes','J11–J13','Réception + comptabilité','Tests réussis','Suivi quotidien des erreurs'),('Formation et essai du guide','J14–J15','Technicienne + équipe','Pilote exploitable','Cinq tâches réussies sur cinq'),('Corrections et préparation de la campagne','J16–J17','Technicienne + Nicole','Retours du pilote','Douze lettres démo contrôlées'),('Mise en service','J18','DG + responsables','Jalons précédents validés','Version datée disponible'),('Contrôle de stabilisation','J19–J20','Technicienne + directions','Mise en service','Bilan des écarts et décision de maintien')]
    table(d,['Étape','Période','Responsable','Dépendance','Livrable / jalon'],gantt,[4.1,1.3,3.8,3,3.8])
    heading(d,'Faisabilité et retour arrière',2)
    p(d,'La stratégie réutilise Word et Excel et propose un pilote limité avant la mise en service. La disponibilité des licences et d’un espace de coédition doit être confirmée au démarrage. Si l’accès simultané échoue, un seul éditeur est temporairement désigné et la comptabilité consulte un portrait exporté; cette mesure transitoire ne satisfait pas encore l’objectif de coédition. Une copie datée de la version précédente permet un retour arrière, avec reprise contrôlée des nouvelles saisies.')
    newpage(d,'D. Vérification et résultats','Verification')
    result=json.loads((ROOT/'_fabrication_00VB'/'verification.json').read_text(encoding='utf-8'))
    p(d,f'Le classeur a été ouvert et recalculé dans LibreOffice Calc pour vérifier les calculs du fichier .xlsx. Les {len(result["tests"])} assertions automatisées ont réussi; aucune cellule en erreur n’a été relevée lors du recalcul. Une modification temporaire des données a permis de vérifier la propagation des résultats, puis les données initiales ont été rétablies. Ces essais ne constituent pas une validation dans Microsoft Excel, qui n’est pas installé sur le poste.')
    tests=[('T01–T04','Début, veille, fin et lendemain de la promotion','95 $, 100 $, 95 $ et 100 $ pour 1 h à 100 $.','Réussi : moteur de calcul'),('T05–T06','Autre service et personne non admissible','Aucun rabais : 120 $ en psychologie; 100 $ en sexologie non admissible.','Réussi : moteur de calcul'),('T07–T09','Annulation, réservation et arrondi','0 $, 0 $ et 118,75 $ pour 1,25 h admissible.','Réussi : moteur de calcul'),('T10','Historique aux dates limites; consultation annulée','C001 et C002 admissibles; C005 et C006 exclus.','Réussi : données du journal'),('T11','Client utilisant plusieurs services','C007 admissible, mais rabais limité à la sexologie; une ligne Fusion.','Structure et calcul vérifiés'),('T12','Modification R014 de 1 h à 2 h','Net RDV et facture : 190 $; net annuel : 2 616,25 $.','Réussi; valeurs restaurées'),('T13','Identifiant RDV dupliqué et client inconnu','Messages DOUBLON RDV et Client à corriger.','Réussi; données restaurées'),('T14','Rapprochement des totaux 2026','21,25 h; brut 2 545 $; rabais 23,75 $; net 2 521,25 $.','Réussi : moteur de calcul'),('T15','Septembre 2026 et suivi des messages','10,75 h et 1 251,25 $; message M001 à relancer.','Totaux vérifiés; alerte visible')]
    table(d,['Test','Manipulation / cas','Résultat attendu','Résultat observé'],tests,[1.3,4.6,6.4,3.7])
    newpage(d,'D. Vérifications à terminer dans Office')
    p(d,'Les fichiers Word contiennent les champs de fusion, les formules, les signets et les modèles prévus. Leur présence peut être vérifiée dans la structure des fichiers, mais leur exécution dans Word reste à confirmer. Les résultats et les captures de menus Office ne sont donc pas déclarés comme obtenus.')
    table(d,['Test','Procédure de réception','Critère de réussite','Statut'],[
    ('T16 — Publipostage','Relier 04 à Fusion; filtrer Envoyer=Oui; fusionner vers un nouveau document.','12 lettres, 6 avec offre et 6 sans offre; aucun doublon.','À exécuter dans Word'),
    ('T17 — Liaison du bilan','Modifier R014, enregistrer Excel, actualiser 07; vérifier le tableau mensuel et le contrôle.','Net annuel actualisé à 2 616,25 $; écart calculé Word = 0,00 $.','À exécuter dans Word'),
    ('T18 — Modèles','Créer une lettre depuis chacun des fichiers .dotx, compléter les coordonnées et enregistrer en .docx.','Présentation conservée; signature de la bonne professionnelle.','À exécuter dans Word'),
    ('T19 — Validation et navigation','Saisir un service absent de la liste; essayer les liens Accueil et les signets du bilan.','Saisie invalide refusée; chaque lien atteint sa destination.','À confirmer dans Office'),
    ('T20 — Coédition','Deux comptes modifient deux lignes distinctes, ferment et rouvrent le fichier partagé.','Deux modifications conservées; comptabilité accessible.','À exécuter dans Microsoft 365'),
    ('T21 — Guide et oral','Deux utilisatrices exécutent cinq tâches; le candidat répète les 20 minutes.','Cinq tâches réussies; durée proche de 20 minutes.','À effectuer avec les personnes concernées')],[2.8,6,4.7,2.5])
    heading(d,'Corrections prévues',2)
    p(d,'Un échec de liaison impose de rétablir le chemin du classeur et de recommencer le rapprochement. Une lettre incorrecte impose de contrôler la valeur Admissible et la règle IF avant toute diffusion. Une anomalie de saisie doit être corrigée à la source plutôt que masquée dans la facture. Aucune facture du scénario n’est envoyée et aucune campagne n’est diffusée dans le cadre de cette préparation.')
    newpage(d,'D.1 Réévaluation et suivi','Suivi')
    table(d,['Objectif','Évaluation actuelle','Suivi et responsable'],[
    ('Fiabilité de la facturation','Les cas de calcul et la propagation des heures réussissent. L’écart de R023 reste volontairement visible pour le pilote.','Contrôle quotidien des alertes par la technicienne; validation des heures par Pierre et des montants par Anne-Marie.'),
    ('Portrait sans ressaisie','Les résultats Excel concordent avec les valeurs de référence. La mise à jour effective du bilan reste à tester dans Word.','Rapprochement mensuel heures réalisées / émises, net Word / Excel, puis signature du contrôle.'),
    ('Messages retrouvés et orientés','Le registre réunit les messages et calcule un responsable. Le délai réel d’acheminement n’a pas encore été mesuré.','Chaque jour : filtrer les états non traités; relancer les dossiers de plus d’un jour civil.'),
    ('Lettres uniformes et ciblées','Deux modèles et les deux variantes de contenu sont fournis. La fusion réelle reste à exécuter.','Nicole contrôle le nombre de lettres et deux variantes; les professionnelles approuvent les coordonnées.'),
    ('Accès simultané et autonomie','Objectifs encore non mesurés faute de deux comptes et d’essais utilisateurs.','Essai de coédition J11; test du guide J14; correction avant J18.')],[3.5,6.5,6])
    heading(d,'Mesure des effets',2)
    p(d,'Pendant les cinq jours précédant le pilote, relever le temps de production du portrait, le nombre de factures corrigées et le nombre de messages introuvables. Relever les mêmes indicateurs pendant le pilote, puis après trente jours. Le taux d’erreur correspond au nombre de documents corrigés divisé par le nombre de documents contrôlés. Le gain de temps correspond à la durée moyenne initiale moins la durée moyenne après implantation. Les valeurs de départ sont à mesurer; aucun pourcentage de gain n’est inventé.')
    heading(d,'Maintien et efficacité du guide',2)
    p(d,'Le guide est pertinent parce qu’il suit les tâches réelles et fournit des exemples vérifiables. Son efficacité dépendra de l’essai avec l’équipe. Chaque hésitation sera consignée avec l’étape concernée et la correction apportée. Une revue mensuelle des paramètres, du nombre de lignes disponibles et des droits d’accès permettra d’adapter les outils. Toute modification importante exigera la reprise des tests associés.')
    newpage(d,'E. Documentation et guide','Guide')
    p(d,'Le fichier 02_Guide_utilisation.docx constitue le guide opérationnel. Il présente la prise en main, la saisie, le calcul du rabais, la facture, le portrait, la correspondance, l’actualisation du bilan et le dépannage. Les repères de cellules permettent de reproduire les manipulations. Les données de démonstration sont identifiées dans les fichiers pour éviter leur confusion avec de véritables dossiers.')
    table(d,['Utilisatrice ou utilisateur','Parcours dans le guide','Résultat attendu'],[['Réceptionniste','Clients → RendezVous → Messages','Saisir une trace complète et repérer les suivis'],['Secrétaire','Modèles → Publipostage → Bilan','Produire une lettre uniforme et actualiser le bilan'],['Comptabilité','Rabais → Facture → Contrôles','Vérifier la réduction et archiver une facture exacte'],['Directions','Portrait → Implantation → Suivi','Valider les heures, les disponibilités et les priorités']],[4,6,6])
    heading(d,'Normes de présentation retenues',2)
    p(d,'Les documents utilisent le format lettre, des marges régulières, une hiérarchie de titres, une pagination et une police lisible. Les tableaux répètent leurs en-têtes et les lettres comprennent la date, la vedette, l’objet, l’appel, le corps, la salutation et la signature. La vedette regroupe les renseignements du destinataire au-dessus de l’objet; elle est placée contre la marge gauche [8]. Les modèles .dotx permettent de reprendre cette structure dans un nouveau document [6].')
    heading(d,'Éléments à personnaliser',2)
    p(d,'La page titre, les coordonnées de l’organisme et des professionnelles, la date effective de remise et les données du parcours personnel demeurent à compléter. La partie 00V6 contient des structures de CV, de lettre et de réponses à l’entretien; elle doit refléter des faits vécus. Si une substitution ou une équivalence s’applique, cette partie peut être omise selon les consignes [1].')
    newpage(d,'Conclusion','Conclusion')
    p(d,'La réorganisation proposée repose sur une saisie administrative commune, des identifiants stables et une réutilisation des données dans les documents. Le registre des messages améliore la continuité du suivi; le journal des rendez-vous relie les heures et la facturation; le portrait mensuel distingue les prestations réalisées des réservations. Le publipostage conditionnel répond aux deux objectifs de communication dans une seule lettre par personne, tandis que la règle de rabais et les modèles de correspondance réduisent les oublis et les variations de présentation. Le dossier comprend quatre catégories d’automatisation Word et cinq catégories Excel reconnues par les consignes.')
    p(d,'L’autocritique met en évidence les limites du prototype. La centralisation réduit les ressaisies, mais elle ne garantit pas l’exactitude d’une durée saisie ni la qualité des décisions prises à partir du portrait. Les capacités et les tarifs sont hypothétiques, les plages sont limitées et les règles de facturation doivent être confirmées avant un usage réel. Les calculs ont été éprouvés dans un moteur compatible, mais les liaisons Word, la fusion et la coédition nécessitent encore des essais dans Microsoft Office. Il serait donc prématuré de déclarer l’implantation achevée ou les gains de temps démontrés.')
    p(d,'À la suite du pilote, les corrections du guide et des procédures permettront de consolider les habitudes communes. Si la croissance se poursuit, l’organisme pourra examiner une solution spécialisée offrant des rendez-vous par plage horaire, des droits d’accès plus fins et un historique détaillé des modifications. Cette évolution devra être évaluée à partir des besoins mesurés et de la capacité de l’équipe à maintenir les outils retenus.')
    newpage(d,'Annexe A — Captures et procédures','Captures')
    p(d,'Les figures suivantes sont des captures des aperçus PDF des fichiers créés et recalculés avec LibreOffice. Elles montrent les résultats réellement rendus; elles ne sont pas présentées comme des captures de menus Word ou Excel. Les captures des étapes dans Microsoft Office restent à ajouter selon le parcours ci-dessous.')
    table(d,['Automatisation','Étapes à reproduire et capture attendue'],[
    ('E1 — Validation','RendezVous!E2 : Données > Validation des données; montrer la source ListeServices et le message d’arrêt.'),
    ('E2 — Mise en forme conditionnelle','RendezVous!S24 et Messages!K2 : Accueil > Mise en forme conditionnelle > Gérer les règles; montrer la règle et l’alerte.'),
    ('E3 — RECHERCHEV','Sélectionner RendezVous!D15 et Facture!C21; montrer la formule et son résultat.'),
    ('E4 — SI imbriqué','Sélectionner RendezVous!L15; montrer les conditions et le taux de 5 %.'),
    ('E5 — Liens Excel','Accueil : activer le lien Facture, puis Retour à l’accueil; capturer les deux destinations.'),
    ('W1 — Modèle','Créer une lettre à partir de 05 ou 06; montrer le nouveau document et la signature du service.'),
    ('W2 — Publipostage','04 : Publipostage > Sélection des destinataires; montrer Envoyer=Oui, la règle IF et les aperçus C001/C003.'),
    ('W3 — Champs calculés','07 : afficher le code =A2-B2 avec Alt+F9; actualiser avec F9; montrer l’écart de 0,00 $.'),
    ('W4 — Signets et liens','07 : Insertion > Signet; montrer les trois signets puis la navigation vers le portrait.'),
    ('Liaison du bilan','07 : afficher un champ LINK; modifier R014 dans Excel; montrer le montant actualisé et la source rétablie si nécessaire.')],[4,12])
    for img,titletext,desc in [('portrait.png','Figure 1 — Portrait mensuel','Les heures et montants sont calculés depuis le journal des rendez-vous.'),('facture.png','Figure 2 — Facture de démonstration','R014 : 1 h à 100 $, rabais de 5 $, total hors taxes de 95 $.'),('tests.png','Figure 3 — Cas de calcul du rabais','Les neuf scénarios du moteur de calcul produisent le résultat RÉUSSI.'),('lettres.png','Figure 4 — Variantes de la lettre','Aperçu des deux exemples attendus; la fusion réelle doit être exécutée dans Word.')]:
        path=ROOT/'_fabrication_00VB'/'captures'/img
        if path.exists():
            newpage(d,titletext);p(d,desc)
            d.add_picture(str(path),width=Cm(16))
    newpage(d,'Annexe B — Concordance et remise','Remise')
    table(d,['Exigence','Fichier remis'],[['Rapport : introduction, A à E, conclusion et bibliographie','01_Rapport_ESP_00VB.docx et .pdf'],['Guide d’utilisation','02_Guide_utilisation.docx et .pdf'],['Outils Excel et tests de calcul','03_Gestion_organisme.xlsx'],['Publipostage avancé','04_Lettre_anniversaire_publipostage.docx'],['Signatures personnalisées et modèles','05_Modele_lettre_psychologie.dotx; 06_Modele_lettre_sexologie.dotx'],['Bilan annuel lié et champs calculés','07_Bilan_annuel_lie.docx'],['Exemples attendus de la campagne','08_Exemples_lettres_anniversaire.docx'],['Présentation orale de 20 minutes','09_Presentation_orale_20min.pptx; notes intégrées'],['CV, lettre et préparation 00V6','10_Parcours_professionnel_a_personnaliser.docx'],['Grille de relecture remplie selon l’état réel','11_Grille_relecture.docx'],['Preuve des contrôles de calcul','12_Resultats_verification.pdf']],[8,8])
    p(d,'Avant la remise : compléter les renseignements personnels; effectuer les essais Office; ajouter les captures de menus; répéter l’exposé; vérifier les coordonnées et les dates. Les documents sont regroupés dans une archive ZIP. Aucun courriel n’est envoyé automatiquement.')
    newpage(d,'Bibliographie','Bibliographie')
    for no,author,tit,desc,url in SOURCES:
        pa=p(d,f'[{no}] {author} {tit} {desc}')
        if url:link(pa,'Consulter la source',url);pa.add_run(' (consulté le 14 septembre 2026).')
    save(d,'01_Rapport_ESP_00VB.docx')
    print('Rapport créé.')

if __name__=='__main__':build()
