Bénévole : vœux d'artistes (entité Artist) et vœux de postes

Nouvelle entité `Artist` (nom + jour de passage), CRUD
`/editions/{id}/artists` (lecture ouverte à tout compte de l'édition,
écriture COORDINATION), unicité (édition, nom, date).

La fiche bénévole porte deux listes de vœux, sur le modèle de
`skill_codes` (None = inchangé, [] = vider) :
- `artist_ids` : artistes que le bénévole veut voir (`volunteer_artist`) ;
- `wished_position_ids` : postes qu'il voudrait tenir
  (`volunteer_position_wish`), distinct de l'affectation.

Un id étranger à l'édition renvoie 422 (`artist.unknown` /
`position.unknown`). Suppression d'un artiste : cascade sur les vœux.
Migration 0006. Jeu de démonstration et frontend inchangés (le front
suivra).

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-10 22:12:55 +02:00
co-authored by Claude Sonnet 5
parent 609514369a
commit 24caece7df
13 changed files with 618 additions and 11 deletions
+6
View File
@@ -7,6 +7,7 @@ les métadonnées sur `SQLModel.metadata`.
from app.models.base import TimestampMixin, local_now
from app.models.domain import (
Account,
Artist,
Assignment,
Availability,
DayPart,
@@ -17,6 +18,8 @@ from app.models.domain import (
ShiftRequiredSkill,
Skill,
Volunteer,
VolunteerArtist,
VolunteerPositionWish,
VolunteerSkill,
)
from app.models.enums import (
@@ -28,6 +31,7 @@ from app.models.enums import (
__all__ = [
"Account",
"Artist",
"Assignment",
"AssignmentSource",
"Availability",
@@ -43,6 +47,8 @@ __all__ = [
"Skill",
"TimestampMixin",
"Volunteer",
"VolunteerArtist",
"VolunteerPositionWish",
"VolunteerSkill",
"local_now",
]