Убрать мёртвые SSE-ветки и двойную перезагрузку доски
Удалены ветки boards_changed/pipeline_stats (core их не публикует); перезагрузка при переклассификации коалесцируется scheduleBoardReload. Закрывает TD-SSE-DEAD и TD-DBL-CLICK.
This commit is contained in:
+2
-2
@@ -53,8 +53,8 @@
|
||||
|---|---|---|---|---|
|
||||
| TD-SETTINGS-UI | Вынос оставшихся вкладок `SettingsView` в отдельные компоненты (частично сделано) | ревью 2026-09-08 | P3 | TECHDEBT |
|
||||
| TD-VIRT | Полная виртуализация длинных колонок (сейчас — прогрессивный рендер «Показать ещё») | ревью, этап 12 | P3 | TECHDEBT |
|
||||
| TD-SSE-DEAD | Мёртвые SSE-ветки фронта `boards_changed`/`pipeline_stats` (core их не публикует) | этап 12, E | P3 | TECHDEBT |
|
||||
| TD-DBL-CLICK | Двойная перезагрузка доски у инициатора batch-reclassify (ответ + SSE) | этап 12, E | P3 | TECHDEBT |
|
||||
| TD-SSE-DEAD | **Сделано (2026-09-11):** мёртвые SSE-ветки фронта `boards_changed`/`pipeline_stats` удалены из `store/lifecycle.js` (core их не публикует) | этап 12, E | P3 | DONE |
|
||||
| TD-DBL-CLICK | **Сделано (2026-09-11):** перезагрузка доски при batch-переклассификации коалесцируется `scheduleBoardReload()` (ответ + SSE → один запрос) | этап 12, E | P3 | DONE |
|
||||
| TD-TEST-HARNESS | Историческая гонка `FreeTcpPort` — устранена; следить за новыми хост-хелперами | этап 12, E | P3 | TECHDEBT |
|
||||
| TD-OLD-DOCS | Исторические доки несут старые термины под пометками (переписывать не нужно) | docs sweep | P3 | TECHDEBT |
|
||||
| TD-SOURCE-PROVIDER | Провайдеры содержимого источников. **Сделано (2026-09-11):** `TelegramSourceContentProvider` + `ReadSource` RPC + `GET /api/cards/{id}/source` + UI «Обновить из источника». Осталось: провайдеры прочих источников по мере появления | generic source 2026-09-11 | P2 | TECHDEBT |
|
||||
|
||||
@@ -630,6 +630,18 @@ export async function reloadBoardData() {
|
||||
}
|
||||
}
|
||||
|
||||
let _boardReloadTimer = null
|
||||
|
||||
// Коалесцирует частые перезагрузки доски (ответ + SSE) в один прогон —
|
||||
// убирает двойную перезагрузку у инициатора batch-переклассификации.
|
||||
export function scheduleBoardReload(delayMs = 250) {
|
||||
if (_boardReloadTimer) return
|
||||
_boardReloadTimer = setTimeout(() => {
|
||||
_boardReloadTimer = null
|
||||
reloadBoardData()
|
||||
}, delayMs)
|
||||
}
|
||||
|
||||
// принять ИИ-предложение: колонка становится обычной
|
||||
export async function acceptSuggestedBoard(id) {
|
||||
const b = containerById(id)
|
||||
@@ -669,7 +681,8 @@ export async function reclassifyInbox() {
|
||||
const r = await api.post('/api/cards/reclassify')
|
||||
if (r?.started) {
|
||||
toast(t('cards.reclassifying', { count: r.attempted }), { icon: 'sparkles' })
|
||||
await reloadBoardData()
|
||||
// Перезагрузку доски коалесцирует scheduleBoardReload: SSE cards_reclassified не дублирует запрос.
|
||||
scheduleBoardReload()
|
||||
} else if (r?.busy) {
|
||||
toast(t('cards.pereklassifikaciya-uzhe-zapushchena'), { icon: 'sparkles' })
|
||||
} else if (r?.reason) {
|
||||
|
||||
@@ -10,8 +10,8 @@ import { applyMlStatus, refreshMlStatus } from './ml.js'
|
||||
import {
|
||||
applyContainers,
|
||||
applyColState,
|
||||
reloadBoardData,
|
||||
reloadCards,
|
||||
scheduleBoardReload,
|
||||
upsertCard,
|
||||
flashCard,
|
||||
revealCard,
|
||||
@@ -148,15 +148,10 @@ function startRealtime() {
|
||||
state.dueReminderId = data.id
|
||||
} else if (type === 'system_status') {
|
||||
refreshTgStatus()
|
||||
} else if (type === 'pipeline_stats' && data) {
|
||||
// воркер обработал часть очереди: обновляем счётчики вкладки «Обработка»
|
||||
state.pQueueCounts = { new: data.new || 0, ai: data.ai || 0, total: data.total || 0 }
|
||||
state.pRejectedCount = data.rejected || 0
|
||||
} else if (type === 'boards_changed') {
|
||||
reloadBoardData()
|
||||
} else if (type === 'cards_reclassified') {
|
||||
// переклассификация карточки/«Неразобранного» завершилась: мягко перечитываем доску и статус ML
|
||||
reloadBoardData()
|
||||
// Переклассификация карточки/«Неразобранного» завершилась: мягко перечитываем доску и статус ML
|
||||
// (коалесцируется с перезагрузкой инициатора — без двойного запроса).
|
||||
scheduleBoardReload()
|
||||
refreshMlStatus()
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user