AAYMA
RU
Войти

la(rp)-peace

Агент сравнивает документы «до» и «после» реорганизации (Word/PDF/Excel): находит реорганизованные, упразднённые и созданные подразделения, потерю и…

Рабочий MVP
Команда «la(rp)-peace» 13💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: la(rp)-peace
Кейс HackAlem.ai: Спецтрек — Казахтелеком
Стадия: Рабочий MVP

Задача кейса: Агент, сравнивающий документы оргструктуры до и после реорганизации

Суть

Агент сравнивает документы «до» и «после» реорганизации (Word/PDF/Excel): находит реорганизованные, упразднённые и созданные подразделения, потерю и дублирование функций, конфликты интересов и пересечение зон ответственности, к каждому выводу прикладывает цитату.

Как устроено

Документы разбираются в деревья пунктов с якорями для цитат. LLM извлекает подразделения, иерархию и функции, затем функции «до» сопоставляются с «после»: сначала кандидаты по эмбеддингам, потом модель проверяет совпадение, учитываются правопреемники. Попарное сравнение функций выявляет дублирование и несовместимые пары действий (исполняет/контролирует). Код проверяет, что цитата дословно входит в пункт, иначе вывод отбрасывается. UI: визуальное сравнение, Word-diff, панель доказательств, подтверждение/отклонение выводов, чат по документам, PDF.

Ключевые решения

  • эмбеддинг-поиск кандидатов + LLM-верификация
  • парсинг docx/pdf/xlsx в деревья пунктов
  • проверка цитат кодом
  • пороги схожести
  • word diff
  • human-in-the-loop review

Особенности

Отсутствие функции подтверждается не пустым результатом, а областью поиска: порог и ближайшие кандидаты со схожестью. Цитаты проверяет код, а не модель. Процесс разработки: 116 коммитов, методология по этапам, агентные гайды (CLAUDE.md, AGENTS.md).

Стек

Python · FastAPI · SQLite · SvelteKit · TypeScript · uv · ruff · mypy · pytest

Модели

OpenAI (chat + embeddings)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-977e5070-la-rp--peace.

README

README.md

la(rp)-peace — агент анализа реорганизации

Проблема

При реорганизации подразделений кто-то должен вручную сопоставить старые и новые оргструктуры, положения о подразделениях и приложения к приказам — и убедиться, что по дороге ничего не сломалось. Типичные риски:

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

Документы большие, формулировки меняются, пункты перенумеровываются. Вручную это долго и легко пропустить.

Как это решает софт

Пользователь загружает документ «до» и документ «после», нажимает «Начать анализ» и через несколько минут получает список того, что изменилось, и список рисков — с цитатой из пункта документа под каждым выводом. Дальше — по пунктам задачи.

1. Какие подразделения реорганизованы, сохранились, созданы

Агент читает оба документа, извлекает из них подразделения и должности (с иерархией) и сопоставляет два списка. Если приказ прямо говорит «образовать… путём слияния», «преобразовать», «упразднить» — статус берётся из приказа, и этот пункт становится источником. Если прямого указания нет — по совпадению названия и содержания. Для каждого упразднённого подразделения определяется правопреемник — это нужно для следующего шага.

Что видит пользователь: экран «Изменения → Визуал» — слева подразделения «до», справа «после», между ними карточки: сохранено / преобразовано / упразднено / создано.

2. Потеря функций

Агент извлекает из каждого положения, что закреплено за каждым подразделением: функции, обязанности, права, с условиями и сроками. Затем для каждой функции «до» ищет её в «после» — по смыслу, а не по номеру пункта и не по совпадению слов: сначала ближайшие кандидаты по эмбеддингам, потом модель проверяет, та ли это функция. Если она нашлась у того же подразделения или его правопреемника — сохранена; у другого — перенесена; не нашлась ни у кого — потеря.

Отсутствие доказывается не пустотой, а тем, где искали: к каждой потере приложена область поиска, порог и ближайшие кандидаты со сходством. Удалённый пункт сам по себе потерей не считается — функцию могли переписать другими словами или перенести в другой документ.

Что видит пользователь: в «Визуале» потеря помечена «∅ не закреплено»; на странице «Анализ → Потеря функций» — карточка с цепочкой: была у такого-то (цитата) → подразделение упразднено (цитата из приказа) → у правопреемника не найдена (что проверено).

3. Дублирование и конфликт интересов

