User Story
As an Operations Coordinator, I want the triage intake form to automatically assign a unique Request ID when my submission reaches the API so that I never have to manually construct or guess an identifier and every support request is uniquely traceable from creation.
Acceptance Criteria
Scenario 1 — Happy Path
Given the intake form is loaded in a browser
When I fill in all required fields (excluding Request ID, which is not shown) and submit
Then the API generates a unique Request ID server-side, the triage result panel displays the assigned Request ID, and the helpdesk ticket created carries that same ID
Scenario 2 — Uniqueness / Boundary
Given two support requests are submitted concurrently within the same millisecond
When both reach POST /triage
Then each is assigned a distinct, non-colliding Request ID (ULID guarantees time-ordered uniqueness without a database sequence)
Scenario 3 — Unhappy Path / Client Tampering
Given a caller submits a raw JSON body to POST /triage that includes a request_id field
When the API processes the request
Then the client-supplied value is ignored and the server-generated ID is used in the response and helpdesk ticket
Domain Events
Notes
- Bounded context: Support Triage
- INVEST flags: None
- Cross-context dependencies: None — the helpdesk ticket (Work Order Management context) receives
request_id from the triage service unchanged; no contract change required
- Implementation hint: remove
request_id from intake.html form; in POST /triage handler, generate a ULID before constructing HelpRequest; request_id on HelpRequest model can be made optional (defaulting to generated value) or generated exclusively in the handler before passing to TriageService
User Story
As an Operations Coordinator, I want the triage intake form to automatically assign a unique Request ID when my submission reaches the API so that I never have to manually construct or guess an identifier and every support request is uniquely traceable from creation.
Acceptance Criteria
Scenario 1 — Happy Path
Given the intake form is loaded in a browser
When I fill in all required fields (excluding Request ID, which is not shown) and submit
Then the API generates a unique Request ID server-side, the triage result panel displays the assigned Request ID, and the helpdesk ticket created carries that same ID
Scenario 2 — Uniqueness / Boundary
Given two support requests are submitted concurrently within the same millisecond
When both reach
POST /triageThen each is assigned a distinct, non-colliding Request ID (ULID guarantees time-ordered uniqueness without a database sequence)
Scenario 3 — Unhappy Path / Client Tampering
Given a caller submits a raw JSON body to
POST /triagethat includes arequest_idfieldWhen the API processes the request
Then the client-supplied value is ignored and the server-generated ID is used in the response and helpdesk ticket
Domain Events
HelpRequestReceivedNotes
request_idfrom the triage service unchanged; no contract change requiredrequest_idfromintake.htmlform; inPOST /triagehandler, generate a ULID before constructingHelpRequest;request_idonHelpRequestmodel can be made optional (defaulting to generated value) or generated exclusively in the handler before passing toTriageService