feat(tickets): capture Type / Category / Assignee / Due Date at create (MAPPS-296) #318

Merged
YousifShkara merged 1 commit from feat/MAPPS-296-richer-ticket-create into main 2026-06-23 07:24:22 +02:00
Owner

The New Ticket form was thin - Title, Description, Company, Contact, Priority, Asset only - so a dispatcher creating a ticket had to immediately open it and follow up with an edit to set the four fields the QA report flagged: Type, Category, Assignee, Due Date. Capture all four at creation:

  • Type and Category load from /tickets/types and /tickets/categories (tenant-scoped lookups the server already exposes). Each falls back to "(none)" when the fetch is empty or the user has no permission to read the lookups.
  • Assignee loads from /auth/users (the same endpoint the dispatch board already uses) and defaults to "Unassigned".
  • Due Date is a DateField that stamps the server's scheduled_end at 23:59 UTC on the chosen day - "due by end of day" matches the intuitive read of "Due Date" on a service-desk ticket, and SLA + dispatch already consume scheduled_end.

Each field is optional; empty signal sends null and the server applies its default. Layout matches the existing pair-by-pair sm:grid-cols-2 shape so a wide viewport gets 2-up and mobile stacks. SLA and Contract pickers are the remaining roadmap fields the ticket called out; both need their own lookup endpoints (/sla is paginated, /contracts requires the RequireFinance role just for read) so are parked as follow-ups under this ticket.

#MAPPS-296

The New Ticket form was thin - Title, Description, Company, Contact, Priority, Asset only - so a dispatcher creating a ticket had to immediately open it and follow up with an edit to set the four fields the QA report flagged: Type, Category, Assignee, Due Date. Capture all four at creation: - Type and Category load from `/tickets/types` and `/tickets/categories` (tenant-scoped lookups the server already exposes). Each falls back to "(none)" when the fetch is empty or the user has no permission to read the lookups. - Assignee loads from `/auth/users` (the same endpoint the dispatch board already uses) and defaults to "Unassigned". - Due Date is a `DateField` that stamps the server's `scheduled_end` at 23:59 UTC on the chosen day - "due by end of day" matches the intuitive read of "Due Date" on a service-desk ticket, and SLA + dispatch already consume `scheduled_end`. Each field is optional; empty signal sends `null` and the server applies its default. Layout matches the existing pair-by-pair `sm:grid-cols-2` shape so a wide viewport gets 2-up and mobile stacks. SLA and Contract pickers are the remaining roadmap fields the ticket called out; both need their own lookup endpoints (`/sla` is paginated, `/contracts` requires the `RequireFinance` role just for read) so are parked as follow-ups under this ticket. #MAPPS-296
feat(tickets): capture Type / Category / Assignee / Due Date at create (MAPPS-296)
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 20m27s
Create release / Create release from merged PR (pull_request) Has been skipped
bf1c5f08e2
The New Ticket form was thin - Title, Description, Company, Contact, Priority, Asset only - so a dispatcher creating a ticket had to immediately open it and follow up with an edit to set the four fields the QA report flagged: Type, Category, Assignee, Due Date. Capture all four at creation:

- Type and Category load from `/tickets/types` and `/tickets/categories` (tenant-scoped lookups the server already exposes). Each falls back to "(none)" when the fetch is empty or the user has no permission to read the lookups.
- Assignee loads from `/auth/users` (the same endpoint the dispatch board already uses) and defaults to "Unassigned".
- Due Date is a `DateField` that stamps the server's `scheduled_end` at 23:59 UTC on the chosen day - "due by end of day" matches the intuitive read of "Due Date" on a service-desk ticket, and SLA + dispatch already consume `scheduled_end`.

Each field is optional; empty signal sends `null` and the server applies its default. Layout matches the existing pair-by-pair `sm:grid-cols-2` shape so a wide viewport gets 2-up and mobile stacks. SLA and Contract pickers are the remaining roadmap fields the ticket called out; both need their own lookup endpoints (`/sla` is paginated, `/contracts` requires the `RequireFinance` role just for read) so are parked as follow-ups under this ticket.

#MAPPS-296
YousifShkara deleted branch feat/MAPPS-296-richer-ticket-create 2026-06-23 07:24:22 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!318
No description provided.