3.6 KiB
3.6 KiB
Реализовано: TTL-фикс + прерывание с сохранением + ETA + UI-таблица (v0.0.63)
2026-08-24. По плану 2026-08-24-implementation-plan-for-flash.md. Код написан (роль Flash).
Что сделано
session.py — TTL-фикс + отмена
touch(sid),pause_ttl(sid),resume_ttl(sid)— продление/пауза/возобновление TTL.- В сессии
"cancel": threading.Event();request_cancel(sid),get_cancel_event(sid).
scanner.py — прогресс и мягкая остановка LLM
class CancelRequested.scan_llm_ner(..., cancel_event, file_progress): отмена ТОЛЬКО между файлами (текущий добирается); событияfile_start{chars,chunks},file_chunk{chunks_done,chunks_total},file_done{elapsed}.
obfuscator.py — частичный результат
obfuscate()возвращает(zip, csv, meta):meta=None(штатно) или{"cancelled": True, "processed", "total"}(прерывание).- Трекинг
llm_done(файлы с завершённым LLM). При отмене в LLM — в результат идут ТОЛЬКО файлы изllm_done(их обфускация корректна); при отмене в фазе замены — стоп после текущего файла. Отмена в replace НЕ проверяется, если LLM уже прерван (файлы из llm_done добираются). - Событие
extract_done{total_chars, per_file}(объём текста для ETA).
api_bp.py — API
POST /api/cancel/<sid>.process_stream:pause_ttlв начале /resume_ttlвfinally; передачаcancel_eventиfile_progressв воркер; событияextract_done/file_start/file_chunk/file_done/cancelled; heartbeatllmрасширен:eta_sec, done_chars, total_chars; per-file ETA вfile_chunk.- При закрытии вкладки (
disconnect) ставится иcancel, иcancel_event(воркер останавливается). - legacy
process()— фикс 3-значного возврата + TTL.
index.html — UI
- Кнопка «⏹ Прервать» + модал-подтверждение (объясняет, что сохранится).
- Таблица 3 секций: «✓ Обработанные» (факт время) / «▶ Текущий файл» (прошло / ~осталось) / «○ Ожидают» (~оценка из скорости текущего файла).
- Live-блок: «осталось ~X» (глобальная ETA), текущий файл с per-file ETA.
- SSE-обработчики: extract_done/file_start/file_chunk/file_done/cancelled; done различает пропущенные (до extract_done) и готовые (после).
Проверка
py_compileвсех .py — OK;node --check(JS из index.html) — OK;get_errors— нет.- Локальные тесты логики отмены (FakeLLM): штатно=4 файла; отмена в LLM=3 сохранено; отмена до LLM=0..1 (текущий добирается); отмена после завершения=полный.
- Смоук-тест: приложение создаётся, все роуты включая
/api/cancel/<sid>зарегистрированы.
ВАЖНО
- Версия 0.0.63. Код не задеплоен — нужен редеплой на кластере и прогон реальных тестов (долгий прогон + прерывание).