feat(admin): redesign ticket handling dialog as conversation workspace

Render the original question and replies as one chat-style timeline,
merge editor and toolbar into a shared composer for replies and notes,
and refresh sidebar cards. Remove superseded renderers and selectors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-10-31 12:02:49 +08:00
1 parent 09f3a94cea
commit d7616b193e
3 files changed
+182 -139

No files matched your search

@@ -59,7 +59,9 @@ test('conversation, private notes and final-state confirmation remain distinct',
assert.match(detail, /TicketNoteService::for_ticket\(\$id\)/);
assert.match(detail, /TicketRepository::get_instance\(\)->replies\(\$id\)/);
assert.match(detail, /!empty\(\$quote\['is_deleted'\]\) \? __\('原回复已删除', 'aksrt'\)/);
for (const action of ['reply', 'note', 'status']) assert.ok(detail.includes(`ticket_form_open('${action}'`));
for (const action of ['reply', 'note']) assert.ok(detail.includes(`ticket_composer('${action}'`));
assert.ok(detail.includes("ticket_form_open('status'"));
assert.match(detail, /return \$this->ticket_form_open\(\$action, \$id,/);
assert.match(detail, /aksrt-ticket-detail__closed/);
assert.match(detail, /TicketStatusService::can_transition\(\$from, \$key\)/);
assert.match(detail, /data-aksrt-ticket-close-confirm/);