Files
drhider/History/2026-08-19-process-names-api.md
T

2.3 KiB

v0.0.45 — тестовый API process_names (обфускация по именам файлов) — 2026-08-19

Дата: 2026-08-19 Версия: 0.0.44 → 0.0.45


Суть

Тестовый endpoint для curl: обфускация файлов по ИМЕНАМ из локальной папки сервера (не таскать файлы каждый раз).

Использование

# На сервере задана папка 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/<basename>; если нет → 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» ожидаемо; на проде ключ есть.