launch-history-status-reconciliation
/**
- @fileoverview Синхронизация bot_launch_history с live-статусом бота
- @description Устраняет рассинхрон «ОФЛАЙН в шапке» / «ОНЛАЙН в Истории». */
Проблема
Шапка берёт live bot-status. Вкладка «История → Текущий» раньше брала первую
запись status=running из БД. После краша/рестарта сервера orphans оставались
running без stoppedAt → ложный «Онлайн».
Решение (слои)
- Write: bulk-close всех
runningпри stop/exit/shutdown/start-fail - Read:
reconcileLaunchHistoryForTokenв status и GET launch-history - Startup: sweep orphans после
restoreRunningBots - UI:
isLiveRunning— offline никогда не показывает orphan как «Онлайн»
Источники правды
- bot_launch_history.md
- bot.md
- tokens.md — GET launch-history (self-heal)
- bot-worker-pool-isolation.md — изоляция воркера / activeBots / логи
Ключевые файлы
| Файл | Роль |
|---|---|
server/bots/reconcileLaunchHistory.ts | Сверка |
server/bots/closeActiveLaunchHistory.ts | Bulk close |
server/bots/handleWorkerBotExited.ts | Exit + fallback DB |
client/.../select-current-launch.ts | UI gate |