feat(sla): finish PMS-106 story (policies, targets, business hours, holidays, evaluator) #35

Closed
David wants to merge 0 commits from feat/sla-story-pms-106 into main
Owner

Closes #PMS-106

Closes #PMS-106
feat(sla): scaffold + policies, targets, business hours, holidays, evaluator
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
f4a2d8adc4
Batches PMS-107..112:
- PMS-107 scaffold + router wire
- PMS-108 SLA policies CRUD; setting `is_default` demotes the prior default in the same transaction
- PMS-109 SLA targets: `(sla_policy_id, priority_id)` is unique per the schema, so `POST /policies/:id/targets` is upsert
- PMS-110 business hours CRUD; `schedule` is JSONB (`{"mon": [{"start": "09:00", "end": "17:00"}], ...}`)
- PMS-111 holiday calendars CRUD
- PMS-112 evaluator: `SlaService::evaluate_for_ticket` reads the ticket's effective policy (assigned `sla_id` or tenant default), looks up the priority-keyed target, and stamps `first_response_due` / `resolution_due` / `sla_due_date`. v1 treats every window as 24x7; business-hours awareness lands as a follow-up. `POST /sla/tickets/:id/evaluate` is the manual trigger; ticket service hook lives in a stacked PR.

#PMS-107 State Done
#PMS-108 State Done
#PMS-109 State Done
#PMS-110 State Done
#PMS-111 State Done
#PMS-112 State Done
vas2000-work closed this pull request 2026-05-21 02:42:59 +02:00
Some checks are pending
Create release / Create release from merged PR (pull_request) Has been skipped
Check / * (pull_request)
Required
E2E / * (pull_request)
Required

Pull request closed

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-server!35
No description provided.