Функции подразделений в «после» сравниваются между собой попарно.

  • Дублирование — две функции разных подразделений похожи выше порога, и модель подтверждает, что это одна и та же работа без разграничения ролей.
  • Конфликт интересов — у одного подразделения две функции над одним объектом из несовместимой пары: исполняет / контролирует, закупает / принимает, готовит отчёт / утверждает отчёт. Отдельно отмечается случай, когда контрольная функция переехала из независимого подразделения к исполнителю.
  • Пересечение зон — разные подразделения, один объект, разные действия (согласует / устанавливает сроки), порядок взаимодействия не описан.

Что видит пользователь: страница «Анализ» с подстраницами Потеря функций · Дублирование · Конфликт интересов · Пересечение зон. У каждой находки — уверенность (high / medium / low) и её основание.

4. Источник под каждым выводом

Каждая находка содержит хотя бы одну цитату с указанием документа и пункта. Цитата должна дословно входить в текст этого пункта — это проверяет код, а не модель; находка без подтверждённой цитаты отбрасывается. В цепочке доказательств факты (с цитатами) отделены от рассуждений агента, и рассуждения так и помечены.

Что видит пользователь: клик по карточке открывает панель доказательств: вывод → как получен → шаги с цитатами → что проверено → уверенность. Клик по цитате открывает «Изменения → Word» — две редакции рядом, как diff, — на нужном пункте с подсветкой.

5. Аналитическое заключение

Что видит пользователь: сверху каждой страницы результатов — сводка: изменённые блоки и счётчики по типам (сохранено, перенесено, потеряно, дублирование, конфликт…), кнопка «Показать полную аналитику» с полным списком выводов. У каждого вывода — «Подтвердить» / «Отклонить»: выводы рекомендательные, решение принимает человек, отметки сохраняются и считаются в сводке («Проверено сотрудником: N из M»). «Скачать PDF» — печатная версия. В «Чате» можно спросить «Что изменилось?», «Какие функции потеряны?» — агент отвечает только по пунктам загруженных документов, со ссылками; если ответа в них нет, говорит об этом.

Опционально

  • Соответствие внешним требованиям. На экране загрузки есть зона «НПА и регулирующие документы». Загруженные документы попадают в блок «Нормативная база» панели доказательств и используются только если пользователь их загрузил — агент не ходит за законами сам.
  • Сравнение с другими операторами. Зона «Документы других операторов» — их структуры сопоставляются с преобразованными и созданными подразделениями тем же механизмом.
  • Рекомендации по перераспределению функций — в текущем объёме не делаются; выводы агента — это список рисков с доказательствами, а не готовое решение.

Запуск

Нужны uv, Node.js 20+ и ключ OpenAI.

cp .env.example .env            # OPENAI_API_KEY, OPENAI_MODEL
uv sync
uv run uvicorn la_rp_peace.api.app:create_app --factory --reload   # :8000, /docs

Всё одной командой — соберёт интерфейс и отдаст его вместе с API на :8000:

uv run python -m la_rp_peace.serve

Принимаются Word, PDF, Excel. База — data/larp.sqlite3. Контрольные документы — test_data/, снимок базы с разобранными документами — snapshots/.

Через API:

curl -F set=before -F "file=@test_data/Положение_о_внутреннем_аудите_редакция_8_обезличено.docx" http://localhost:8000/api/documents
curl -F set=after  -F "file=@test_data/Положение_о_внутреннем_аудите_редакция_9_обезличено.docx" http://localhost:8000/api/documents
curl -X POST http://localhost:8000/api/comparisons -H 'Content-Type: application/json' -d '{"before_ids":[1],"after_ids":[2]}'
curl http://localhost:8000/api/comparisons/1          # status: done → result

Проверки

uv run ruff format . && uv run ruff check --fix . && uv run mypy . && uv run pytest -q
cd frontend && pnpm format && pnpm lint && pnpm check && pnpm test -- --run

Как устроено

SvelteKit (интерфейс) + FastAPI и SQLite (сервер) + OpenAI (модель и эмбеддинги). Этапы обработки по methodology/: разбор документа (ingestion/) → подразделения (entities/) → функции (activities/) → коллизии и каскад внутри документа (collisions/, cascade/) → сопоставление «до → после» (comparison/) → проверка цитат (sources.py, verification.py).

ТЗ и макеты — docs/spec/; устройство и контракт API — .agents/backend.md, .agents/frontend.md.

Команда

la(rp)-peace: Sula — интерфейс, Alim — бэкенд и данные, Marinadec — методология и анализ.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
116
Авторы
6
Файлы
332
Ветки
7

Авторы коммитов

alim 51ssarimov 32Marinadec-kk 15Marinadec-kk 10Alimzhan Kaiyrly 6Alimzhan Kaiyrly 2

