- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites) - Remove localhost refs: openapi, inbox page - Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI - Add stub routes: knowledge/insights, recommendations, search, log-error - Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests - Fix inbox-server: ORDER BY created_at, package.json - Remove redundant app/api/inbox/files route (rewrites handle it) - knowledge/ in gitignore (large PDFs) Co-authored-by: Cursor <cursoragent@cursor.com>
5.4 KiB
Отчёт о проверке работоспособности (КЛГ / модуль Legal)
Дата: 2025
Проверено: приложение КЛГ (АСУ ТК), модуль юридических документов (Legal).
Примечание: в проекте нет компонента с названием «Lawer R» / «Lawyer R»; проверка выполнена для всего приложения и Legal-модуля.
1. Что проверено
| Область | Результат |
|---|---|
| Линтер (backend, frontend) | Ошибок нет |
| Синтаксис Python (main, db, config, legal) | Ошибок нет |
| Совместимость с SQLite | Исправлена сортировка в Legal (см. ниже) |
| Зависимости для запуска без Docker | Добавлен requirements-sqlite.txt (без psycopg2) |
2. Внесённые исправления
2.1. Legal API: совместимость с SQLite
Файл: backend/app/api/routes/legal.py
Проблема: В list_judicial_practices использовалось order_by(..., nulls_last()). В SQLite старше 3.30 NULLS LAST не поддерживается и запрос мог падать.
Исправление: Сортировка заменена на переносимый вариант:
order_by(decision_date.is_(None), decision_date.desc(), created_at.desc()) — строки с decision_date = NULL уходят в конец и при SQLite, и при PostgreSQL.
2.2. Запуск без Docker при отсутствии PostgreSQL
Проблема: pip install -r requirements.txt требует psycopg2-binary, для которого нужен pg_config (установленный PostgreSQL). На Mac без Homebrew/PostgreSQL установка падала.
Исправление:
- Добавлен
backend/requirements-sqlite.txtбезpsycopg2-binary. run-without-docker.shпереведён наrequirements-sqlite.txt.
Для запуска с PostgreSQL по-прежнему используется requirements.txt.
3. Модуль Legal (условно «Lawyer»)
3.1. Backend
- Роуты: юрисдикции, документы, перекрёстные ссылки, комментарии, судебная практика, ИИ-анализ (
/analyze,/documents/{id}/analyze). - Схемы и модели согласованы.
- При отсутствии
OPENAI_API_KEYагенты работают в режиме заглушек (эвристики, без вызовов LLM), падений нет. AnalysisRequestтребуетjurisdiction_id— проверка на стороне API есть.
3.2. Frontend
- Отдельной страницы «Legal» / «Юридические документы» в UI нет.
- Модуль доступен через:
- Swagger:
http://localhost:8000/docs→ секция legal; curlили иной HTTP-клиент.
- Swagger:
Если под «Lawer R» подразумевается юридический модуль, для полноценного использования из браузера нужна отдельная страница и вызовы /api/v1/legal/*.
4. Рекомендации
-
Запуск без Docker
Использовать./run-without-docker.sh(используетсяrequirements-sqlite.txt).
Еслиpip installдляrequirements-sqlite.txtпадает (например, на Python 3.14) — проверить доступность колес для Вашей версии Python или использовать 3.11–3.12. -
Отладочные логи в production
Вfrontend/src/api/client.tsв ответах на/aircraftостаютсяconsole.log. Для prod их лучше отключить или вынести за флаг. -
Интерфейс для Legal
Для работы с юрисдикциями, документами и ИИ-анализом через браузер имеет смысл добавить страницу «Юридические документы» с вызовами/api/v1/legal/*. -
Docker
Поведение приdocker compose upне менялось: по-прежнему используютсяrequirements.txt,DATABASE_URLиSTORAGE_DIRизdocker-compose.yml.
5. Как перепроверить
# Без Docker (SQLite)
./run-without-docker.sh
# В браузере: http://localhost:3000, токен dev
# Legal API (после запуска backend)
curl -s -H "Authorization: Bearer dev" http://localhost:8000/api/v1/legal/jurisdictions
curl -s http://localhost:8000/api/v1/health
6. Итог
- Критичных ошибок в коде и конфигурации не найдено.
- Устранены: несовместимость Legal с SQLite и зависимость запуска без Docker от установленного PostgreSQL.
- Модуль Legal на backend реализован и пригоден к использованию через API; в веб-интерфейсе для него отдельного раздела пока нет.