queues: service level counts callers who weren't answered
withinSlaPercent was "answered within sla_seconds / answered", so a queue where a caller timed out still showed 100%. It is now the usual service level: answered within sla_seconds out of every caller the queue is done with, leaving out those who hung up before sla_seconds (nobody could have answered them in time). Timed out and turned away count as missed; callers still waiting aren't counted. Written into 04; the page label says "Callers answered within N s". Real calls: m8-t1 now shows 50% (1 answered in time, 1 timed out, the early hang-up left out) and the milestone check 67% (2 of 3), and asserts it. The check moves to queue 552 (*45552) so it doesn't clash with m8-t1's 550 on a shared database. Task: M8-T1
This commit is contained in:
1 parent
088372bff8
commit
4742ed52ea
8 files changed
+28
-17
No files matched your search
@@ -377,7 +377,7 @@ Admin resources (all `requireAdmin`; standard CRUD = `GET /x`, `POST /x`, `GET /
|
||||
| `/api/dids` | |
|
||||
| `/api/outbound-routes` | `POST /reorder {ids: []}`, `POST /test {extensionId, number}` → which route/trunk would be used, or why it's denied |
|
||||
| `/api/ring-groups` | members are set via `members: [{extensionId}]` in POST/PATCH |
|
||||
| `/api/queues` | `GET /:id/stats?from&to`, `POST /:id/members/:extId/pause`, `.../unpause`. Agents are sent as `members: [{extensionId, penalty}]`. Stats (company-time-zone days, default today): `{offered, answered, abandoned, timedOut, avgWaitSeconds, withinSlaPercent}` from `queue_calls` (02), which `services/queuestats.ts` fills from app_queue's AMI events and `SpQueueExit` |
|
||||
| `/api/queues` | `GET /:id/stats?from&to`, `POST /:id/members/:extId/pause`, `.../unpause`. Agents are sent as `members: [{extensionId, penalty}]`. Stats (company-time-zone days, default today): `{offered, answered, abandoned, timedOut, avgWaitSeconds, withinSlaPercent}` from `queue_calls` (02), which `services/queuestats.ts` fills from app_queue's AMI events and `SpQueueExit`. `withinSlaPercent` (service level) = answered within `sla_seconds` ÷ callers who left the queue, minus those who hung up within `sla_seconds`; timed out and turned away count as missed, callers still waiting aren't counted; `null` when nobody counts |
|
||||
| `/api/ivrs` | options sent as `options: [{digit, destination}]` |
|
||||
| `/api/time-conditions` | `POST /:id/override {state: 'open'|'closed'|'auto'}`, `GET /:id/status` (open/closed now) |
|
||||
| `/api/holidays` | `POST /import-us-federal {year}` (generates the list in code, no network) |
|
||||
|
||||
@@ -207,7 +207,7 @@ Legend: 📖 read · 🔨 build · ✅ done when
|
||||
**M8-T4** Paging/intercom (`sp-page-*`, `*80`) + auto-answer test on a real Yealink or Grandstream.
|
||||
As built: tested with baresip phones that honor the auto-answer headers (`sip_autoanswer`). **Open:** the check on a real Yealink or Grandstream, when one is available.
|
||||
**M8-T5** MOH classes (03 §8).
|
||||
✅ **Milestone check:** golden `queue` case passes. Scenario: 3 callers wait in a queue with 2 agents. One agent pauses with `*45550`. The caller who waits past `max_wait_seconds` goes to the timeout destination. A parked call on 701 can be picked up from another phone. **Done as `scripts/e2e/m8-check.mjs` (callers from a DID; the agent who answers parks the call and another phone picks up 701).**
|
||||
✅ **Milestone check:** golden `queue` case passes. Scenario: 3 callers wait in a queue with 2 agents. One agent pauses with `*45550`. The caller who waits past `max_wait_seconds` goes to the timeout destination. A parked call on 701 can be picked up from another phone. **Done as `scripts/e2e/m8-check.mjs` (queue 552, so `*45552`; callers from a DID; the agent who answers parks the call and another phone picks up 701).**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user