Le volume backend-data monté sur /app masquait Eau2018.xls copié dans
l'image à /app/Eau2018.xls — d'où le FileNotFoundError au step seed CI.
- Dockerfile : copie Eau2018.xls dans /opt/ (hors mount)
- seed.py : résolution multi-chemin avec /opt en priorité (Docker)
- .woodpecker.yml : trivy:latest -> trivy:0.70.0 (pin reproductibilité)
Note : si le seed replante avec la même erreur après ce commit, c'est
que le volume backend-data en prod a aussi un seed.py figé (shadowing
de /app entier). Fix de fond à venir : déplacer le mount sur /app/data.
- DEV_FIXTURES défini au niveau module (constante partagée)
- seed principal (commune + 363 foyers + votes) sous `if commune is None`
- fixtures toujours vérifiées/insérées après, quel que soit l'état de la DB
- résout le cas prod avec DB déjà seedée
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- seed.py : 3 foyers avec codes fixes (DEVTEST2/3/4, RS/RP/PRO)
insérés avant les 363 réels ; existing_codes pré-chargé → zéro collision
- page citizen : dev hint mis à jour avec les 3 mêmes codes + profils
- CLAUDE.md : reformaté en guide de session
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CMS editor: formatting toolbar with H1-H3, bold, italic, strikethrough,
links, images, lists, blockquotes, code blocks, horizontal rules.
Keyboard shortcuts (Ctrl+B/I/D/K). Improved markdown preview rendering.
Import page: shows current data summary with year badge, stats grid,
last import date. Year input for new imports. Preview with sample table.
Backend: added data_year and data_imported_at fields to TariffParams,
returned in stats endpoint. Import sets data_imported_at automatically.
Seed sets data_year=2018.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>