feat(cases): accept replay-safe ticket escalations
This commit is contained in:
@@ -26,7 +26,10 @@ The executable backend slice now exposes:
|
||||
assignment/evidence/Decision/record references, and replay-safe lifecycle
|
||||
events; and
|
||||
- `cases.service_launcher`, which opens exactly one deterministic case from an
|
||||
exact published Service revision and safely replays the same Portal launch.
|
||||
exact published Service revision and safely replays the same Portal launch;
|
||||
and
|
||||
- `tickets.case_escalation`, which creates exactly one formal Case from an
|
||||
authorized Ticket handoff while preserving a governed Ticket reference.
|
||||
|
||||
Cases does not own institutional Service, Party, representation, identity,
|
||||
address, Mandate, Decision, file, workflow, or task lifecycles. The `/cases`
|
||||
@@ -50,3 +53,14 @@ Historical case evidence is retained; current open case and active access facts
|
||||
require authorized manual review through the existing lifecycle. Applicant
|
||||
identity correlation remains a Parties responsibility and is never guessed
|
||||
from a case's party references.
|
||||
|
||||
## Ticket escalation
|
||||
|
||||
When Tickets requests escalation, Cases rechecks tenant membership and
|
||||
`cases:case:create`, resolves the exact active Case type and its initial status,
|
||||
and derives a deterministic Case ID from the Ticket and idempotency key. A retry
|
||||
returns the same Case. The Case keeps only the stable Ticket reference, source
|
||||
revision, number, and authorized handoff note in governed context; it does not
|
||||
copy Ticket comments, attachments, participants, or lifecycle state. If Cases
|
||||
is absent or the configured type is unavailable, Tickets remains usable and
|
||||
shows the integration consequence to the operator.
|
||||
|
||||
Reference in New Issue
Block a user