LegalOSS133.3ktracked
Agent Skills & Plugins · Legal Research & Search · Retrieval & RAG · Legal AI & NLP

RegioBuildMaintained

NikitaMok/RegioBuild

ML-powered service for comparing regional construction requirements across constituent entities of the Russian Federation (RNGP/TSN and the applicable federal layer), with citations to normative clauses

GitHub

RegioBuild

English version

CI Deploy Python 3.11

Различия в региональных нормативах градостроительного проектирования в Российской Федерации практически невозможно проанализировать вручную быстро, так как у каждого субъекта Российской Федерации своя структура актов, плотность регулирования и т.д. Федеральные нормы задают базовый уровень, но региональная специфика часто диктует свои требования.

Мне знакома эта проблематика, так как за моими плечами разносторонний юридический бэкграунд.
Даже у опытного юриста сравнение региональных требований между двумя субъектами Российской Федерации по одному типу объекта может занимать часы или дни, но и это не гарантирует 100% точности, ведь так легко пропустить существенный пункт.

RegioBuild формирует перечень требований для конкретного субъекта Российской Федерации при проектировании объекта капитального строительства, анализирует РНГП/ТСН и федеральный фон, а также умеет сравнивать данные требования между двумя субъектами Российской Федерации.

Telegram (https://t.me/regiobuild_bot) в данном случае лишь демонстрационный канал.
Ядро продукта — HTTP API (/info, /compare, /api/v1/*, /health, /metrics).
Внешние системы подключаются независимо от мессенджера.


Ограничения использования

RegioBuild — справочный инструмент, а не юридическая консультация.
Полученные ответы не заменяют проектную документацию, заключение юриста и самостоятельную проверку актуальности требований нормативных правовых актов на момент запроса.
Муниципальные ПЗЗ в базу сервиса не включены, поэтому на сегодняшний день их нужно проверять отдельно.
Подробнее можно ознакомиться здесь: docs/LEGAL_DISCLAIMER.md.


Приветственный интерфейс

Старт бота Обязательно к прочтению

Примеры запросов

Запрос № 1 — сравнение: гостиница (Новосибирская область ↔ Московская область)

Сравнение: гостиница, часть 1 Сравнение: гостиница, часть 2 Сравнение: гостиница, часть 3

Запрос № 2 — автомойка (Свердловская область)

Автомойка в Свердловской области Федеральный блок и дисклеймер

Интерфейс обратной связи

Обратная связь в боте

Режимы работы

  1. Обзор требований по выбранному субъекту Российской Федерации — региональные и федеральные требования к объекту с указанием пунктов.
  2. Сравнение требований между двумя субъектами Российской Федерации — различия и совпадения в региональных и федеральных требованиях к объекту с указанием пунктов.

Нормативный корпус

ISO 3166-2 Субъект
RU-MOS Московская область
RU-KDA Краснодарский край
RU-SVE Свердловская область
RU-NVS Новосибирская область
RU-TA Республика Татарстан
RU-FED Федеральный слой: ГрК РФ, СП 42, 123-ФЗ, СанПиН

База сервиса ограничена этим корпусом. ПЗЗ и муниципальный уровень вне скоупа. Архитектура расширяема: новый субъект подключается конфигами и данными — docs/ADDING_REGION.md.


Архитектура решения

Кратко:

  1. Ingestion — PDF/HTML/DOCX → иерархический разбор → чанки в Qdrant.
  2. Retrieval — нормализация типа объекта, multi-query, hybrid dense + BM25, ранжирование с приоритетом надёжных секций и curated-якорей.
  3. Grounding — пункт из ответа модели попадает в выдачу только при совпадении с retrieved-фрагментами; при слабой опоре — отказ.
  4. Агент — LangGraph: normalize → understand → retrieve → classify → rerank → LLM → format/guardrail.
  5. LLM — GigaChat Ultra (GigaChat-3-Ultra), temperature=0.0.

Подробнее: docs/ARCHITECTURE.md.

Оценка retrieval (якоря section_number, не юридическая верность ответа):

Набор Hit rate
data/eval/golden.jsonl 100/100
data/eval/blind_paraphrase.jsonl 60/60

Программный интерфейс (API)

Коммерческий контур — /api/v1 с X-API-Key и машиночитаемыми цитатами (документ, пункт, уровень, дата сверки). Спецификация: GET /docs.

python -m scripts.manage_api_keys create --name "ООО Клиент" --daily-limit 200

curl -X POST https://<host>/api/v1/info \
  -H "Content-Type: application/json" \
  -H "X-API-Key: rgb_…" \
  -d '{"region": "RU-KDA", "object_type": "автомойка"}'

Пример клиента: examples/api_client.py.


Производственная среда и мониторинг

Прод: VPS Aeza (Москва), nginx, API, Telegram-бот, Prometheus, Grafana Cloud (remote_write), Alertmanager, еженедельный бэкап. Выкладка — GitHub Actions → SSH → scripts/deploy_remote.sh + scripts/verify_deploy.sh (verify OK).

Prometheus Targets

Prometheus Graph

Grafana Cloud Explore

GitHub Actions

Нагрузка VPS Aeza

Использование GigaChat Ultra


Технологический стек

Слой Состав
Язык Python 3.11
Backend FastAPI
Клиент aiogram 3
Оркестрация LangGraph
Embeddings fastembed (ONNX)
Vector DB Qdrant Cloud
Классификация scikit-learn (TF-IDF + LogisticRegression)
LLM GigaChat Ultra
Данные SQLAlchemy, Alembic
Observability Prometheus, Grafana Cloud, Sentry
Инфраструктура Docker, GitHub Actions, VPS Aeza

Локальный запуск и разработка

RegioBuild/
  app/           # agent, api, bot, ingestion, vectorstore, llm
  config/        # regions.yaml, documents.yaml, object_categories.yaml
  docs/
  migrations/
  scripts/
  tests/
  data/          # curated; raw/processed/structured — локально
python -m venv venv
venv\Scripts\activate          # Linux/Mac: source venv/bin/activate
pip install -r requirements.txt
copy .env.example .env         # Linux/Mac: cp .env.example .env

В .env — учётные данные GigaChat, при необходимости токен бота и параметры Qdrant.

alembic upgrade head
python -m scripts.parse_pdf_docs   # при наличии data/raw/docs
python -m scripts.index_qdrant

uvicorn app.api.main:app --reload
python -m app.bot.main

Прод: docker compose -f docker-compose.prod.yml --env-file .env up -d --build.

pytest
python -m scripts.eval_golden

© Никита Мокин / Nikita Mokin
GitHub · LinkedIn

Все права защищены.
Копирование репозитория, воспроизведение существенных частей решения и использование кода либо продукта в коммерческих целях без предварительного письменного согласия правообладателя запрещены.
Размещение исходников на GitHub предназначено для демонстрации компетенций и не предоставляет лицензии на их коммерческую эксплуатацию.