ask_operator: operator-side ✗ CANC3L on pending questions

new POST /cancel-question/{id} resolves a pending operator question
with the sentinel answer '[cancelled]' and fires the usual
HelperEvent::OperatorAnswered so the manager sees a terminal state
and can fall back. uses the same OperatorQuestions::answer path —
no special handling, the manager already has to deal with arbitrary
answer strings.

dashboard renders the cancel as a separate <form> below the main
qform so the answer-merge submit handler on the main form doesn't
inadvertently fire when the operator clicks cancel. confirm dialog
spells out what the manager will see.

ttl-based auto-cancel is still on the todo (would spawn a tokio task
per submitted question).
This commit is contained in:
müde 2026-05-15 20:25:11 +02:00
parent bc87ff80d2
commit ee5b85716d
4 changed files with 54 additions and 8 deletions

View file

@ -332,6 +332,7 @@ summary:hover { color: var(--purple); }
.qform .q-free input::placeholder { color: var(--muted); }
.qform .q-free input:focus { outline: 1px solid var(--amber); }
.qform button { align-self: flex-start; }
.qform-cancel { margin-top: 0.3em; }
.inbox {
background: var(--bg-elev);
border: 1px solid var(--border);