feat(ingest+поиск): приём ZIP через интерфейс, регистронезависимый поиск, чистка очереди
- Загрузка архива (§4.1): POST /ingest распаковывает ZIP, дораспознаёт и догружает прайсы в базу (append). Виджет в админке. Кэш эмбеддингов справочника (dict_emb.npy) — догрузка считает только новый файл, эмбеддинги best-effort с откатом на fuzzy при сбое Gemini. - Поиск по name_norm (lowercase): «УЗИ» и «узи» дают одинаковый результат — SQLite LIKE не сворачивает регистр для кириллицы. - Фильтр названий: код-мнемоники («МОЗО.15») больше не попадают в очередь. - /stats считается из базы — цифры на дашборде обновляются после загрузки. - Деплой через Dockerfile (зависимости в образе, код монтируется томом). - ruff: ядро и весь репозиторий проходят проверку. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,3 +25,12 @@ target-version = "py312"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B"] # стиль, ошибки, импорты, апгрейды, баги
|
||||
|
||||
[tool.ruff.lint.flake8-bugbear]
|
||||
# Вызовы-маркеры FastAPI в значениях по умолчанию — идиома фреймворка, не баг B008.
|
||||
extend-immutable-calls = ["fastapi.File", "fastapi.Query", "fastapi.Depends"]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
# Разведочные скрипты этапа разбора форматов — черновики, не часть продукта.
|
||||
"scripts/proof/*" = ["E402", "E501", "E741", "B007"]
|
||||
"scripts/gen_fixtures.py" = ["E402", "E501", "E741"]
|
||||
|
||||
Reference in New Issue
Block a user