2.6 KiB
Modèles de courriel et de rapport — génération compatible Batik / Omika
Implémentation de la génération d'un email/rapport à partir d'un modèle (substitution des rubriques), utilisable dans l'application mobile quelle que soit la base connectée (Batik ou Omika).
1. Comportement reproduit
En WINDEV, la génération d'un email/rapport correspond à :
- choisir un modèle (
MailModele/ModeleRapport) ; - insérer des rubriques/mots-clés (
MotClef,RubriquesDocument) ; - substituer ces jetons par les données réelles (client, intervention, dates…) ;
- prévisualiser puis envoyer/enregistrer.
La présente implémentation reproduit l'étape 3 (substitution) côté .NET, avec une
dégradation propre sur Batik (qui n'a ni ModeleRapport, ni RubriquesDocument).
2. Convention provisoire de jetons
Les jetons sont délimités par [[ et ]], insensibles à la casse :
Bonjour [[NomClient]], intervention du [[DateIntervention]].
La clé correspond au MotClef.Mot (ou MotClef.Code, ou à une rubrique Omika).
⚠️ Convention provisoire. La syntaxe réelle de
LIB_RubMailRapport/LIB_ModelesEmailsn'est pas dans les exports WINDEV. Le moteur est isolé dansOmika.Core/Services/RubriqueSubstitutionEngine.cs: il suffit d'ajuster le délimiteur pour s'aligner sur la syntaxe exacte lorsque celle-ci sera connue.
3. Compatibilité Batik / Omika
| Capacité | Batik | Omika |
|---|---|---|
Modèles de courriel (MailModele) |
✅ (sans MM_Extra/MM_EnvoiMob) |
✅ |
| Modèles de rapport | lecture seule via l'ancien ModeleRapportMob |
ModeleRapport |
Mots-clés de substitution (MotClef) |
✅ | ✅ |
Rubriques structurées (RubriquesDocument) |
❌ (liste vide) | ✅ |
La dégradation s'appuie sur SchemaCapabilities.SupportsReportModels /
SupportsDocumentFields et sur les repositories adaptatifs.
4. Endpoints ajoutés
GET /modele-mails/GET /modele-mails/{id}GET /modele-rapports/GET /modele-rapports/{id}GET /mot-clefsGET /rubriques-documents(vide sur Batik)POST /generation/email—{ modelId, values, langue? }→{ sujet, corps, unknownTokens }POST /generation/rapport
5. Reste à faire (côté mobile)
- Appeler les endpoints depuis
Omika.App.Local(MobileApiClient) ; - mettre en cache les modèles/mots-clés (SQLite) ;
- appliquer la substitution localement avec
RubriqueSubstitutionEngine(déjà dansOmika.Core, donc disponible sur mobile) ; - écran « Générer un email/rapport » (Avalonia) + envoi du courriel via
MessageExterneou enregistrement du rapport commeDocument.