RedRobin
Прототип сравнения двух редакций DOCX-документа об оргструктуре: какие подразделения и функции были, появились, исчезли, дублируются и где возможен…
О проекте
Команда: RedRobin
Кейс HackAlem.ai: Спецтрек — Казахтелеком
Стадия: Рабочий MVP
Задача кейса: Агент, сравнивающий документы оргструктуры до и после реорганизации
Суть
Прототип сравнения двух редакций DOCX-документа об оргструктуре: какие подразделения и функции были, появились, исчезли, дублируются и где возможен конфликт ответственности, со ссылками на пункты документа и подсветкой.
Как устроено
Пользователь загружает DOCX «до» и «после». Бэкенд парсит пункты и таблицы (docx_parser, clause_segmenter), извлекает сущности, сопоставляет пункты (matcher), анализирует риски и проверяет доказательства (evidence_validator). Итог собирается в отчёт по категориям со ссылками на пункты. Демо работает в быстром режиме (simple_analyzer) без LLM; OpenAI-пайплайн с промптами и схемами подключается опционально. Работа идёт через асинхронные jobs API.
Ключевые решения
- DOCX parsing
- clause segmentation
- entity extraction
- clause matching
- evidence validation
- job queue
Особенности
Каждый вывод ссылается на конкретный пункт документа, по клику полный документ открывается с подсветкой фрагмента. Есть контрольный набор для тестов (control_set.json).
Стек
Python · FastAPI · Pydantic · vanilla JS · Docker · pytest
Модели
OpenAI (опционально)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-1b815292-redrobin.
README
README.mdRedRobin
Прототип ИИ-агента для сравнения двух редакций DOCX-документа: организационная структура, функции подразделений, исчезнувшие и новые обязанности, возможные дубли и конфликты ответственности.
Проект сделан для спец-трека Казахтелеком / HackAlem AI. Пользователь загружает документы "до" и "после", backend парсит DOCX, строит быстрый отчет и показывает выводы со ссылками на конкретные пункты. По клику открывается полный документ с подсветкой найденного фрагмента.
Что умеет
- загрузка двух DOCX-файлов;
- парсинг структуры документа, пунктов и таблиц;
- быстрый анализ редакций 8 и 9 без долгого AI-пайплайна;
- вывод категорий:
- какие подразделения были раньше;
- какие появились после реорганизации;
- какие функции остались;
- какие функции пропали;
- какие функции стали дублироваться;
- где может быть конфликт ответственности;
- подтверждающие источники;
- просмотр полного документа справа с подсветкой нужного пункта;
- FastAPI backend + vanilla frontend.
Быстрый запуск
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --host 127.0.0.1 --port 8000
Открыть в браузере:
http://127.0.0.1:8000
Настройки
Файл .env нужен только локально. Его нельзя загружать в GitHub.
Пример лежит в .env.example.
OPENAI_API_KEY=
OPENAI_MODEL=
AI_PARALLELISM=4
MAX_FILE_MB=20
JOB_TTL_MINUTES=60
ANALYSIS_TIMEOUT_SECONDS=300
Текущая демо-версия работает в быстром режиме и не требует OpenAI API для основного анализа.
API
GET /health- проверка сервера.POST /api/jobs- загрузка документовbefore_fileиafter_file.POST /api/jobs/{job_id}/analyze- запуск анализа.GET /api/jobs/{job_id}- статус и прогресс.GET /api/jobs/{job_id}/result- отчет.GET /api/jobs/{job_id}/documents/{role}- распарсенный документ для просмотра и подсветки.
Тесты
pytest
Структура
app/
api/ FastAPI routes
models/ Pydantic-модели API и домена
services/ загрузка, парсинг DOCX, быстрый анализ, отчет
static/ frontend CSS и JavaScript
templates/ HTML-страница приложения
docs/ технические материалы
materials/ исходные документы и извлеченные тексты
tests/ тесты
Безопасность
Не загружайте в репозиторий:
.env.venv.pytest_cache__pycache__*.pyc
.env.example загружать можно: в нем нет секретов.
Авторы коммитов
История коммитов
- 2026-09-23 17:59Simplify analysis pipeline and finalize demo flowmollikamollika
- 2026-09-23 17:55Simplify analysis pipeline and finalize demo flowmollikamollika
- 2026-09-23 17:49Simplify analysis pipeline and update demo UImollikamollika
- 2026-09-23 17:32Fix evidence validation fallback qualityKunslu Karayeva
- 2026-09-23 17:31:readmeztobaber
- 2026-09-23 17:27Update frontend and backend integrationmollikamollika
- 2026-09-23 16:28Restore verified RedRobin E2E configurationKunslu Karayeva
- 2026-09-23 16:23mKunslu Karayeva
Все коммиты (12)
- 2026-09-23 16:13vremztobaber
- 2026-09-23 16:12Implement RedRobin backend and AI pipelineKunslu Karayeva
- 2026-09-23 14:23dfdfztobaber
- 2026-09-23 14:01mKunslu Karayeva
Структура репозитория (59 файлов)
.dockerignore .env.example .gitignore .python-version Dockerfile README.md app/__init__.py app/ai/__init__.py app/ai/client.py app/ai/prompts.py app/ai/schemas.py app/api/__init__.py app/api/jobs.py app/config.py app/errors.py app/main.py app/models/__init__.py app/models/ai.py app/models/api.py app/models/domain.py app/services/__init__.py app/services/analysis_pipeline.py app/services/clause_segmenter.py app/services/docx_parser.py app/services/entity_extractor.py app/services/evidence_validator.py app/services/job_service.py app/services/matcher.py app/services/report_builder.py app/services/risk_analyzer.py app/services/simple_analyzer.py app/services/upload_service.py app/static/app.css app/static/app.js app/templates/result.html app/templates/status.html app/templates/upload.html docs/POSTMAN_TESTING.md docs/TECH_SPEC.md materials/HackAlem AI_ ИИ-агент «Анализ организационной структуры и функционала».txt materials/extracted/Положение_о_внутреннем_аудите_редакция_8_обезличено.docx.txt materials/extracted/Положение_о_внутреннем_аудите_редакция_9_обезличено.docx.txt materials/source/Положение_о_внутреннем_аудите_редакция_8_обезличено.docx materials/source/Положение_о_внутреннем_аудите_редакция_9_обезличено.docx pytest.ini requirements.txt ruff.toml tests/__init__.py tests/fixtures/control_set.json tests/test_ai_client.py tests/test_ai_evidence_stage.py tests/test_ai_schemas.py tests/test_api.py tests/test_control_set.py tests/test_evidence_validator.py tests/test_job_service.py tests/test_matcher.py tests/test_parser.py tests/test_ux.py
Ветки (3)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.