Files
benevoles/backend
AdamThomasandClaude Opus 5.5 0f904f5e3d
ci-cd / build-backend (push) Successful in 45s
ci-cd / build-frontend (push) Successful in 24s
ci-cd / deploy (push) Successful in 27s
Deux postes en même temps possibles, malus dans le solveur
Le chevauchement de créneaux (SHIFT_OVERLAP) n'est plus bloquant : il
remonte en avertissement et l'affectation est enregistrée. Le solveur ne
l'exclut plus mais applique un fort malus au bénévole déjà affecté
ailleurs au même moment (proposé seulement sous l'effectif minimal, faute
de mieux) ; il n'est jamais reproposé sur un créneau où il est déjà.
Même malus dans le classement par défaut du panneau et dans le mock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 10:38:52 +01:00
..
2026-09-09 22:19:58 +02:00
2026-09-09 22:19:58 +02:00

Backend — API de gestion des bénévoles

FastAPI · SQLModel · PostgreSQL · Alembic. Dépendances gérées par uv.

Développement

Toujours via Docker Compose depuis la racine du dépôt :

docker compose up --build          # démarre db + backend (reload actif)
docker compose run --rm backend uv run pytest
docker compose run --rm backend uv run ruff check .

Migrations

docker compose run --rm backend uv run alembic revision --autogenerate -m "..."
docker compose run --rm backend uv run alembic upgrade head

Structure

Chemin Rôle
app/main.py Instance FastAPI, middlewares, routers
app/config.py Configuration (variables d'environnement)
app/db.py Engine SQLAlchemy + dépendance de session
app/api/ Routers HTTP
app/models/ Tables SQLModel du domaine
app/validation/ Moteur de règles d'affectation (cœur du produit)
app/i18n/ t(key) + locales/fr.json — aucun texte en dur ailleurs
app/migrations/ Alembic
tests/ pytest, base de test PostgreSQL réelle

Note

uv.lock est versionné (généré dans le conteneur). Le régénérer après toute modification des dépendances : docker compose run --rm backend uv lock.