klg-asutk-app/docs/ОТЧЁТ_ПРОВЕРКИ_РАБОТОСПОСОБНОСТИ.md
Yuriy 0150aba4f5 Consolidation: KLG ASUTK + PAPA integration
- 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>
2026-02-08 17:18:31 +03:00

98 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчёт о проверке работоспособности (КЛГ / модуль 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.113.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; в веб-интерфейсе для него отдельного раздела пока нет.