Files
call-center/docs/acceptance/track12/20260307_161629/track12-acceptance.md
T

3.8 KiB

Track 12 Acceptance - 20260307_161629

Environment

  • Base URL: http://localhost:8080
  • Database: sqlite:///./.data_local/mvp_cc.db
  • Asterisk host: 92.38.48.166
  • Operator user: operator
  • Operator extension: 2001

Acceptance Basis

Track 12 is a UX/state hardening layer on top of accepted Track 11.
This package closes the Track 12 delta and keeps Track 11 control-path proof as the inherited baseline.

Reference control-path package:

Track 12 delta call:

  • call_id = 1772881979.108
  • interaction_id = int_0349796d1e
  • recording_id = rec_733ef323b1

Executed Scenarios

  • Happy path inherited from accepted Track 11 package
  • Transfer path inherited from accepted Track 11 package
  • Passive path: answer in SIP, no browser action, call remains in live-calls until real hangup
  • No-fake-cards path: Живые звонки uses bridge data only and does not show interaction:int_*

Delta Evidence

What The Monitor Proved

For call 1772881979.108:

  1. At 2026-03-07T11:13:01+00:00 the call entered /asterisk/live-calls as:
    • status = active
    • telephony_status = ringing
  2. At 2026-03-07T11:13:05+00:00 it stayed in /asterisk/live-calls and moved to:
    • telephony_status = connected
    • operator_extension = 2001
  3. At 2026-03-07T11:13:26+00:00 a synthetic reconciled call.ended was emitted, but the call still remained in /asterisk/live-calls.
  4. Only at the real final hangup (2026-03-07T11:13:30+00:00) the call left /asterisk/live-calls and moved to /asterisk/recent-calls.
  5. recording.ready was emitted and the recording was imported successfully.

This closes the earlier defect where the card could disappear from the operator flow on the reconciled service event instead of the real final hangup.

Mandatory Checks

  • GET /proxy/asterisk-bridge/asterisk/live-calls returns only active calls
  • GET /proxy/asterisk-bridge/asterisk/recent-calls returns only recent ended calls
  • passive SIP answer does not force the card out of Активные звонки before real hangup
  • final hangup moves the card to Только что завершённые
  • no interaction:int_* fallback cards are used for Живые звонки
  • recording is available for the monitored call
  • Track 11 claim / hangup / blind-transfer control path remains covered by the accepted Track 11 package

Notes

  • The initial runtime regression after a local restart was caused by scripts/local_stack.py not loading .env.production; this is fixed and the launcher now auto-loads .env.production, .env.local, and .env.
  • The current passive-path monitored call ended without browser actions, so bridge-actions.json contains no action rows for 1772881979.108. This is expected for the passive-path check.
  • Control-path actions (claim, hangup, blind-transfer) remain validated by the accepted Track 11 package and were not redefined by Track 12.

Decision

  • GO / NO-GO: GO
  • Track 12 status: Accepted