55f634e25b5a2b97d7d182e6349ef416da28a186
Dans le panneau d'affectation, la liste des candidats d'un créneau n'était triée que par disponibilité puis par nombre d'heures déjà assignées — les vœux n'y jouaient aucun rôle tant qu'on ne cliquait pas sur « Suggestions (solveur) ». Nouveau `candidateChanceScore` (`lib/planning.ts`), portage local et synchrone du scoring du solveur : vœu de poste (bonus), disponibilité déclarée y compris conflit avec un artiste souhaité (malus), charge déjà assignée (malus). C'est ce score qui classe désormais la liste par défaut, dès l'ouverture du détail d'un poste — sans requête réseau ni clic sur le solveur. Si celui-ci a effectivement tourné, ses candidats retenus (vraie optimisation jointe) restent prioritaires en tête. Chaque candidat affiche maintenant, en plus de sa disponibilité, des badges « Vœu de poste » et « Manquerait un artiste souhaité » quand applicable — pour que le classement reste lisible. typecheck / lint / build / smoke au vert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
Gestion des bénévoles
Application web de gestion des bénévoles pour un festival associatif. Backend FastAPI + PostgreSQL, frontend React (à venir), déploiement Docker Compose auto-hébergé.
Voir CLAUDE.md pour le vocabulaire du domaine, l'arborescence
et les conventions.
Démarrage rapide
make demo # base + backend + frontend, jeu de démonstration chargé
make blank # idem, mais édition vierge + 1er compte coordination
- Frontend : http://localhost:5173
- API : http://localhost:8000 · Docs : http://localhost:8000/docs
make downarrête tout ·make logssuit les logs du backend
Chaque commande construit les images, applique les migrations, prépare les
données, bascule le frontend sur l'API réelle (.env) et affiche les
identifiants de connexion.
make blank accepte des paramètres :
make blank EMAIL=moi@festival.fr PASSWORD=mon-mot-de-passe-solide \
NAME="Festival 2026" START=2026-07-01 END=2026-07-04
Le jeu de démo : 120 bénévoles fictifs, 15 postes, 4 jours. L'édition vierge : une édition + un compte coordination (mot de passe) + 3 créneaux types.
Tests
docker compose run --rm backend uv run pytest
La base de test (benevoles_test) est créée automatiquement au premier
démarrage du conteneur PostgreSQL.
Structure
| Dossier | Rôle |
|---|---|
backend/ |
API FastAPI, modèle SQLModel, migrations Alembic |
frontend/ |
Interface React + Vite + TS + Tailwind (service frontend) |
deploy/ |
Configuration de déploiement production |
.github/ |
Chaîne CI/CD (build → GHCR → SSH sur le VPS) |
Languages
Python
51.8%
TypeScript
47.6%
JavaScript
0.2%
Makefile
0.2%
Dockerfile
0.1%