# v0.0.74 — отмена в extract-фазе (2026-08-24) _code-fixes. Доработка по код-ревью Соннета (пункт «отмена не работает в extract-фазе»)._ ## Что сделано (`drhider/obfuscator.py`) - В проходе 1 (извлечение) добавлена проверка `cancel_event.is_set()` между файлами: при отмене цикл извлечения прерывается (`break`), LLM-сканирование пропускается, результат помечается `cancelled` (processed=0, пустой ZIP + mapping.csv только заголовок). - Раньше отмена ждала завершения ВСЕХ извлечений, включая медленные `.doc` (liberta, до 120с/файл). ## Проверка - `py_compile` — OK, `import` drhider — OK. - Unit-тест: `cancel_event` установлен до старта → `meta={'cancelled': True, 'processed': 0, 'total': 2}`, пустой ZIP (22 Б), CSV только заголовок. ## Критично к Соннету (по итогам проверки) - **«LLM-таймаут тихо обнуляет чанк»** — ОТКЛОНЕНО: `_call_llm` уже логирует (`log.warning("LLM NER failed: %s", e)`) в `except Exception`. Таймаут не «тихий». - **«cleanup после /download»** — ОТКЛОНЕНО ранее (ZIP и CSV скачиваются раздельно, см. v0.0.73). ## Осталось (не трогаем, задокументировано) - idx-мисматч `expand_zips` (фильтр расширений) — краевой случай, спорное поведение. - LLM prompt injection — класс риска, не фикс кода. - debug-эндпоинт `session_files` — мелочь, может сломать тесты. Версия 0.0.73 → 0.0.74. ## Проверка на проде (редеплой 20:07, v0.0.74) - Версия v0.0.74 — на проде. - Регресс: обычный цикл «Обработано 2 файлов: 1.9с» — фикс отмены не сломал обработку.