S2a: purge legacy Form Builder PHP code and routes

This commit is contained in:
2026-04-17 18:43:00 +02:00
parent cfc7610497
commit a3ca596362
55 changed files with 128 additions and 6057 deletions

View File

@@ -2955,6 +2955,30 @@ Every contract in §31.1-31.8 has a corresponding integration test in
Tests are part of CI. Contract changes require test updates (and this
ARCH section update) before merge.
### 31.10 Tag sync integration (BACKLOG FORM-02)
Replaces the S1-era `TagSyncService` that read the legacy
`person_field_values` table. Purged in S2a; rebuilt in S2b/S2c against
the new FormBuilder.
**Trigger:** `FormSubmissionSubmitted` event (ARCH §17.1) OR explicit
call from `PersonController::approve()` after status transitions to
`approved`.
**Listener:** `SyncTagPickerValuesToUserTagsListener` — for the given
submission, finds all `form_values` whose field has
`field_type=TAG_PICKER`, and upserts rows into `user_organisation_tags`
with `source=self_reported`, respecting `person.user_id` (skip if null).
Only syncs to the subject person's user account.
**Failure mode:** log at warning level; never throws into the submission
lifecycle. Reason: a tag-sync failure must not block registration.
**Call site removed in S2a:** `PersonController::approve()` and
`PersonIdentityService::syncRegistrationTags()` used to call
`TagSyncService::syncFromRegistration($person)` directly. The rebuilt
flow is listener-driven — no direct service injection required.
---
## End of ARCH v1.2