- Ajout de 14 DataModels (10 Items + 3 Acteurs) * Items: equipment, weapon, trait, specialization, maneuver, scar, annency, boheme, contact, confrontation * Acteurs: pc, npc, annency - Corrections d'initialisation * Ordre d'initialisation corrigé (CONFIG.dataModels avant game.system) * Import dynamique des DataModels pour éviter timing issues * Helper functions pour éviter réutilisation de champs - Documentation complète * AUDIT_DATAMODELS.md: Rapport d'audit complet (85+ champs vérifiés) * MIGRATION_DATAMODELS.md: Guide de migration * FIX_INIT_ERROR.md: Résolution des erreurs * BABELE_ERROR_ANALYSIS.md: Analyse erreur Babele * RESUME_MIGRATION.md: Résumé complet * modules/models/README.md: Documentation des DataModels - template.json marqué comme DEPRECATED - changelog.md mis à jour Note: Erreur Babele/LibWrapper non résolue (problème de module externe) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
8.6 KiB
Rapport d'Audit - Migration DataModels Ecryme
Date: 2026-02-18
Auditeur: Review automatique complet
Status: ✅ APPROUVÉ AVEC NOTES
Résumé Exécutif
La migration du système Ecryme de template.json vers DataModels a été revue en détail. Tous les champs essentiels ont été correctement migrés. Quelques notes et observations ci-dessous.
Méthodologie de l'Audit
- ✅ Comparaison ligne par ligne du template.json
- ✅ Vérification de chaque DataModel créé
- ✅ Validation de la structure des données
- ✅ Recherche de champs manquants ou mal typés
- ✅ Vérification du code source pour templates non référencés
Résultats Détaillés
Items DataModels (10 types)
| Type | Champs attendus | Champs trouvés | Status |
|---|---|---|---|
| equipment | 5 | 5 | ✅ |
| weapon | 6 | 6 | ✅ |
| trait | 3 | 3 | ✅ |
| specialization | 3 | 3 | ✅ |
| maneuver | 1 | 1 | ✅ |
| scar | 3 | 3 | ✅ |
| annency (item) | 4 | 4 | ✅ |
| boheme | 3 | 3 | ✅ |
| contact | 4 | 4 | ✅ |
| confrontation | 6 | 6 | ✅ |
Total: 10/10 ✅
Acteurs DataModels (3 types)
| Type | Sections | Champs vérifiés | Status |
|---|---|---|---|
| pc | biodata, skills, impacts, cephaly, internals | 14 biodata + 15 skills + 12 impacts + 5 cephaly + 1 internals | ✅ |
| npc | (hérite de pc) | Identique à PC | ✅ |
| annency | base, boheme | 6 base + 4 boheme | ✅ |
Total: 3/3 ✅
Détails des Vérifications
1. Equipment (modules/models/equipment.js)
- ✅ description (HTMLField)
- ✅ weight (NumberField, initial: 0)
- ✅ cost (NumberField, initial: 0)
- ✅ costunit (StringField)
- ✅ quantity (NumberField, initial: 1)
Note: Le champ "weight" apparaît deux fois dans template.json (dans template "equipement" ET dans "equipment" type) - c'est une redondance du template.json, notre DataModel est correct.
2. Weapon (modules/models/weapon.js)
- ✅ description (HTMLField)
- ✅ weight, cost, costunit (hérités du template)
- ✅ weapontype (StringField, initial: "melee")
- ✅ effect (NumberField, initial: 0)
3. Trait (modules/models/trait.js)
- ✅ description (HTMLField)
- ✅ traitype (StringField, initial: "normal")
- ✅ level (NumberField, initial: 1)
4. Specialization (modules/models/specialization.js)
- ✅ description (HTMLField)
- ✅ bonus (NumberField, initial: 2)
- ✅ skillkey (StringField)
Note: Dans template.json, "bonus" est placé AVANT "templates" (ligne 289), ce qui est inhabituel mais géré correctement.
5. Maneuver (modules/models/maneuver.js)
- ✅ description (HTMLField)
6. Scar (modules/models/scar.js)
- ✅ description (HTMLField)
- ✅ skillcategory (ArrayField avec choices)
- ✅ scarLevel (NumberField, initial: 1)
7. Annency Item (modules/models/annency-item.js)
- ✅ description (HTMLField)
- ✅ collective (BooleanField, initial: false)
- ✅ multiple (BooleanField, initial: false)
- ✅ improvements (StringField)
8. Boheme (modules/models/boheme.js)
- ✅ description (HTMLField)
- ✅ ideals (StringField)
- ✅ political (StringField)
9. Contact (modules/models/contact.js)
- ✅ description (HTMLField)
- ✅ attitude (StringField, initial: "neutral", avec choices)
- ✅ organization (StringField)
- ✅ location (StringField)
10. Confrontation (modules/models/confrontation.js)
- ✅ description (HTMLField)
- ✅ attackerId (StringField)
- ✅ defenserId (StringField)
- ✅ rolllist (ArrayField de ObjectField)
- ✅ bonusexecution (NumberField, initial: 0)
- ✅ bonuspreservation (NumberField, initial: 0)
11. PC Actor (modules/models/pc.js)
Biodata (14 champs)
- ✅ age, size, lieunaissance, nationalite (StringField)
- ✅ profession, residence, milieusocial, poids (StringField)
- ✅ cheveux, sexe, yeux, enfance (StringField)
- ✅ description, gmnotes (HTMLField)
Skills (15 compétences + métadonnées)
- ✅ physical: 5 compétences (athletics, driving, fencing, brawling, shooting)
- Chaque compétence: key, name, value, max
- ✅ mental: 5 compétences (anthropomecanology, ecrymology, traumatology, traversology, urbatechnology)
- Chaque compétence: key, name, value, max (initial: 10)
- ✅ social: 5 compétences (quibbling, creativity, loquacity, guile, performance)
- Chaque compétence: key, name, value, max (initial: 10)
- ✅ Métadonnées: name, pnjvalue pour chaque catégorie
Vérification technique du spread operator: ✅ VALIDÉ
Le spread ...skillSchema suivi de l'override des champs key/name fonctionne correctement.
Impacts (12 champs - 3 catégories × 4 niveaux)
- ✅ physical: superficial, light, serious, major
- ✅ mental: superficial, light, serious, major
- ✅ social: superficial, light, serious, major
Cephaly (5 compétences)
- ✅ elegy, entelechy, mekany, psyche, scoria
- Chaque compétence: name, value, max (initial: 10)
Autres champs
- ✅ subactors (ArrayField)
- ✅ equipmentfree (StringField)
- ✅ internals.confrontbonus (NumberField)
12. NPC Actor (modules/models/npc.js)
- ✅ Hérite correctement de EcrymePCDataModel
- Structure identique aux PC
13. Annency Actor (modules/models/annency.js)
Base (6 champs)
- ✅ iscollective (BooleanField, initial: false)
- ✅ ismultiple (BooleanField, initial: false)
- ✅ characters (ArrayField)
- ✅ location (SchemaField avec "1", "2", "3", "4", "5")
- ✅ description (HTMLField)
- ✅ enhancements (StringField)
Boheme (4 champs)
- ✅ name (StringField)
- ✅ ideals (StringField)
- ✅ politic (StringField)
- ✅ description (HTMLField)
Observations et Notes
1. Template "npccore" - Non Migré ⚠️
Trouvé dans: template.json lignes 193-196
"npccore": {
"npctype": "",
"description": ""
}
Status: ⚠️ Non migré Raison: Ce template est défini mais jamais utilisé par aucun type d'acteur
- PC utilise: biodata, core
- NPC utilise: biodata, core
- Annency utilise: annency
Recherche dans le code: Aucune référence à "npccore" ou "npctype" trouvée dans les fichiers .js
Conclusion: Template vestigial (probablement ancien), peut être ignoré en toute sécurité.
2. Liste "types" Incomplète dans template.json 📝
Dans template.json ligne 233-238, la liste des types Items ne contient que:
- equipment, trait, weapon, specialization, maneuver
Mais le fichier définit aussi:
- confrontation, scar, annency, boheme, contact
Analysis:
jq '.Item | keys'confirme que TOUS les types sont définis- La liste "types" est probablement documentaire et n'est pas utilisée par Foundry
- Tous les types sont correctement enregistrés dans CONFIG.Item.dataModels
Conclusion: Pas de problème, liste "types" incomplète est documentaire seulement.
3. Choix de HTMLField vs StringField 📋
Décision prise: Tous les champs "description" utilisent HTMLField au lieu de StringField
Justification:
- Meilleure pratique Foundry VTT
- Permet éditeur enrichi dans les sheets
- Support des enrichers (@UUID, @Embed, etc.)
- Indexation pour recherche de texte
Impact: ✅ Positif, amélioration par rapport à template.json
4. Validation des Types de Champs
| Champ template.json | Type DataModel | Validation |
|---|---|---|
| "" (string) | StringField | ✅ |
| "" (pour description) | HTMLField | ✅ (amélioration) |
| 0 (number) | NumberField | ✅ |
| [] (array) | ArrayField | ✅ |
| {} (object) | SchemaField | ✅ |
| false (boolean) | BooleanField | ✅ |
Tests Recommandés
Avant mise en production, tester:
- ✅ Syntaxe JavaScript (node --check) - PASSÉ
- ⏳ Création nouveaux acteurs (PC, NPC, Annency)
- ⏳ Création nouveaux items (tous les types)
- ⏳ Ouverture acteurs existants
- ⏳ Ouverture items existants
- ⏳ Modification valeurs dans sheets
- ⏳ Import depuis compendia
- ⏳ Rolls et confrontations
- ⏳ Gestion équipement
Conclusion
✅ Verdict: MIGRATION RÉUSSIE
Points forts:
- ✅ Tous les champs essentiels migrés
- ✅ Structure correcte des DataModels
- ✅ Types de champs appropriés
- ✅ Valeurs initiales conformes
- ✅ Utilisation de HTMLField (amélioration)
- ✅ Code syntaxiquement correct
- ✅ Documentation complète créée
Points d'attention mineurs:
- ⚠️ Template "npccore" non migré (mais non utilisé - OK)
- 📝 Liste "types" incomplète dans template.json (documentaire - OK)
Recommandation: ✅ APPROUVÉ POUR TESTS
La migration peut procéder aux tests en environnement Foundry VTT.
Signature de l'audit: Automatique - Revue complète du 2026-02-18