# 2026-08-20 — LLM обрабатывает ВСЕ данные (чанкинг) — v0.0.57 ## Задача Пользователь: LLM должен обрабатывать ВСЕ данные, а не урезку 8000 символов. Ветка сохранения пре-LLM конфигурации: `save-pre-llm-v0.0.56` (указывает на прежний master). ## Изменения (drhider/scanner.py) `scan_llm_ner` переписан: - Убраны глобальные урезки `t[:3000]` и `combined[:8000]`. - Каждый файл обрабатывается ПОЛНОСТЬЮ: split_into_chunks(6000, overlap 500). - Чанки файла — параллельно (ThreadPoolExecutor, concurrency 4), крупные файлы вперёд. - Для каждого чанка — полный промпт + «Already captured by regex» (mapping). - Дедуп найденного через normalize_entity (пробелы/регистр/кавычки/тире/ё). - Верификация _verify_entity против ПОЛНОГО текста файла — отсекает галлюцинации LLM. - regex-найденное не дублируется. Новые хелперы (scanner.py): - split_into_chunks(text, size=6000, overlap=500) — границы \n\n,\n,. ,? ,! ,; ,, ," " - normalize_entity(s) — канонизация для дедупа - _verify_entity(value, full_text) — точное/нормализованное вхождение - _build_llm_prompt(text, already_found) - _call_llm(text, llm_client) — вызов + разбор JSON (пусто при ошибке) Параметры верхнего уровня (легко тюнить): - _CHUNK_SIZE = 6000, _CHUNK_OVERLAP = 500, _LLM_CONCURRENCY = 4 ## Ожидаемый эффект - LLM покрывает все файлы целиком (в т.ч. хвосты и таблицы после 3000 символа). - Время на ~300 файлов ≈ 3.5 мин при 4 потоках (~390 вызовов). - Меньше галлюцинаций (верификация). ## Проверка - py_compile OK. - test_scanner 20/20. - Юнит хелперов: split (12К→4 чанка ≤6100), verify (галлюцинация→False), normalize OK. - Все 106 тестов OK. - VERSION 0.0.57. ## Примечание Реальная проверка LLM-покрытия и времени — на наборе T/ при прогоне на проде/локально с ключом LLM (локально ключ отсутствует → LLM не выполняется, только regex).