fix(support): agent-demo self-seeds (join default queue + go online); tickets always get a queue
Root cause of 'waiting for escalations': no queue/membership meant tickets were never assigned. Now: createTicket find-or-creates a default queue; new joinDefault endpoint + useGoOnline hook; agent-demo joins+goes-AVAILABLE on load (assignPending picks up any waiting ticket). smoke-support self-seeds (no seed script needed). Also: vitest singleFork to end cross-file DB races (45 tests deterministic). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -40,10 +40,14 @@ export class SupportService {
|
||||
const requester = await this.actors.resolveActor(scope.id, principal);
|
||||
const traceId = randomUUID();
|
||||
|
||||
// Default to the scope's first enabled queue so assignment has candidates.
|
||||
// Every ticket gets a queue so assignment has somewhere to route it — find
|
||||
// the scope's default queue or create one.
|
||||
const queueId =
|
||||
input.queueId ??
|
||||
(await this.prisma.iiosSupportQueue.findFirst({ where: { scopeId: scope.id, enabled: true } }))?.id;
|
||||
(
|
||||
(await this.prisma.iiosSupportQueue.findFirst({ where: { scopeId: scope.id, enabled: true } })) ??
|
||||
(await this.prisma.iiosSupportQueue.create({ data: { scopeId: scope.id, name: 'Support' } }))
|
||||
).id;
|
||||
|
||||
return this.prisma.$transaction(async (tx) => {
|
||||
const ticket = await tx.iiosTicket.create({
|
||||
|
||||
Reference in New Issue
Block a user