Étape 6 : jeu de données de démonstration

- app/seed.py, exécutable via python -m app.seed, idempotent et déterministe
  (graine fixe), sans donnée nominative réelle
- Édition « Festival des Lucioles » 2026 : 120 bénévoles, 15 postes,
  4 jours (montage/festival/démontage), 3 demi-journées, 8 compétences,
  ~100 créneaux, ~280 affectations actives, disponibilités tri-état
- ~12 créneaux volontairement sous l'effectif minimal (trous d'effectif)
- 3 affectations à avertissement (compétence absente, hors disponibilité,
  repos insuffisant), 0 violation bloquante
- Passe de vérification finale via le moteur de validation : le résumé imprime
  le décompte des avertissements par règle et le nombre de bloquantes
- covered_slots rendue publique dans validation.engine (réutilisée par le seed)
- 2 tests (dataset réaliste, déterminisme/idempotence) ; 106 tests au total

Fin du premier incrément backend.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
This commit is contained in:
AdamThomas
2026-09-09 23:07:31 +02:00
co-authored by Claude Sonnet 5
parent 74e35f0195
commit 49ac6a4726
4 changed files with 730 additions and 7 deletions
+9 -5
View File
@@ -193,6 +193,7 @@ pointage sur site · fonctions d'IA.
│ │ ├── importing/ # import CSV/Excel (parser, values, service)
│ │ ├── models/ # tables SQLModel
│ │ ├── validation/ # moteur pur (models, engine) + loader (base)
│ │ ├── seed.py # jeu de démonstration (python -m app.seed)
│ │ ├── i18n/
│ │ │ ├── __init__.py # t(key, **params)
│ │ │ └── locales/fr.json
@@ -220,7 +221,7 @@ Aucune dépendance locale requise hors Docker.
| Créer une migration | `docker compose run --rm backend uv run alembic revision --autogenerate -m "..."` |
| Appliquer les migrations | `docker compose run --rm backend uv run alembic upgrade head` |
| Vérifier migration ↔ modèle | `docker compose run --rm backend uv run alembic check` (après `upgrade head`) |
| Charger le jeu de démo | *(étape ultérieure)* `docker compose run --rm backend uv run python -m app.seed` |
| Charger le jeu de démo | `docker compose run --rm backend uv run python -m app.seed` (après `alembic upgrade head`) |
---
@@ -266,8 +267,11 @@ Aucune dépendance locale requise hors Docker.
| 2 | Modèle de données complet + migration Alembic initiale | validée |
| 3 | Import CSV/Excel (analyse + exécution, rapport, doublons, simulation) | validée |
| 4 | Moteur de validation des affectations (pur, TDD, 5 règles) | validée |
| 5 | API CRUD (Position, Shift, Volunteer, Assignment) + matrice + validation branchée | à valider |
| 5 | API CRUD (Position, Shift, Volunteer, Assignment) + matrice + validation branchée | validée |
| 6 | Jeu de données de démonstration (`app/seed.py`) | à valider |
> **En attente** : la couche d'authentification (lien magique, `Account`,
> JWT, dépendances de rôle) fera l'objet d'une étape dédiée. Les endpoints
> actuels ne sont pas encore protégés.
Premier incrément backend terminé. **Reste hors périmètre** (modèle prêt à les
accueillir) : authentification par lien magique (`Account` + `MagicLinkToken`
existent, endpoints non encore protégés), solveur OR-Tools, envoi
d'emails/SMS, constructeur de formulaire, pointage, IA. Le frontend
(React/Vite/TS/Tailwind) reste à démarrer.