История коммитов

  • 2026-09-23 17:53Merge remote-tracking branch 'origin/main' into feat/entity-extractionalim
  • 2026-09-23 17:53fix: concurrent collisions and cascade no longer clash on the embedding cachealim
  • 2026-09-23 17:53Update README to remove example and clarify launchAlimzhan Kaiyrly
  • 2026-09-23 17:51docs: mention the one-command serve in the READMEssarimov
  • 2026-09-23 17:50docs: rewrite README around the problem and the must-have featuresssarimov
  • 2026-09-23 17:50Merge origin/main into main: status screen runs the real before-after comparisonssarimov
  • 2026-09-23 17:48Merge remote-tracking branch 'origin/main'ssarimov
  • 2026-09-23 17:41feat: UI runs the before-after analysis and shows real results; chains resume after restartalim
Все коммиты (116)
  • 2026-09-23 17:35fix: stage 1 profile keeps low reasoning; later stages stay on nonealim
  • 2026-09-23 17:34fix: apply configured analysis verification concurrencyMarinadec-kk
  • 2026-09-23 17:31fix: allow the app's own origins in CORS so the served UI can uploadalim
  • 2026-09-23 17:30Merge remote-tracking branch 'origin/main' into feat/entity-extractionalim
  • 2026-09-23 17:30feat: one command builds the UI and serves it with the API on :8000alim
  • 2026-09-23 17:29docs: explain product journey and jury demo in Russian (#16)Alimzhan Kaiyrly
  • 2026-09-23 17:27Merge pull request #13 from BAITC-Hacks/feat/document-diffMarinadec-kk
  • 2026-09-23 17:26Merge pull request #14 from BAITC-Hacks/fix/frontend-parsing-recoveryMarinadec-kk
  • 2026-09-23 17:26Merge pull request #15 from BAITC-Hacks/feat/document-registriesMarinadec-kk
  • 2026-09-23 17:24feat(frontend): follow the analysis run on the status screenssarimov
  • 2026-09-23 17:23feat: connect document entity and activity registriesMarinadec-kk
  • 2026-09-23 17:23fix(frontend): restore uploads after reload and reject invalid comparisonsMarinadec-kk
  • 2026-09-23 17:19feat: add source-traceable document revision diff APIAlimzhan Kaiyrly
  • 2026-09-23 17:18perf: burst-parallel stages for about a minute per documentalim
  • 2026-09-23 17:15feat: stage 5.2 semantic before-after comparisonalim
  • 2026-09-23 17:10perf: verification batches run 6 at a time by defaultalim
  • 2026-09-23 17:07Merge remote-tracking branch 'origin/main' into feat/entity-extractionalim
  • 2026-09-23 17:07merge: stage 4.2 cascadealim
  • 2026-09-23 17:07merge: stage 4.1 collisionsalim
  • 2026-09-23 17:06perf: parallel blocks and verification batches, less noisealim
  • 2026-09-23 17:05feat(frontend): route the results screens on the demo fixturessarimov
  • 2026-09-23 17:04feat: stage 4.2 function cascade (groups, best candidate, LLM verification, findings, API)alim
  • 2026-09-23 17:03fix(frontend): align upload and document views with the prototype on phonesssarimov
  • 2026-09-23 17:03feat(frontend): add a print version and «Скачать PDF» on the summary and /comparessarimov
  • 2026-09-23 16:58feat: stage 4.1 function collisionsalim
  • 2026-09-23 16:57Merge branch 'Sula' into mainssarimov
  • 2026-09-23 16:55chore: share reproducible document processing database snapshot (#12)Alimzhan Kaiyrly
  • 2026-09-23 16:49feat(frontend): open a source in the Word view from the source panelssarimov
  • 2026-09-23 16:47feat(frontend): link the Word view and keep review marks on «Изменения»ssarimov
  • 2026-09-23 16:43feat: shared base for stages 4.1 and 4.2alim
  • 2026-09-23 16:41fix(frontend): wrap long file names instead of widening the pagessarimov
  • 2026-09-23 16:41feat(frontend): add the analysis page with sub-pages by finding typessarimov
  • 2026-09-23 16:41feat(frontend): keep the employee's review marks between visitsssarimov
  • 2026-09-23 16:41feat(frontend): add «Показать полную аналитику» with the page's full list of findingsssarimov
  • 2026-09-23 16:41feat(frontend): add the Word view comparing the texts of two documentsssarimov
  • 2026-09-23 16:34Merge pull request #11 from BAITC-Hacks/docs/semantic-version-comparisonMarinadec-kk
  • 2026-09-23 16:32docs: define semantic before-after comparison methodologyMarinadec-kk
  • 2026-09-23 16:32Merge remote-tracking branch 'origin/main' into feat/entity-extractionalim
  • 2026-09-23 16:30fix: mark a stage 3 re-run as running before queueing italim
  • 2026-09-23 16:25Merge remote-tracking branch 'origin/main' into feat/entity-extractionalim
  • 2026-09-23 16:24merge: stage 3 activities after stage 2 entitiesalim
  • 2026-09-23 16:23Merge branch 'Sula' into mainssarimov
  • 2026-09-23 16:21feat: give every entity a normalised categoryalim
  • 2026-09-23 16:19feat(frontend): wire upload, status and document pages into one flowssarimov
  • 2026-09-23 16:18Merge pull request #10 from BAITC-Hacks/docs/document-version-diffMarinadec-kk
  • 2026-09-23 16:18docs: define revision diff and consolidate methodologyMarinadec-kk
  • 2026-09-23 16:15feat: one activity record per entity with participation marks and block-level replacementalim
  • 2026-09-23 16:14feat: re-running stage 2 replaces block contributions and keeps entity idsalim
  • 2026-09-23 16:14docs: describe stage 2 re-run semanticsalim
  • 2026-09-23 16:09feat(frontend): follow document parsing on the new documents APIssarimov
  • 2026-09-23 16:09feat(frontend): start the analysis from the upload screenssarimov
  • 2026-09-23 16:09feat(frontend): add the document page with card, parsing issues and treessarimov
  • 2026-09-23 16:09feat(frontend): source panel with the quote in context and its place in the originalssarimov
  • 2026-09-23 16:09feat(frontend): add visual comparison and evidence panel componentsssarimov
  • 2026-09-23 16:09feat(frontend): add the demo result fixture from the visual mockupssarimov
  • 2026-09-23 16:09feat(frontend): add the processing status screenssarimov
  • 2026-09-23 16:09Merge pull request #9 from BAITC-Hacks/docs/function-collisionsMarinadec-kk
  • 2026-09-23 16:08docs: define function collision detection methodologyMarinadec-kk
  • 2026-09-23 16:06docs: describe stage 2 entity extraction and its endpointsalim
  • 2026-09-23 16:06feat: extract organisational entities after parsing (stage 2)alim
  • 2026-09-23 16:06fix: harden stage 2 answer checks, registry merges and block sizingalim
  • 2026-09-23 16:05docs: add Russian WIP README for hackathon juryAlimzhan Kaiyrly
  • 2026-09-23 16:05docs: define single-document function cascade methodologyMarinadec-kk
  • 2026-09-23 16:02feat: extract activities of document entities (stage 3)alim
  • 2026-09-23 16:00Merge pull request #7 from BAITC-Hacks/docs/per-entity-activity-refinementsMarinadec-kk
  • 2026-09-23 15:59docs: refine per-entity activity extraction rulesMarinadec-kk
  • 2026-09-23 15:58docs: define single-document function cascade methodologyMarinadec-kk
  • 2026-09-23 15:53feat(frontend): add the app bar with a theme switcherssarimov
  • 2026-09-23 15:45refactor: share the chat model and chain post-parse stagesalim
  • 2026-09-23 15:39docs: hand off web app demo requirements to frontend (#6)Alimzhan Kaiyrly
  • 2026-09-23 15:33Merge pull request #5 from BAITC-Hacks/docs/activity-extraction-methodologyMarinadec-kk
  • 2026-09-23 15:32feat: feed numbering gaps back to the model and set its reasoning effortalim
  • 2026-09-23 15:32docs: define activity extraction methodologyMarinadec-kk
  • 2026-09-23 15:24feat(frontend): restyle the upload screen after the prototypessarimov
  • 2026-09-23 15:15docs: add prototype.html as the main site mockupssarimov
  • 2026-09-23 15:13fix: own the database schema in the backendalim
  • 2026-09-23 15:12docs: add product spec and UI mockup under docs/specssarimov
  • 2026-09-23 15:11feat: parse documents with an AI profile into the methodology schemaalim
  • 2026-09-23 15:11docs: describe the AI parsing pipeline and node-based citationsalim
  • 2026-09-23 15:08Merge pull request #4 from BAITC-Hacks/docs/entity-extraction-methodologyMarinadec-kk
  • 2026-09-23 15:07docs: define document-local entity extraction methodologyMarinadec-kk
  • 2026-09-23 15:06feat: scaffold SvelteKit frontend with document upload screenssarimov
  • 2026-09-23 15:06docs: align frontend spec with the scaffolded toolchainssarimov
  • 2026-09-23 14:51chore: drop Postgres, run on a single SQLite filealim
  • 2026-09-23 14:27Merge pull request #3 from BAITC-Hacks/docs/document-parsing-methodologyMarinadec-kk
  • 2026-09-23 14:22docs: define adaptive document parsing methodology and postgres schemaMarinadec-kk
  • 2026-09-23 14:22docs: adapt parsing methodology and schema to sqliteMarinadec-kk
  • 2026-09-23 14:22docs: capture document metadata and distinguish approval datesMarinadec-kk
  • 2026-09-23 14:19feat: trace citations to exact quotes with section pathsalim
  • 2026-09-23 14:09feat: rebuild PDF paragraphs from lines so PDF slices like DOCXalim
  • 2026-09-23 13:54docs: research organizational analysis approach (#2)Alimzhan Kaiyrly
  • 2026-09-23 13:50chore: add backend dependencies and postgres compose servicealim
  • 2026-09-23 13:50fix: keep logging from crashing on Cyrillic under a legacy code pagealim
  • 2026-09-23 13:50test: add organiser's regulation editions 8 and 9 as test dataalim
  • 2026-09-23 13:50feat: parse docx/pdf/xlsx into clause trees with citation anchorsalim
  • 2026-09-23 13:50feat: add document storage and upload APIalim
  • 2026-09-23 13:50docs: add backend spec, assign backend and methodology ownersalim
  • 2026-09-23 13:45docs: research organizational analysis approachalim
  • 2026-09-23 13:28feat: add structlog logging configurationalim
  • 2026-09-23 13:20docs: add frontend spec, assign frontend to Sula, register Svelte MCPalim
  • 2026-09-23 12:46docs: add agent ownership rules and CLAUDE.mdalim
  • 2026-09-23 12:18docs: add team git workflow (#1)Alimzhan Kaiyrly
  • 2026-09-23 12:08chore: set up uv/ruff/mypy/pytest environmentalim
  • 2026-09-23 12:05docs: restore mandatory uv and ruff toolchain rulesalim
  • 2026-09-23 12:03docs: retarget agent guidelines to this projectalim
  • 2026-09-23 12:00Add test line to READMEalim
  • 2026-09-23 11:48docs: add team name to READMEssarimov
  • 2026-09-23 11:24Add LABUBU heading to READMEMarinadec-kk
Структура репозитория (332 файлов)
.agents/backend.md
.agents/frontend.md
.agents/git-workflow.md
.agents/guidelines.md
.env.example
.gitignore
.mcp.json
.python-version
AGENTS.md
CLAUDE.md
README.md
docs/document-diff.md
docs/spec/README.md
docs/spec/prototype.html
docs/spec/tz_site.md
docs/spec/visual_compare.html
frontend/.env.example
frontend/.gitignore
frontend/.npmrc
frontend/.prettierignore
frontend/HANDOFF.md
frontend/README.md
frontend/docs/research/existing-solutions.md
frontend/eslint.config.js
frontend/package.json
frontend/pnpm-lock.yaml
frontend/prettier.config.js
frontend/src/app.html
frontend/src/lib/analysis/card.spec.ts
frontend/src/lib/analysis/card.ts
frontend/src/lib/analysis/confidence.spec.ts
frontend/src/lib/analysis/confidence.ts
frontend/src/lib/analysis/tabs.spec.ts
frontend/src/lib/analysis/tabs.ts
frontend/src/lib/api/analyses.ts
frontend/src/lib/api/client.ts
frontend/src/lib/api/comparisons.ts
frontend/src/lib/api/document.spec.ts
frontend/src/lib/api/document.ts
frontend/src/lib/api/errors.spec.ts
frontend/src/lib/api/errors.ts
frontend/src/lib/api/registries.ts
frontend/src/lib/api/sources.spec.ts
frontend/src/lib/api/sources.ts
frontend/src/lib/api/types.ts
frontend/src/lib/assets/favicon.svg
frontend/src/lib/components/FileRow.svelte
frontend/src/lib/components/FileRow.svelte.spec.ts
frontend/src/lib/components/UploadZone.svelte
frontend/src/lib/components/UploadZone.svelte.spec.ts
frontend/src/lib/components/analysis/AnalysisView.svelte
frontend/src/lib/components/analysis/AnalysisView.svelte.spec.ts
frontend/src/lib/components/analysis/FindingCard.svelte
frontend/src/lib/components/analysis/FindingCard.svelte.spec.ts
frontend/src/lib/components/analysis/query.spec.ts
frontend/src/lib/components/analysis/query.ts
frontend/src/lib/components/changes/ChangesView.svelte
frontend/src/lib/components/changes/ChangesView.svelte.spec.ts
frontend/src/lib/components/diff/WordDiff.svelte
frontend/src/lib/components/diff/WordDiff.svelte.spec.ts
frontend/src/lib/components/document/DocumentCard.svelte
frontend/src/lib/components/document/DocumentCard.svelte.spec.ts
frontend/src/lib/components/document/IssueList.svelte
frontend/src/lib/components/document/IssueList.svelte.spec.ts
frontend/src/lib/components/document/NodeTree.svelte
frontend/src/lib/components/document/NodeTree.svelte.spec.ts
frontend/src/lib/components/evidence/EvidenceDrawer.svelte
frontend/src/lib/components/evidence/EvidenceDrawer.svelte.spec.ts
frontend/src/lib/components/full/FullAnalytics.svelte
frontend/src/lib/components/full/FullAnalytics.svelte.spec.ts
frontend/src/lib/components/registry/ActivityRegistry.svelte
frontend/src/lib/components/registry/DocumentRegistries.svelte
frontend/src/lib/components/registry/EntityRegistry.svelte
frontend/src/lib/components/registry/ExtractionReport.svelte
frontend/src/lib/components/registry/RegistrySources.svelte
frontend/src/lib/components/results/ResultsHeader.svelte
frontend/src/lib/components/results/ResultsHeader.svelte.spec.ts
frontend/src/lib/components/results/ResultsShell.svelte
frontend/src/lib/components/results/ResultsShell.svelte.spec.ts
frontend/src/lib/components/results/ResultsShellHarness.svelte
frontend/src/lib/components/results/context.ts
frontend/src/lib/components/results/sections.spec.ts
frontend/src/lib/components/results/sections.ts
frontend/src/lib/components/shell/AppBar.svelte
frontend/src/lib/components/shell/ThemeToggle.svelte
frontend/src/lib/components/shell/ThemeToggle.svelte.spec.ts
frontend/src/lib/components/source/SourceChip.svelte
frontend/src/lib/components/source/SourceChip.svelte.spec.ts
frontend/src/lib/components/source/SourcePanel.svelte
frontend/src/lib/components/source/SourcePanel.svelte.spec.ts
frontend/src/lib/components/status/AgentLog.svelte
frontend/src/lib/components/status/AgentLog.svelte.spec.ts
frontend/src/lib/components/status/AnalysisProgress.svelte
frontend/src/lib/components/status/AnalysisProgress.svelte.spec.ts
frontend/src/lib/components/status/ProcessingStatus.svelte
frontend/src/lib/components/status/ProcessingStatus.svelte.spec.ts
frontend/src/lib/components/status/StageCell.svelte
frontend/src/lib/components/status/StageCell.svelte.spec.ts
frontend/src/lib/components/summary/SummaryPanel.svelte
frontend/src/lib/components/summary/SummaryPanel.svelte.spec.ts
frontend/src/lib/components/visual/BlockRow.svelte
frontend/src/lib/components/visual/ChangeCard.svelte
frontend/src/lib/components/visual/StatusBadge.svelte
frontend/src/lib/components/visual/VisualCompare.svelte
frontend/src/lib/components/visual/VisualCompare.svelte.spec.ts
frontend/src/lib/diff/align.spec.ts
frontend/src/lib/diff/align.ts
frontend/src/lib/diff/anchor.spec.ts
frontend/src/lib/diff/anchor.ts
frontend/src/lib/diff/view.spec.ts
frontend/src/lib/diff/view.svelte.ts
frontend/src/lib/diff/words.spec.ts
frontend/src/lib/diff/words.ts
frontend/src/lib/document/card.spec.ts
frontend/src/lib/document/card.ts
frontend/src/lib/document/issues.spec.ts
frontend/src/lib/document/issues.ts
frontend/src/lib/document/labels.ts
frontend/src/lib/document/tree-state.spec.ts
frontend/src/lib/document/tree-state.svelte.ts
frontend/src/lib/document/tree.spec.ts
frontend/src/lib/document/tree.ts
frontend/src/lib/document/view.spec.ts
frontend/src/lib/document/view.svelte.ts
frontend/src/lib/documents.ts
frontend/src/lib/fixtures/result.json
frontend/src/lib/fixtures/result.spec.ts
frontend/src/lib/registry/entities.ts
frontend/src/lib/registry/labels.ts
frontend/src/lib/registry/view.svelte.ts
frontend/src/lib/result/colors.css
frontend/src/lib/result/derive.spec.ts
frontend/src/lib/result/derive.ts
frontend/src/lib/result/labels.spec.ts
frontend/src/lib/result/labels.ts
frontend/src/lib/result/load.spec.ts
frontend/src/lib/result/load.ts
frontend/src/lib/result/review.spec.ts
frontend/src/lib/result/review.svelte.ts
frontend/src/lib/result/types.ts
frontend/src/lib/review/storage.spec.ts
frontend/src/lib/review/storage.ts
frontend/src/lib/source/highlight.spec.ts
frontend/src/lib/source/highlight.ts
frontend/src/lib/source/label.spec.ts
frontend/src/lib/source/label.ts
frontend/src/lib/source/location.spec.ts
frontend/src/lib/source/location.ts
frontend/src/lib/source/panel.spec.ts
frontend/src/lib/source/panel.svelte.ts
frontend/src/lib/status/analysis-run.spec.ts
frontend/src/lib/status/analysis-run.svelte.ts
frontend/src/lib/status/analysis-stages.spec.ts
frontend/src/lib/status/analysis-stages.ts
frontend/src/lib/status/current-run.ts
frontend/src/lib/status/from-upload.spec.ts
frontend/src/lib/status/from-upload.ts
frontend/src/lib/status/stages.spec.ts
frontend/src/lib/status/stages.ts
frontend/src/lib/theme.spec.ts
frontend/src/lib/theme.ts
frontend/src/lib/upload/current.ts
frontend/src/lib/upload/files.spec.ts
frontend/src/lib/upload/files.ts
frontend/src/lib/upload/launch.spec.ts
frontend/src/lib/upload/launch.ts
frontend/src/lib/upload/parsed.spec.ts
frontend/src/lib/upload/parsed.ts
frontend/src/lib/upload/persistence.spec.ts
frontend/src/lib/upload/persistence.ts
frontend/src/lib/upload/session.spec.ts
frontend/src/lib/upload/session.svelte.ts
frontend/src/lib/visual/arrows.spec.ts
frontend/src/lib/visual/arrows.ts
frontend/src/lib/visual/flash.ts
frontend/src/lib/visual/measure.ts
frontend/src/routes/+layout.svelte
frontend/src/routes/+layout.ts
frontend/src/routes/+page.svelte
frontend/src/routes/analyses/[id]/+layout.svelte
frontend/src/routes/analyses/[id]/+layout.ts
frontend/src/routes/analyses/[id]/+page.ts
frontend/src/routes/analyses/[id]/analysis/+page.svelte
frontend/src/routes/analyses/[id]/changes/+page.svelte
frontend/src/routes/compare/+page.svelte
frontend/src/routes/compare/+page.ts
frontend/src/routes/documents/+layout.svelte
frontend/src/routes/documents/[id]/+page.svelte
frontend/src/routes/documents/[id]/+page.ts
frontend/src/routes/layout.css
frontend/src/routes/page.svelte.spec.ts
frontend/src/routes/print.css
frontend/src/routes/status/+page.svelte
frontend/static/robots.txt
frontend/tsconfig.json
frontend/vite.config.ts
methodology/01_document_parsing.md
methodology/02_entity_extraction.md
methodology/03_activity_extraction.md
methodology/04_1_function_collisions.md
methodology/04_2_function_cascade.md
methodology/05_1_document_diff.md
methodology/05_2_semantic_comparison.md
pyproject.toml
snapshots/stages-1-3-wip/README.md
snapshots/stages-1-3-wip/larp.sqlite3
snapshots/stages-1-3-wip/manifest.json
src/la_rp_peace/__init__.py
src/la_rp_peace/activities/__init__.py
src/la_rp_peace/activities/answers.py
src/la_rp_peace/activities/checks.py
src/la_rp_peace/activities/extract.py
src/la_rp_peace/activities/pipeline.py
src/la_rp_peace/activities/prompt.py
src/la_rp_peace/activities/store.py
src/la_rp_peace/activities/verify.py
src/la_rp_peace/api/__init__.py
src/la_rp_peace/api/activities.py
src/la_rp_peace/api/app.py
src/la_rp_peace/api/cascade.py
src/la_rp_peace/api/collisions.py
src/la_rp_peace/api/comparisons.py
src/la_rp_peace/api/deps.py
src/la_rp_peace/api/document_diffs.py
src/la_rp_peace/api/documents.py
src/la_rp_peace/api/entities.py
src/la_rp_peace/api/schemas.py
src/la_rp_peace/api/sources.py
src/la_rp_peace/cascade/__init__.py
src/la_rp_peace/cascade/chains.py
src/la_rp_peace/cascade/findings.py
src/la_rp_peace/cascade/groups.py
src/la_rp_peace/cascade/links.py
src/la_rp_peace/cascade/matching.py
src/la_rp_peace/cascade/pipeline.py
src/la_rp_peace/cascade/prompt.py
src/la_rp_peace/cascade/store.py
src/la_rp_peace/collisions/__init__.py
src/la_rp_peace/collisions/checks.py
src/la_rp_peace/collisions/pairs.py
src/la_rp_peace/collisions/pipeline.py
src/la_rp_peace/collisions/prompt.py
src/la_rp_peace/collisions/sides.py
src/la_rp_peace/collisions/store.py
src/la_rp_peace/comparison/__init__.py
src/la_rp_peace/comparison/job.py
src/la_rp_peace/comparison/report.py
src/la_rp_peace/comparison/run.py
src/la_rp_peace/config.py
src/la_rp_peace/db.py
src/la_rp_peace/document_diff.py
src/la_rp_peace/embeddings.py
src/la_rp_peace/entities/__init__.py
src/la_rp_peace/entities/answers.py
src/la_rp_peace/entities/blocks.py
src/la_rp_peace/entities/checks.py
src/la_rp_peace/entities/consolidate.py
src/la_rp_peace/entities/conversation.py
src/la_rp_peace/entities/extract.py
src/la_rp_peace/entities/pipeline.py
src/la_rp_peace/entities/previous.py
src/la_rp_peace/entities/prompt.py
src/la_rp_peace/entities/registry.py
src/la_rp_peace/entities/verify.py
src/la_rp_peace/enums.py
src/la_rp_peace/ingestion/__init__.py
src/la_rp_peace/ingestion/analysis.py
src/la_rp_peace/ingestion/checks.py
src/la_rp_peace/ingestion/extract/__init__.py
src/la_rp_peace/ingestion/extract/docx.py
src/la_rp_peace/ingestion/extract/pdf.py
src/la_rp_peace/ingestion/extract/types.py
src/la_rp_peace/ingestion/extract/xlsx.py
src/la_rp_peace/ingestion/metadata.py
src/la_rp_peace/ingestion/numbering.py
src/la_rp_peace/ingestion/pipeline.py
src/la_rp_peace/ingestion/profile.py
src/la_rp_peace/ingestion/prompt.py
src/la_rp_peace/ingestion/tree.py
src/la_rp_peace/llm.py
src/la_rp_peace/logging_config.py
src/la_rp_peace/models.py
src/la_rp_peace/navigation.py
src/la_rp_peace/quotes.py
src/la_rp_peace/schema.sql
src/la_rp_peace/serve.py
src/la_rp_peace/sources.py
src/la_rp_peace/verification.py
test_data/converted/Положение_о_внутреннем_аудите_редакция_8_обезличено.pdf
test_data/converted/Положение_о_внутреннем_аудите_редакция_9_обезличено.pdf
test_data/Положение_о_внутреннем_аудите_редакция_8_обезличено.docx
test_data/Положение_о_внутреннем_аудите_редакция_9_обезличено.docx
tests/activity_script.py
tests/cascade_support.py
tests/collision_support.py
tests/conftest.py
tests/entities_support.py
tests/fixtures/profiles/metadata_ed8.json
tests/fixtures/profiles/metadata_ed9.json
tests/fixtures/profiles/parsing_profile.json
tests/test_activities.py
tests/test_activity_api.py
tests/test_activity_checks.py
tests/test_activity_schema.py
tests/test_analysis.py
tests/test_analysis_base.py
tests/test_api.py
tests/test_cascade.py
tests/test_cascade_api.py
tests/test_cascade_schema.py
tests/test_collision_api.py
tests/test_collision_checks.py
tests/test_collision_schema.py
tests/test_collisions.py
tests/test_db.py
tests/test_entity_api.py
tests/test_entity_blocks.py
tests/test_entity_category.py
tests/test_entity_pipeline.py
tests/test_entity_rerun.py
tests/test_entity_rules.py
tests/test_entity_schema.py
tests/test_extract.py
tests/test_live_openai.py
tests/test_llm.py
tests/test_logging_config.py
tests/test_metadata.py
tests/test_numbering.py
tests/test_profile.py
tests/test_schema.py
tests/test_tree.py
uv.lock
Ветки (7)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.