Commit cdfb1df
authored
feat: simulateur abattoirs (#8)
* chore: documentation métier
* wip: evaluate struct & fixtures
* feat(abattoirs): moteur DDD + oracle 2744 cas
Implémentation des 5 règles métier dans une architecture en bounded contexts pour anticiper l'arrivée du 2e simulateur.
* docs: privilégier DSFR puis Tailwind, pas de CSS custom
Cadre la stack UI pour rester conforme Beta.gouv et éviter la divergence visuelle.
* feat(ui): simulateur abattoirs + versionnage des règles
Implémente le formulaire DSFR, le panneau de résultats avec badges accent, et le système de versions lié aux arrêtés officiels avec page d'historique dédiée.
* feat(monitoring): ErrorBoundary + handlers globaux + page fallback
Capture les erreurs React et JS non gérées via console.error structuré (Phase 1, sans endpoint distant) ; lien historique des versions ouvert dans un nouvel onglet pour préserver le résultat.
* chore(vscode): regroupe le réglage importModuleSpecifier déprécié
Remplace les deux clés typescript.* et javascript.* par la clé unifiée js/ts.preferences.importModuleSpecifier.
* feat: update error page
* test(e2e): couvre le simulateur abattoirs et l'historique des versions
19 nouveaux scénarios Playwright couvrant la carte de sélection, le statut conditionnel, la validation, 3 cas connus du moteur et la page d'historique.
* refactor: déplace le formatter de date dans shared/utils
Utilise Intl.DateTimeFormat à la place du tableau MOIS_FR et sort le formatter du bounded context abattoirs (concept UI générique, pas métier).
* feat(a11y): titres de page dynamiques via <title> React 19
Améliore l'a11y (annonce lecteur d'écran) et l'UX onglets en exposant un titre distinct par page, sans dépendance externe.
* docs(adr): oracle xlsx, versionnage in-code, monitoring maison
Trace les 3 décisions architecturales structurantes prises pendant le développement du simulateur Abattoirs.
* feat(abattoirs): icônes thématiques sur le formulaire
Repère visuel des 3 sections (réception suidés, abattoir, destinataire) en remplacement des fr-icon-question-line génériques.
* chore: sync pnpm-lock.yaml après rebase sur main
Resynchronisation du lockfile suite au rebase sur main (jsdom 29 + TS 6) et à l'introduction de xlsx par les commits du moteur abattoirs.
* refactor(abattoirs): réordonne ZONE_ORDER du moins au plus restrictif
Ordre validé métier : zone indemne → ZI FS → ZP → ZS → ZRI → ZRII → ZRIII (cohérent avec la progression réglementaire et appliqué aux 3 dropdowns du formulaire).
* feat(abattoirs): masque le champ statut tant que la zone ne l'exige pas
Le champ Statut est sorti du DOM sauf quand zoneSuides est ZRII ou ZRIII (seules zones où le statut a un sens réglementaire), évitant ainsi un champ inerte affiché en gris à l'utilisateur.
* fix(abattoirs): réduit la largeur de l'icône cochon
Passage de w-6 à w-5 + object-contain pour préserver le ratio naturel, l'icône cochon paraissait visuellement trop large par rapport aux deux autres (building, truck).
* feat(abattoirs): masque le panneau de résultats tant qu'aucune simulation n'est lancée
Le panneau apparaît uniquement après un clic sur Valider et se masque à nouveau sur Réinitialiser ou modification d'un champ. Supprime la branche placeholder de AbattoirsResult (dead code) et durcit son prop result en non-nullable.
* feat(abattoirs): version V2 du 2026-06-05 (TODOs 1, 2, 3, 4 résolus)
Le nouveau xlsx tranche les 4 ambiguïtés identifiées : LPS non requis sur les 35 + 336 cas vides, dérogation possible sur les 195 cas UE et les 27 cas Grist vs DOCX, libellé "possible" partout. Règles certification.ts et lps.ts adaptées, oracle régénéré (2 744 cas), entrée versions.ts ajoutée en tête.
* docs(abattoirs): renomme V2 en correctif du 2026-06-05
Pas un nouvel arrêté mais une correction des oublis du tableau initial du 2026-05-12, donc « correctif » est plus juste que « V2 » dans la doc, les commentaires des règles et le libellé de l'entrée versions.ts.1 parent 3791be7 commit cdfb1df
85 files changed
Lines changed: 61506 additions & 309 deletions
File tree
- .vscode
- docs
- adr
- sources
- public/icons
- scripts
- src
- engine
- abattoirs
- rules
- etablissements
- features
- documentation/pages
- error/pages
- historique/pages
- home/pages
- legal/pages
- simulateurs
- abattoirs
- components
- pages
- etablissements
- components
- pages
- pages
- tests
- e2e
- fixtures/abattoirs
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
92 | 151 | | |
93 | 152 | | |
94 | 153 | | |
| |||
124 | 183 | | |
125 | 184 | | |
126 | 185 | | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
127 | 227 | | |
128 | 228 | | |
129 | 229 | | |
| |||
164 | 264 | | |
165 | 265 | | |
166 | 266 | | |
167 | | - | |
| 267 | + | |
168 | 268 | | |
169 | 269 | | |
170 | 270 | | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
176 | 287 | | |
177 | | - | |
| 288 | + | |
178 | 289 | | |
179 | 290 | | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
| 291 | + | |
188 | 292 | | |
189 | 293 | | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
190 | 302 | | |
191 | 303 | | |
192 | 304 | | |
193 | 305 | | |
194 | | - | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
195 | 357 | | |
196 | | - | |
197 | | - | |
| 358 | + | |
198 | 359 | | |
199 | 360 | | |
200 | 361 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
0 commit comments