AAYMA
RU
Войти

OrgLens AI

Агент сравнения документов оргструктуры до и после реорганизации.

Рабочий MVP
Команда «Legion v2» 6💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Legion v2
Кейс HackAlem.ai: Спецтрек — Казахтелеком
Стадия: Рабочий MVP

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

Суть

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

Как устроено

Пара DOCX отправляется в FastAPI (POST /api/analyze). Детерминированный парсер извлекает подразделения и функции, модуль сравнения сопоставляет их: сначала резервирует точные назначения, различает виды полномочий и снижает число ложных передач. Модуль evidence привязывает каждый вывод к документу, пункту и цитате. Интерпретационные выводы получают статус NEEDS_REVIEW. Опциональный режим semantic через LLM-адаптер (Astra/OpenAI) распознаёт переименования и пишет аналитическую записку. UI на React/TS показывает граф, таблицы, панель оснований и журнал agent_trace.

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

  • DOCX parsing
  • deterministic unit/function matching
  • evidence grounding with citations
  • semantic LLM adapter
  • known-answer smoke tests
  • Playwright E2E

Особенности

У каждого вывода есть ссылка на документ, пункт и фрагмент, а неподтверждённый вывод никогда не показывается как подтверждённый. Детерминированный режим работает без ключа, и есть smoke-тест с известным ответом на сгенерированных синтетических DOCX. В интерфейсе честно разделены метки LIVE ANALYSIS и DEMO DATA. Работа шла по чекпоинтам с документированной проверкой.

Стек

Python · FastAPI · React · TypeScript · Vite · pytest · Playwright

Модели

OpenAI · Astra


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

README

README.md

OrgLens AI

Explainable Organizational Change Agent · HackAlem AI 2026 · спецтрек «Казахтелеком».

Текущие проверки интеграции и исправления сопоставления: checkpoint 5. Предыдущие проверки: checkpoint 4, checkpoint 3 и checkpoint 2.

Совместный запуск без API-ключа и документов организатора

Node.js 22.13+ и Python 3.12+. Команды Windows PowerShell выполняются из корня репозитория. Для первой установки зависимостей нужен интернет; после установки deterministic-анализ работает локально. .env, OpenAI-ключ и документы организатора для этого пути не нужны. Освободите порты 8000 и 5173. Backend и frontend запускаются в двух терминалах:

# Терминал 1
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-lock.txt
$env:ANALYSIS_MODE = 'deterministic'
.\.venv\Scripts\python.exe -m uvicorn backend.app:app --host 127.0.0.1 --port 8000
# Терминал 2
npm ci
$env:VITE_USE_MOCK = 'false'
$env:VITE_API_BASE_URL = ''
npm run dev

Откройте http://127.0.0.1:5173. По умолчанию пользовательские DOCX идут в настоящий backend через Vite proxy; OpenAI-ключ для детерминированного режима не нужен. Метка LIVE ANALYSIS означает запрос к backend, а DEMO DATA — локальный синтетический набор. Режим анализа deterministic / semantic показывается по ответу сервера; LIVE ANALYSIS сам по себе не означает использование LLM. «Загрузить демодокументы» доступно в обоих режимах. Для проверки сборки остановите dev-сервер и запустите npm run build, затем npm run preview -- --port 5173 при работающем backend.

Backend /api/health доступен на порту 8000 напрямую и через frontend /api/health. Секреты остаются только в окружении backend. .env.example содержит настройки обеих частей; backend загружает .env только с явным --env-file .env, Vite читает .env и .env.local (в браузер экспортируются только VITE_*).

Проверка на синтетических DOCX с известными изменениями

Оставьте оба сервера запущенными. В третьем терминале из корня репозитория:

(Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8000/api/health).Content
(Invoke-WebRequest -UseBasicParsing http://127.0.0.1:5173/api/health).Content
.\.venv\Scripts\python.exe -m scripts.smoke_known_answer

Оба health-запроса должны вернуть {"ok":true}, а smoke — завершиться с кодом 0 и строками PASS. Скрипт не запускает backend: по умолчанию обращается к уже работающему http://127.0.0.1:8000, создаёт синтетические DOCX и отправляет их настоящим HTTP-запросом с mode=deterministic. Ключ и документы организатора не используются; OpenAI не вызывается.

В ignored-каталоге artifacts/known-answer/ появятся known-before.docx, known-after.docx, expected.json и deterministic-response.json. Для проверки UI выберите эти два DOCX на странице 5173 и нажмите «Анализировать изменения». Должны отображаться LIVE ANALYSIS и «Детерминированный анализ», затем граф, функции, выводы, источники и Markdown-экспорт. Это настоящий backend на синтетических входных документах, не semantic-запуск Astra и не встроенный DEMO DATA.

Smoke проверяет заранее заданные изменения и точность ссылок на источники конкретного синтетического примера. Это проверка воспроизводимости, не измерение точности продукта. Переименование и заключение модели проверяются только отдельным платным --mode semantic; для обычного запуска этот параметр не нужен. Адрес и каталог можно изменить через --base-url и --output-dir.

GET /api/demo требует локальные контрольные DOCX и без них возвращает 404. Кнопка frontend «Загрузить демодокументы» использует собственный синтетический набор и работает без этих файлов и без backend.

Problem

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

Solution

Русскоязычная панель сравнения «до → после»: граф преобразований, таблица функций и карточки выводов. Для каждого существенного вывода можно открыть документ, пункт, фрагмент, объяснение и рекомендацию. Итоговое заключение собирает результаты в одном месте.

What is implemented

  • Выбор пары DOCX до 10 МБ каждый для API и однокнопочный синтетический демосценарий.
  • Раздельные LIVE ANALYSIS / DEMO DATA, ожидание ответа API и повторный запуск через «Сбросить демо».
  • Сводные показатели, граф подразделений, сопоставление функций и список выводов.
  • Панель оснований с явным статусом «Требует проверки» (NEEDS_REVIEW).
  • Аналитическое заключение со скачиванием в Markdown; состояния загрузки, недоступности API, некорректного ответа и пустого списка выводов.
  • Сохранённый синтетический demo и подключённый через адаптер настоящий FastAPI backend.
  • Предупреждения сервера и «Действия сервиса» после ответа; аналитическая записка с её статусом и основаниями в заключении и Markdown, если она пришла от CORE.

Architecture

React + TypeScript + Vite. UI получает общий объект анализа через сервисный адаптер; деморежим возвращает локальный JSON. API-адаптер отправляет POST /api/analyze с multipart/form-data: before_file и after_file.

Контракт результата: analysis_id, before_document, after_document, units, transformations, function_matches, findings, summary. Перед показом валидатор проверяет поля, ссылки на ID, основания и согласованность счётчиков. Правила адаптации ответа CORE к UI: API_CONTRACT.md; исходные типы — src/types.ts.

Frontend и автоматические проверки

Для запуска только frontend из корня проекта (API-анализ требует backend из инструкции выше; локальный DEMO DATA работает без него):

npm ci
npm run dev

Откройте локальный адрес из вывода Vite. Для полного набора проверок нужны установленный Google Chrome и Python-зависимости из requirements-lock.txt. Перед E2E остановите запущенный вручную backend на 8000 клавишами Ctrl+C: тесты поднимают собственный сервер. Освободите также порты 5175–5177. В отдельном PowerShell:

$env:VITE_USE_MOCK = 'false'
$env:VITE_API_BASE_URL = ''
$env:LIVE_SEMANTIC_SMOKE = '0'
npm test
npm run build
npm run test:e2e

npm test проверяет адаптер и оба формата данных. E2E использует установленный Google Chrome: порты 5175 (локальное synthetic demo), 5176 (ответы и ошибки API с перехватом запросов) и 5177 (production build + настоящий CORE без перехвата). Live-тест использует локальные DOCX из data/, а при их отсутствии создаёт синтетические DOCX внутри репозитория и отправляет их в настоящий backend. Это проверка интеграции, не качества на документах организаторов. Тесты запускают собственный backend из .venv на 8000 в режиме deterministic; перед запуском освободите этот порт.

Перед E2E выполните npm run build с VITE_USE_MOCK=false либо без этой переменной и с пустым VITE_API_BASE_URL. Тестовые frontend-порты должны быть свободны. Playwright хранит временные профили внутри artifacts/tmp, результаты — в test-results и playwright-report.

По умолчанию включён реальный API. Для автономного mock-режима можно создать .env.local:

VITE_USE_MOCK=true

Реальный API используется при VITE_USE_MOCK=false или отсутствии этой переменной. Vite dev/preview перенаправляет /api на http://127.0.0.1:8000; при отдельном адресе сервера задайте VITE_API_BASE_URL, например http://localhost:8000. Сервер должен разрешать запросы с адреса frontend через CORS либо быть доступен за общим origin. После изменения переменных перезапустите Vite; для готовой сборки выполните npm run build заново. Секреты в VITE_* не хранятся: эти значения попадают в клиентскую сборку.

Demo

«Загрузить демодокументы» → «Анализировать изменения» → этапы обработки → «Обзор изменений», «Сравнение функций», «Риски и выводы» → открыть основание → раздел «Заключение» → «Сформировать заключение» → «Скачать заключение». Для повторения нажмите «Сбросить демо». Подготовленное demo доступно и в API-режиме; его выбор не отправляет запрос на сервер.

Для live-показа выберите два DOCX вместо демодокументов. До ответа показано ожидание без вымышленных процентов и стадий; после ответа «Действия сервиса» показывает распознанные завершённые действия из agent_trace. Это журнал действий, не поток прогресса и не chain-of-thought. При сбое можно явно перейти к DEMO DATA, не меняя сборку.

Сценарий на 2–3 минуты · Резервный показ · Ответы жюри · Текст для сдачи.

Data

Все данные, названия документов и цитаты в демосценарии синтетические. Это не документы Казахтелекома. Сюжет: 3 подразделения становятся 4; «Цифровое развитие» разделено на «ИТ» и «Цифровые продукты», «Внутренний контроль» переименован в «Риски и комплаенс», «Эксплуатация сети» сохранена. Набор содержит 5 передач функций, 1 возможную потерю, 2 дублирования и 1 потенциальный конфликт.

В mock-режиме выбранные пользователем файлы не разбираются и не отправляются на сервер; кнопка анализа для них отключена. Результат доступен после выбора «Загрузить демодокументы». Индикатор этапов имитирует работу агента только в этом сценарии. При анализе своих файлов в API-режиме показано ожидание ответа без вымышленных этапов.

Limitations

  • Реальные DOCX обрабатываются backend CORE. PDF/TXT/OCR не поддерживаются; UI согласован с ограничением 10 MiB.
  • Confidence в mock задан вручную и не является откалиброванной вероятностью.
  • VERIFIED в демо означает наличие подготовленных оснований в синтетическом наборе, а не независимую проверку реальных документов.
  • В live-анализе интерпретационные выводы и аналитическая записка CORE остаются NEEDS_REVIEW. Неполные основания отображаются с предупреждением; неподтверждённый вывод не превращается в подтверждённый.
  • Отсутствие функции в новой редакции и потенциальный конфликт требуют экспертной проверки: NEEDS_REVIEW. Нельзя считать отсутствие найденной цитаты доказательством отсутствия функции.
  • Backend в режиме semantic формирует заключение модели с источниками (summary.analytical_note). Frontend показывает и экспортирует его вместе со статусом и основаниями; непосредственно LLM он не вызывает. Это не юридическое заключение.
  • Аутентификация, серверное хранение и производственная обработка конфиденциальных документов не реализованы.

Backend CORE — запуск, анализ и evidence lock

Backend MVP для HackAlem AI 2026, спецтрек Казахтелеком. Сравнивает два DOCX и возвращает структурированный JSON с подразделениями, функциями, отношениями и точными источниками.

Быстрый запуск backend (Windows PowerShell, Python 3.12+)

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-lock.txt
$env:ANALYSIS_MODE = 'deterministic'
.\.venv\Scripts\python.exe -m uvicorn backend.app:app --host 127.0.0.1 --port 8000

Swagger: http://127.0.0.1:8000/docs. Машиночитаемый контракт: http://127.0.0.1:8000/openapi.json.

requirements-lock.txt фиксирует проверенное окружение, включая тестовые зависимости. Диапазоны прямых зависимостей находятся в requirements.txt и requirements-dev.txt.

DOCX → JSON через CLI

После успешного scripts.smoke_known_answer можно повторно обработать созданную им пару через CLI. Для самого CLI работающий HTTP-сервер не нужен:

.\.venv\Scripts\python.exe -m backend.cli artifacts\known-answer\known-before.docx artifacts\known-answer\known-after.docx --mode deterministic --output artifacts\known-answer\cli-comparison.json

CLI принимает любые два DOCX, а не только контрольные редакции. artifacts/, входные DOCX и .env исключены из Git. Сохраняемый JSON содержит исходные фрагменты; он остаётся локальным. В репозитории нет копий документов или готового ответа на контрольный dataset.

Документы организатора в data/ — необязательные локальные входные данные для отдельных проверок: одна редакция *_8_*.docx и одна *_9_*.docx. Не копируйте их в Git. Их отсутствие не мешает запуску приложения и проверке smoke_known_answer.

Режимы анализа

По умолчанию deterministic: работает без ключа и сети, извлекает явные перечни подразделений и функции из контекста обязанностей, ищет точные и близкие текстовые соответствия. FUNCTION, RIGHT, PROHIBITION различаются; запреты наследуются вложенными пунктами. При неоднозначном назначении функции ownership_status=NEEDS_REVIEW.

semantic использует официальный OpenAI SDK, Responses API и строгий JSON schema. Модель предлагает переименования, разделения, объединения, переносы, изменения функций, риски и аналитическое заключение. Python принимает только существующие ID объектов и источников с правильной стороны сравнения; цитаты и номера пунктов модель не генерирует. Инструкции внутри документов считаются данными. Источник: установленный SDK openai.resources.responses.responses.Responses.parse.

Для семантического режима задайте OPENAI_API_KEY и OPENAI_MODEL=gpt-6-astra в локальном .env либо окружении процесса сервера. Не передавайте ключ через API, CLI-аргумент или Git. .env.example — образец без секретов. Установленное окружение имеет приоритет над .env.

# Сначала заполните OPENAI_API_KEY и OPENAI_MODEL в локальном .env.
$env:ANALYSIS_MODE = 'semantic'
.\.venv\Scripts\python.exe -m uvicorn backend.app:app --env-file .env --host 127.0.0.1 --port 8000

Сначала проверьте доступ проекта минимальным запросом. Затем запустите полный анализ через HTTP (обе команды платные, выполняются отдельно от тестов):

.\.venv\Scripts\python.exe -m scripts.smoke_openai --env-file .env
.\.venv\Scripts\python.exe -m scripts.smoke_api --env-file .env --mode semantic --output artifacts\api-semantic.json

Семантический запрос передаёт извлечённый текст документов в OpenAI с store=False. Для Astra используется reasoning.effort=low; модель возвращает строгую структуру с ID, а Python подставляет оригинальные цитаты. Доступ к модели зависит от API-проекта. Без ключа/модели возвращается HTTP 503; при ошибке нет скрытого переключения на другой режим или модель. CLI поддерживает --mode semantic --env-file .env.

Таймаут обращения к OpenAI — 120 секунд, автоматические повторы отключены. Frontend и HTTP smoke ждут до 150 секунд. Детерминированный путь остаётся доступен через ?mode=deterministic; /api/demo всегда использует его.

Отдельная платная проверка полного браузерного сценария с Astra и локальными DOCX организатора (после npm run build, порт backend 8000 должен быть свободен):

$env:LIVE_SEMANTIC_SMOKE = '1'
npx playwright test --project=live
Remove-Item Env:LIVE_SEMANTIC_SMOKE

Обычный npm run test:e2e использует детерминированный backend и не вызывает OpenAI. Семантическая проверка подтверждает загрузку DOCX, ответ модели, отображение результата/источников и экспорт заключения с NEEDS_REVIEW.

Evidence lock и границы MVP

Каждый источник содержит document, section, точный text и clause_id. Для проверки должны совпасть все четыре поля. Буквенные подпункты получают адрес вида 3.4.а из реального номера родителя и буквы в документе. У текста без номера section=null; такая ссылка не подтверждает вывод. Текст из ячеек таблиц читается в порядке XML документа. Текст изображений не распознаётся.

VERIFIED в MVP используется для наблюдаемого сохранения названия подразделения и точного сохранения функции с явным владельцем в обеих редакциях. Пустая, неверная или нерелевантная ссылка не даёт этот статус. Все интерпретационные findings и семантическое заключение остаются NEEDS_REVIEW, даже если их цитаты существуют: цитата сама по себе не доказывает перенос, потерю, конфликт или дублирование. Отсутствие соответствия в этих документах не доказывает прекращение функции в организации.

Счётчики изменений в summary отражают кандидатов, включая непроверенные. БВА учитывается как родительский блок, поэтому контрольные перечни дают 3 и 5 единиц, включая сам БВА. Извлечённые функции включают записи прав и запретов, помеченные kind. Неявные подразделения, свободная форма полномочий и сложная нумерация могут требовать ручной проверки; ограничения отражены в warnings. Не поддержанные форматы нумерации не реконструируются догадками.

Один запрос обрабатывается синхронно в рабочем потоке. Очереди, БД и внешнего поиска нет. agent_trace — список выполненных стадий в готовом ответе, не поток прогресса и не chain-of-thought. API не сохраняет загруженные документы и результаты постоянно.

Ограничения: 10 MiB на DOCX, 40 MiB суммарного распакованного содержимого на DOCX; семантический payload до 600 000 символов, без молчаливого усечения. Поддерживаются DOCX, не PDF/XLSX/OCR. Сервер MVP предназначен для локального запуска.

API и проверка

Подробный контракт и примеры ошибок: docs/API.md.

.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m pip check
.\.venv\Scripts\python.exe -m compileall -q backend tests
git diff --check

Дополнительная проверка с локальными документами организатора: требует обе редакции в data/; на чистом клоне без этих файлов её пропустите. Скрипт сам запускает временный сервер и завершает его:

.\.venv\Scripts\python.exe -m scripts.smoke_api --output artifacts\api-comparison.json

Синтетические DOCX создаются тестами в памяти. Тесты реальных редакций запускаются при наличии файлов в data/, иначе пропускаются. OpenAI SDK тестируется через локальный HTTP mock; это не подтверждает доступность модели или качество живого семантического анализа.

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
40
Авторы
3
Файлы
69
Ветки
18

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

DESKTOP-4H9TC39\MrProper 28Darkhan-05 8Darkhan-05 4

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

  • 2026-09-23 16:32docs: accept product7 rehearsal and record submission readinessDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:32merge: include verified deterministic and offline demo rehearsalDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:30docs: record deterministic and offline demo rehearsalDarkhan-05
  • 2026-09-23 16:28docs: add verified project timeline and delivery reportDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:23docs: record checkpoint5 tests and actual Astra browser verificationDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:19merge: checkpoint5 reserves repeated responsibility assignmentsDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:19merge: include product6 ownership and permission regression coverageDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:17core5: reserve exact assignments before matching repeated dutiesDESKTOP-4H9TC39\MrProper
Все коммиты (40)
  • 2026-09-23 16:14test: verify CORE4 ownership and permission regressionsDarkhan-05
  • 2026-09-23 16:09docs: record checkpoint4 verification and product5 regression resultDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:08Merge remote-tracking branch 'origin/codex/core-4' into codex/product-6Darkhan-05
  • 2026-09-23 16:07merge: include product5 deterministic robustness checksDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:04merge: finish core4 permission classification controlsDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:04core4: retain permission type in mixed responsibility listsDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:04test: add deterministic document robustness coverageDarkhan-05
  • 2026-09-23 16:00merge: core4 quality control fixesDESKTOP-4H9TC39\MrProper
  • 2026-09-23 16:00merge: checkpoint 4 includes verified startup and submission docsDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:59core4: reduce false transfers and execution conflict signalsDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:51docs: verify keyless startup and prepare submissionDarkhan-05
  • 2026-09-23 15:46docs: record checkpoint 3 verification and prepared live demoDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:39merge: core3 ownership and semantic validation fixesDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:39merge: checkpoint 3 combines core fixes and product readinessDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:38core3: validate semantic text and correct explicit function ownershipDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:37product: explain semantic errors and prepare Astra demoDarkhan-05
  • 2026-09-23 15:20merge: checkpoint 2 integrates live Astra and product UIDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:09merge: core2 live Astra backendDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:06docs: record verified live Astra results and PC2 handoffDESKTOP-4H9TC39\MrProper
  • 2026-09-23 15:00product2: harden live/demo fallbackDarkhan-05
  • 2026-09-23 15:00product2: connect UI to live backendDarkhan-05
  • 2026-09-23 14:56core2: harden Astra adapter and add explicit live smoke checksDESKTOP-4H9TC39\MrProper
  • 2026-09-23 14:22checkpoint 1: integrate core and productDESKTOP-4H9TC39\MrProper
  • 2026-09-23 14:14merge: integrate core and product checkpoint 1DESKTOP-4H9TC39\MrProper
  • 2026-09-23 14:01merge: checkpoint 1 coreDESKTOP-4H9TC39\MrProper
  • 2026-09-23 13:54product: add complete organizational analysis demo flowDarkhan-05
  • 2026-09-23 13:52core: add grounded comparison and semantic adapterDESKTOP-4H9TC39\MrProper
  • 2026-09-23 13:52core: expose analysis API and document golden pathDESKTOP-4H9TC39\MrProper
  • 2026-09-23 13:46product: add findings and evidence drawerDarkhan-05
  • 2026-09-23 13:44product: add transformation graph and analysis contractDarkhan-05
  • 2026-09-23 13:43core: add deterministic DOCX parserDESKTOP-4H9TC39\MrProper
  • 2026-09-23 13:27product: scaffold React UIDarkhan-05
Структура репозитория (69 файлов)
.env.example
.gitignore
API_CONTRACT.md
DEMO.md
DEMO_BACKUP.md
JUDGES_QA.md
README.md
SUBMISSION.md
backend/__init__.py
backend/app.py
backend/cli.py
backend/comparison.py
backend/evidence.py
backend/extraction.py
backend/parser.py
backend/pipeline.py
backend/schemas.py
backend/semantic.py
docs/API.md
docs/CHECKPOINT2.md
docs/CHECKPOINT3.md
docs/CHECKPOINT4.md
docs/CHECKPOINT5.md
docs/CORE2_HANDOFF.md
docs/CORE3_HANDOFF.md
docs/CORE4_HANDOFF.md
docs/CORE5_HANDOFF.md
docs/DEMO_REHEARSAL_REVIEW.md
docs/PRODUCT5_REVIEW.md
docs/PROGRESS_REPORT_2026-09-23.md
index.html
package-lock.json
package.json
playwright.config.ts
public/favicon.svg
requirements-dev.txt
requirements-lock.txt
requirements.txt
scripts/smoke_api.py
scripts/smoke_known_answer.py
scripts/smoke_openai.py
src/App.tsx
src/components/AnalysisMetadata.tsx
src/components/Conclusion.tsx
src/components/EvidenceDrawer.tsx
src/components/TransformationGraph.css
src/components/TransformationGraph.tsx
src/data/demo.json
src/main.tsx
src/services/analysis.test.ts
src/services/analysis.ts
src/styles.css
src/types.ts
src/vite-env.d.ts
tests/api.spec.ts
tests/conftest.py
tests/demo.spec.ts
tests/live.spec.ts
tests/robustness.spec.ts
tests/test_analysis.py
tests/test_api.py
tests/test_docx_parser.py
tests/test_evidence.py
tests/test_known_answer.py
tests/test_ownership.py
tests/test_quality_controls.py
tests/test_semantic.py
tsconfig.json
vite.config.ts
Ветки (18)

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

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

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