# v0.0.45 — тестовый API process_names (обфускация по именам файлов) — 2026-08-19 **Дата:** 2026-08-19 **Версия:** 0.0.44 → 0.0.45 --- ## Суть Тестовый endpoint для curl: обфускация файлов по ИМЕНАМ из локальной папки сервера (не таскать файлы каждый раз). ## Использование ```bash # На сервере задана папка TEST_INPUT_DIR (env), в ней лежат входные файлы. curl -X POST https://drhider.../api/process_names \ -H "Content-Type: application/json" \ -d '{"files": ["0144-03-2023_отчет об оценке.pdf", "test.pdf"]}' \ -o result.zip ``` Ответ: ZIP с обфусцированными .md + mapping.csv. ## Поведение (по требованию) - **Если `TEST_INPUT_DIR` не задан ИЛИ невалиден (не директория) — endpoint возвращает 404** (как будто API нет). - Имена файлов — только **basename** (защита от path traversal). - Файл читается из `TEST_INPUT_DIR/`; если нет → 404. ## Изменения ### `site/routes/api_bp.py` - `import os` добавлен. - Глобальные `TEST_INPUT_DIR = os.environ.get("TEST_INPUT_DIR", "").strip()` и `_TEST_API_ENABLED = bool(TEST_INPUT_DIR) and os.path.isdir(TEST_INPUT_DIR)`. - Endpoint `POST /api/process_names`: - 404 если `_TEST_API_ENABLED` false; - читает JSON `{"files": [...]}`; - basename + проверка файла в TEST_INPUT_DIR; - `obfuscate_files(all_files, llm_client=LLMClient())`; - возврат ZIP (`send_file`). ### `site/app.py` - `VERSION = "0.0.45"`. ## Проверка - Без `TEST_INPUT_DIR` → 404. - С валидной папкой → 200, ZIP `['t.md', 'mapping.csv']`. - Path traversal (`../../etc/passwd`) → 404 «файл не найден». - Невалидная папка → 404. - `py_compile` — OK. ## Примечание - Endpoint тестовый. На проде включать только при необходимости (задать TEST_INPUT_DIR). - В тесте локально LLM недоступен (нет ключа) — «LLM NER failed» ожидаемо; на проде ключ есть.