98 lines
5.4 KiB
Markdown
98 lines
5.4 KiB
Markdown
# Отчёт о проверке работоспособности (КЛГ / модуль 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-клиент.
|
||
|
||
Если под «Lawer R» подразумевается юридический модуль, для полноценного использования из браузера нужна отдельная страница и вызовы `/api/v1/legal/*`.
|
||
|
||
---
|
||
|
||
## 4. Рекомендации
|
||
|
||
1. **Запуск без Docker**
|
||
Использовать `./run-without-docker.sh` (используется `requirements-sqlite.txt`).
|
||
Если `pip install` для `requirements-sqlite.txt` падает (например, на Python 3.14) — проверить доступность колес для Вашей версии Python или использовать 3.11–3.12.
|
||
|
||
2. **Отладочные логи в production**
|
||
В `frontend/src/api/client.ts` в ответах на `/aircraft` остаются `console.log`. Для prod их лучше отключить или вынести за флаг.
|
||
|
||
3. **Интерфейс для Legal**
|
||
Для работы с юрисдикциями, документами и ИИ-анализом через браузер имеет смысл добавить страницу «Юридические документы» с вызовами `/api/v1/legal/*`.
|
||
|
||
4. **Docker**
|
||
Поведение при `docker compose up` не менялось: по-прежнему используются `requirements.txt`, `DATABASE_URL` и `STORAGE_DIR` из `docker-compose.yml`.
|
||
|
||
---
|
||
|
||
## 5. Как перепроверить
|
||
|
||
```bash
|
||
# Без 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; в веб-интерфейсе для него отдельного раздела пока нет.
|