prime-job-close-operator-task

Закриття тасків після disconnect

src/prime/components/workers/primeJobCloseOperatorTask.queue.ts

Не cron. Викликається програмно через addPrimeJobCloseOperatorTasks({operatorFamilyId, taskIds}) коли оператор відключився. Між постановкою і виконанням — 10 хвилин (delay: 60000 * 10).

Це єдиний воркер, який лишився на старому Bull-патерні (не мігрований на CronWorker), бо він event-driven, а не крон. Аналог golden jobCloseOperatorTask.queue.ts.

Grace period: якщо за ці 10 хв оператор повернувся — попередній job стирається (addPrimeJobCloseOperatorTasks спершу видаляє існуючий job з тим самим jobId = operatorFamilyId). Якщо ні — job виконується.

Що відбувається

  • Через RMQ дозапитує поточний стан оператора (StackOperatorWithFamily.routingKey)
  • Звіряє lastConnectAt / lastDisconnectAt: працює далі тільки якщо lastDisconnect > lastConnect І минуло понад 10 хв після disconnect (інакше тихо done())
  • Закриває таски оператора через PrimeTaskRepository.findNotClosedAndNotAnsweredTasksAndClose:
    • незакриті/невідповіджені з переданого taskIds → статус closed_offline
    • решту незакритих → статус need_debug

Моніторинг

Лише Winston-логи (winston.prime.all, з повним JSON.stringify({error, data})). StackMonitoring і TG не використовуються.