feat(fp): brief v3 — besluit-driven guided drafting
Compose the herregistratie letter from the besluit instead of a library hunt: the behandelaar picks positief/negatief (+ reden-checkboxes for a negatief) and the kern's standaardteksten follow the selection live. Front-end (this increment): - Kern is recomposed reactively from the besluit selection (new BesluitSelected machine msg + composeKern); the "Genereer conceptbrief" button is gone. The drafter's free text is preserved across a selection change. - The editor shows only the editable sections; the locked aanhef/slot render in the preview, not the authoring surface. Slot is a case-type template section (per templateId), documented as such. - The panel re-seeds from the letter via inferSelection() — the besluit + redenen are read back off the kern's passage blocks, so the selection survives reload with no new wire fields (derive, don't store). - letter-section drops the now-redundant per-section passage picker (besluit owns standaardteksten); keeps free-text + block edit/move/remove. Fix: app-checkbox now falls back to a unique per-instance id when checkboxId is omitted. The CIBG styled checkbox routes clicks through the label, so the shared id="undefined" made every reason label toggle the first input — the second checkbox could never be checked. Verified live (Playwright): each reason toggles independently. Backend/seam (brief v3 WIP): besluit/reason passage tags on the wire + seed, carried through the adapter parse boundary. Specs updated (besluit, brief.machine) and the affected stories re-pointed at the new API. FE lint + build + 253 vitest specs green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1398,6 +1398,9 @@
|
||||
},
|
||||
"orgTemplate": {
|
||||
"$ref": "#/components/schemas/OrgTemplateDto"
|
||||
},
|
||||
"caseContext": {
|
||||
"$ref": "#/components/schemas/CaseContextDto"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
@@ -1414,6 +1417,28 @@
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"CaseContextDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"zorgverlenerNaam": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"bigNummer": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"beroep": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"aanvraagReferentie": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"ChangeRequestRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -1723,6 +1748,14 @@
|
||||
},
|
||||
"isDefault": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"besluit": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"reason": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
||||
Reference in New Issue
Block a user