klg-asutk-app/docs/#U041e#U0422#U0427#U0401#U0422_#U041f#U0420#U041e#U0412#U0415#U0420#U041a#U0418_#U0420#U0410#U0411#U041e#U0422#U041e#U0421#U041f#U041e#U0421#U041e#U0411#U041d#U041e#U0421#U0422#U0418.md

5.4 KiB
Raw Blame History

Отчёт о проверке работоспособности (КЛГ / модуль Legal)

Дата: 2025
Проверено: приложение КЛГ (АСУ ТК), модуль юридических документов (Legal).
Примечание: в проекте нет компонента с названием «Lawer R» / «Lawyer R»; проверка выполнена для всего приложения и Legal-модуля.


1. Что проверено

Область Результат
Линтер (backend, frontend) Ошибок нет
Синтаксис Python (main, db, config, legal) Ошибок нет
Совместимость с SQLite Исправлена сортировка в Legal (см. ниже)
Зависимости для запуска без Docker Добавлен requirements-sqlite.txt (без psycopg2)

2. Внесённые исправления

Файл: 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.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. Как перепроверить

# Без 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; в веб-интерфейсе для него отдельного раздела пока нет.