Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# 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 à :
|
||||
|
||||
1. choisir un modèle (`MailModele` / `ModeleRapport`) ;
|
||||
2. insérer des rubriques/mots-clés (`MotClef`, `RubriquesDocument`) ;
|
||||
3. substituer ces jetons par les données réelles (client, intervention, dates…) ;
|
||||
4. 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_ModelesEmails` n'est pas dans les exports WINDEV. Le moteur est isolé dans
|
||||
> `Omika.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-clefs`
|
||||
- `GET /rubriques-documents` (vide sur Batik)
|
||||
- `POST /generation/email` — `{ modelId, values, langue? }` → `{ sujet, corps, unknownTokens }`
|
||||
- `POST /generation/rapport`
|
||||
|
||||
## 5. Reste à faire (côté mobile)
|
||||
|
||||
1. Appeler les endpoints depuis `Omika.App.Local` (`MobileApiClient`) ;
|
||||
2. mettre en cache les modèles/mots-clés (SQLite) ;
|
||||
3. appliquer la substitution **localement** avec `RubriqueSubstitutionEngine`
|
||||
(déjà dans `Omika.Core`, donc disponible sur mobile) ;
|
||||
4. écran « Générer un email/rapport » (Avalonia) + envoi du courriel via
|
||||
`MessageExterne` ou enregistrement du rapport comme `Document`.
|
||||
Reference in New Issue
Block a user