docs(form-builder): align artist_advance with engagement-scoped sections
§3.2.5: clarify that advance_sections are engagement-scoped (not artist-scoped). One master artist with two engagements advances each trajectory independently. Drop the prose section enumeration that predated the AdvanceSectionType enum and conflated section names with section types — section type is the enum, name is a free string, default seeds land in Session 3 with ArtistAdvanceDefault. §17.3: footnote on the artist_advance row documenting engagement context resolution — ArtistResolver::fromPortalToken looks up artist_engagements.portal_token, returns the master Artist as subject, populates form_submissions.event_id from the engagement. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -347,18 +347,31 @@ company-type (supplier/partner/etc.), KvK-nummer, BTW-nummer.
|
||||
**Who creates:** org-level schema (one per org), seeded from
|
||||
`ArtistAdvanceDefault`. Schema has `section_level_submit=true`.
|
||||
|
||||
**Who submits:** artist via portal_token (no authentication required).
|
||||
**Who submits:** tour manager / artist representative via the
|
||||
engagement's `portal_token` (RFC-TIMETABLE v0.2 §5.3) — no
|
||||
authentication required.
|
||||
|
||||
**Section model:** `advance_sections` rows are scoped to
|
||||
`engagement_id` (per-event), not to `artist_id` (master). One master
|
||||
artist with two engagements (e.g. Vrijdag and Zaterdag of the same
|
||||
festival) advances each engagement on its own trajectory.
|
||||
Section-type categorisation is driven by the `AdvanceSectionType`
|
||||
enum (see RFC v0.2 §10 + `App\Enums\Artist\AdvanceSectionType` —
|
||||
`guest_list | contacts | production | custom`). Section labels
|
||||
live in `advance_sections.name` (string 80). Default-section seeds
|
||||
are defined in Session 3 (`ArtistAdvanceDefault`).
|
||||
|
||||
**Submission flow:**
|
||||
1. Artist receives email with portal link (triggered by organiser)
|
||||
2. Opens link → token resolved, submission fetched or created
|
||||
3. Form shown with sections: General Info, Contacts, Production (power,
|
||||
catering, transport), Technical Rider, Hospitality
|
||||
4. Artist fills sections independently; each section submit separately
|
||||
5. On section submit: FormSubmissionSectionSubmitted event fires
|
||||
1. Tour manager receives email with portal link (triggered by organiser)
|
||||
2. Opens link → engagement resolved from `portal_token`, submission
|
||||
fetched or created with the master `Artist` as subject (see §17.3)
|
||||
3. Form shown with the engagement's `advance_sections`
|
||||
4. Sections are filled independently; each section submits separately
|
||||
5. On section submit: `FormSubmissionSectionSubmitted` event fires
|
||||
6. Organiser reviews per section → section status approved/rejected/
|
||||
changes_requested
|
||||
7. When all sections approved: FormSubmissionSubmitted fires at submission level
|
||||
7. When all sections approved: `FormSubmissionSubmitted` fires at the
|
||||
submission level
|
||||
8. Integration: triggers accreditation generation per ARCH-07 (future)
|
||||
|
||||
**Mode:** draft_single.
|
||||
@@ -2358,8 +2371,10 @@ support.
|
||||
| Slug | Label (NL) | Subject type | Default submission mode | Public access | Required bindings |
|
||||
|------|-----------|--------------|-------------------------|---------------|-------------------|
|
||||
| `event_registration` | Aanmelding vrijwilligers/crew | person | single | yes | `person.email`, `person.first_name`, `person.last_name` |
|
||||
| `artist_advance` | Artiest advance | artist | draft_single | no | — |
|
||||
| `artist_advance` | Artiest advance | artist | draft_single | no | — |[^artist-advance-engagement] |
|
||||
| `supplier_intake` | Leverancier intake | company | single | no | `company.name` |
|
||||
|
||||
[^artist-advance-engagement]: *Engagement context resolution: `ArtistResolver::fromPortalToken` looks up `artist_engagements.portal_token` to find the engagement, then returns the engagement's master `Artist` as `subject`. The engagement's `event_id` populates `form_submissions.event_id` per WS-4 denormalisation. The advance-section breakdown lives per engagement (see §3.2.5 + RFC-TIMETABLE v0.2 §5.3), so multi-event artists get multi-trajectory advancing.*
|
||||
| `post_event_evaluation` | Evaluatie na afloop | person | single | no | — |
|
||||
| `incident_report` | Incident-melding | person | multiple | no | — |
|
||||
| `signature_contract` | Contract-ondertekening | user | single | no | — |
|
||||
|
||||
Reference in New Issue
Block a user