О проекте
Команда: 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.mdla(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 — методология и анализ.
Авторы коммитов
История коммитов
- 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
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.