О проекте
Команда: AI-QAITU
Кейс HackAlem.ai: Спецтрек — Казахтелеком
Стадия: Доведённый продукт
Задача кейса: Агент, сравнивающий документы оргструктуры до и после реорганизации
Суть
Streamlit-приложение, сравнивающее комплекты документов оргструктуры «до» и «после» реорганизации: изменения подразделений, передача функций, возможные потери и дубли ответственности в матрице «функция × подразделение» с цитатами, плюс модуль метрик из отчётов.
Как устроено
Экстракторы разбирают DOCX, PDF с текстовым слоем, XLSX/XLSM с локаторами (абзац, страница, лист/строка), локальный анализатор сопоставляет функции по сходству формулировок, действий и объектов и строит матрицу с эвристическими баллами уверенности. Опциональный ИИ-режим OpenAI предлагает смысловые сопоставления, каждое проходит проверку источников (цитата буквально есть в документе) и независимую смысловую перепроверку вторым запросом; непроверенное исключается. Экспорт в краткий/полный PDF (ReportLab), Excel из девяти листов, JSON и Markdown.
Ключевые решения
- извлечение текста DOCX/PDF/XLSX
- эвристическое сопоставление функций
- матрица функция × подразделение
- двухэтапная верификация LLM-выводов
- ReportLab PDF-отчёты
Особенности
Жёсткая проверяемость ИИ: буквальная сверка цитат с источником и отдельный запрос-рецензент, самооценка модели ограничена 89%; тест test_no_causal_language запрещает причинные формулировки в модуле метрик.
Стек
Python · Streamlit · OpenAI API · ReportLab · Docker · GitHub Actions
Модели
gpt-5.4-mini
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-0dd0a2e7-ai-qaitu.
README
README.mdQAITU · карта ответственности
ИИ-агент для анализа организационной структуры и функций
HackAlem AI · спецтрек Казахтелеком · ветка mvp-nurtas
Возможности · Быстрый запуск · Демонстрация · Архитектура · Проверки
При реорганизации важно сохранить обязанности, разделить ответственность и не пропустить пересечения. QAITU сравнивает комплекты документов «до» и «после», показывает изменения в матрице функций и собирает заключение с цитатами, которые можно проверить.
Дополнительный модуль сопоставляет изменения структуры с показателями из периодических отчётов: как изменились сроки, объём проверок, нагрузка и качество.
Рабочий прототип. Выводы показывают возможные риски и требуют проверки сотрудником. Демо, реальные документы и наблюдаемые эффекты явно разделены.
Что умеет QAITU
| Вопрос сотрудника | Результат в приложении |
|---|---|
| Какие подразделения изменились? | Сохранённые, созданные, упразднённые и преобразованные подразделения с источниками |
| Куда перешли обязанности? | Сопоставление функций, включая передачу между отделами и разделение одной обязанности на несколько |
| Что могло потеряться? | Кандидаты на утрату закрепления с прежней формулировкой и рассмотренным новым контекстом |
| Где пересекается ответственность? | Возможные дубли и конфликты исполнения и независимого контроля |
| На чём основан вывод? | Документ, пункт или локатор, исходная цитата и идентификатор источника |
| Что передать руководителю? | Краткий или полный PDF, аналитический Excel, Markdown и JSON |
Форматы: DOCX · PDF с текстовым слоем · XLSX · XLSM. Можно загрузить несколько файлов в каждый комплект: положения, должностные инструкции, приказы и приложения.
Матрица «функция × подразделение»
Строка объединяет сопоставленные назначения одной функции. Колонки показывают подразделения до и после изменений. При выборе строки открываются обе редакции цитат и контекст, по которому определён ответственный.
Матрица показывает по 10 строк на странице. Кнопка «Развернуть» открывает большое окно с теми же фильтрами и отдельными страницами по 10 строк. Масштаб таблицы автоматически подстраивается под ширину и высоту окна, включая изменение его размера, чтобы текущая страница помещалась без прокрутки. После закрытия можно продолжить работу с отчётом.
| Сигнал | Как его читать |
|---|---|
| 🔵 Изменение | Назначение добавлено, передано или изменено |
| 🔴 Ответственный после не найден | В новом комплекте не найдено подходящего назначения; требуется проверка |
| 🟡 Несколько владельцев | Возможное пересечение; нужно сверить предмет, роль и область ответственности |
? | Владельца или назначение нельзя уверенно определить |
— | Подразделение отсутствует в перечне этой редакции |
Точка в ячейке отражает отсутствие найденного закрепления в загруженных документах. Повтор одной обязанности в положении и должностной инструкции сохраняет оба источника, но не создаёт второго исполнителя. Права, обязанности и запреты анализируются раздельно.
Почему такая оценка
У кандидатов на риск показаны балл, уровень уверенности и причины: сходство формулировок, действий и объектов, известность владельца, ограничения извлечения и полнота комплекта. В строках матрицы можно раскрыть оценку сопоставления обеих редакций.
| Балл | Уровень |
|---|---|
| 90–99% | Очень высокая |
| 70–89% | Высокая |
| 40–69% | Требует проверки |
| 0–39% | Слабый сигнал |
Это эвристические оценки, а не вероятность нарушения или тяжесть последствий. Оценка помогает выбрать порядок экспертной проверки; 100% и автоматического подтверждения нарушения нет. Слабые сигналы можно показать отдельным фильтром; полный экспорт их сохраняет.
Отметка Все необходимые документы «после» загружены — заявление пользователя, учитываемое при следующем анализе. Успешное чтение файлов само по себе не доказывает полноту комплекта. Эти оценки основного сравнения отличаются от уровней уверенности в связях с метриками.
Быстрый запуск
Понадобятся Python 3.10+, Git и доступ к репозиторию. Для локального демо ключ OpenAI не нужен. После обновления существующей установки повторите python -m pip install -r requirements.txt: PDF-экспорт использует добавленный ReportLab и включённые в проект кириллические шрифты.
git clone --branch mvp-nurtas https://github.com/BAITC-Hacks/hack-0dd0a2e7-ai-qaitu.git
cd hack-0dd0a2e7-ai-qaitu
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m streamlit run app.py
Откройте localhost:8501 или адрес, который выведет Streamlit. Нажмите «Запустить контрольный пример» в центре стартового экрана — этот пример всегда выполняется локально.
Windows · PowerShell
После клонирования репозитория выполните в его корне:
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m streamlit run app.py
Активация окружения не требуется. В дальнейших командах заменяйте python на .\.venv\Scripts\python.exe.
Docker · запуск с сохранением результатов метрик
docker build -t qaitu .
docker run --rm -p 8501:8501 \
-v qaitu-data:/app/data \
-v qaitu-runs:/app/runs \
qaitu
Образ использует Python 3.12. Именованные тома сохраняют базу знаний и результаты после остановки контейнера.
Для ИИ-режима передайте заранее заданные переменные окружения, добавив к docker run параметры --env OPENAI_API_KEY --env OPENAI_MODEL перед именем образа.
От документов к заключению
- В разделе «Структура и функции» загрузите комплекты «До изменений» и «После изменений». Порядок редакций задаёте вы.
- Выберите «Локальное сравнение» или «ИИ + локальное сравнение» и нажмите «Сравнить документы».
- Начните с результата сравнения и вопросов для проверки. Перейдите к структуре, матрице или ИИ-сравнению через навигацию над результатами; раскройте причины оценки выбранного кандидата.
- Откройте интересующий вывод и проверьте цитаты. Фильтры и страницы матрицы не сокращают полный экспорт.
- В разделе «Экспорт отчёта» выберите краткий или полный PDF, Excel либо JSON. Markdown доступен в блоке «Дополнительно · технический формат».
Для Word источник указывает абзац или строку таблицы, для PDF — физическую страницу, для Excel — лист и строку. Номер пункта сохраняется в тексте, если присутствует в извлечённом фрагменте.
Отчёт для чтения и анализа
| Формат | Что внутри |
|---|---|
| Краткий PDF | Сводка, изменения структуры, до 10 кандидатов с оценкой от 40%, до 8 передач и до 8 новых закреплений; до 5 принятых ИИ-сопоставлений |
| Полный PDF | Все кандидаты, включая слабые сигналы, передачи, новые закрепления и принятые ИИ-сопоставления; полная матрица и каталог источников в приложениях |
| Excel | Девять листов: Сводка, Изменения структуры, Риски, ИИ-сравнение, Матрица функций, Потери, Переданные функции, Новые функции и Источники |
| JSON / Markdown | Полный результат для обработки или текстовое заключение с источниками |
PDF и Excel формируются локально по нажатию кнопки, без нового обращения к API. Экранные фильтры не меняют состав экспорта; краткий PDF имеет собственную явно обозначенную выборку. Полный PDF может быть большим: он предназначен для подробной сверки. Кириллические шрифты DejaVu включены в проект с лицензией.
В Excel одна строка матрицы — назначение одному владельцу в одной редакции; общий ID связывает обе стороны. Уверенность записана числом с процентным форматом, пустая оценка означает отсутствие расчёта. Длинные записи разбиваются на части с сохранением текста; содержимое документов не превращается в формулы.
ИИ-раздел экспорта сохраняет статус, охват, результат смысловой перепроверки и доступные сведения о токенах. Неполные данные о расходе помечаются отдельно. Принятые сопоставления сопровождаются цитатами и адресами источников; краткий PDF показывает до двух цитат на вывод, полный PDF и Excel — все принятые цитаты. Если ИИ не запускался, это указано явно. Самооценка модели ограничена 89% и не становится объективной вероятностью после перепроверки.
ИИ, которому можно задать вопрос «откуда это?»
ИИ-проверка дополняет локальное сопоставление. Каждый публикуемый ИИ-вывод проходит два этапа:
- Проверка источников: идентификатор существует, цитата буквально присутствует в документе, стороны «до» и «после» указаны корректно.
- Независимая смысловая проверка: второй запрос оценивает, подтверждают ли источники предложенное утверждение с учётом контекста и ограничений.
Если проверка не завершилась, непроверенные ИИ-выводы исключаются. Локальный результат остаётся доступным. Интерфейс показывает статус, охват источников и доступные сведения о расходе токенов.
Подключить OpenAI
Создайте в корне проекта файл .streamlit/secrets.toml:
OPENAI_API_KEY = "<ваш API-ключ>"
OPENAI_MODEL = "gpt-5.4-mini"
Файл исключён из Git и Docker-контекста. Вместо него можно задать переменные окружения с теми же именами — они имеют приоритет. OPENAI_MODEL необязателен, .env автоматически не читается.
При наличии серверного ключа основной интерфейс выбирает ИИ-режим по умолчанию, но запрос начинается только по кнопке запуска. Центральная кнопка «Запустить контрольный пример» всегда запускает локальное демо; кнопка «Запустить контрольный пример» в боковой панели следует выбранному режиму. У модуля метрик свои отдельные действия ИИ.
ИИ-режим передаёт в OpenAI текстовые фрагменты и их контекст и расходует API-бюджет. Модельная перепроверка помогает отсеивать ошибки, но не гарантирует правильность всех трактовок.
Настройки, CLI, ограничения пакетов и значения статусов →
Эффективность и оптимизация
Второй рабочий раздел отвечает на следующий вопрос: что наблюдается в показателях после изменения структуры? Он запускается отдельно от сравнения положений.
| Раздел | Что можно сделать |
|---|---|
| Отчёты | Загрузить Excel, PDF или Word, проверить числа по источникам и подтвердить неоднозначные сопоставления |
| Дашборд метрик | Посмотреть временные ряды, даты реорганизаций и подтверждённую контрольную группу |
| Изменение → эффект | Изучить предполагаемый механизм, уверенность, альтернативные объяснения и вердикт оппонента |
| Прогноз vs факт | Проверить наступившие прогнозы по отчётам и увидеть определённые и неопределённые результаты |
| Рекомендации | Рассмотреть действия с основаниями и сохранить решение: принять, отклонить или обсудить |
| База знаний | Посмотреть накопленные наблюдения и число независимых случаев |
Модуль выбирает простое сравнение, поправку на тренд или разность разностей при подходящей контрольной группе. Объёмные показатели дополнительно нормализуются на FTE, если есть соответствующие данные. Периоды, пересекающие дату изменения, исключаются; проценты не суммируются, разные валюты не сравниваются без приведения.
Каждое число сохраняет источник. Связь функции с метрикой и выбор контрольной группы подтверждает человек. Уверенность рассчитывается правилами, а повторная загрузка одного случая не увеличивает число независимых наблюдений.
Отчёты можно загрузить через интерфейс или разместить в data/reports/. Неизвестные показатели поступают на подтверждение как custom_*. Для извлечения из свободного текста PDF/Word доступен отдельный ИИ-режим.
# Сгенерировать тестовые отчёты отдельно от интерфейса
python scripts/gen_synthetic_reports.py --output data/synthetic_reports
# Запустить только основное сравнение документов
METRICS_MODULE=off python -m streamlit run app.py
Наблюдаемое изменение показателя не устанавливает причину. Статистическая значимость не рассчитывается. Реальные и синтетические данные обрабатываются раздельно.
Этапы M1–M9, правила уверенности и ограничения модуля →
Демонстрация для жюри
Оба встроенных сценария доступны без собственных файлов и оплачиваемых запросов.
| Сценарий | Как запустить | Что показать |
|---|---|---|
| Структура и функции | Центральная кнопка «Запустить контрольный пример» на стартовом экране | Преобразование подразделения, передачу функций, возможную потерю, дубль и конфликт ролей; затем открыть подтверждающие цитаты |
| Эффективность | «Эффективность и оптимизация» → «ТЕСТОВЫЕ ДАННЫЕ» → «Запустить демо эффективности» | Рост задержки отчётности, изменение числа ИТ-проверок, найм как альтернативное объяснение, проверку прогнозов и накопление наблюдений |
Синтетика метрик содержит 9 Excel-файлов, 19 показателей и 2 052 значения за 2021–2023 годы. Эффекты заданы в генераторе. Экраны, графики и выгрузки имеют метку «ТЕСТОВЫЕ ДАННЫЕ»; они не описывают фактические результаты компании.
Для предоставленной организатором пары порядок иной: редакция 8, протокол №13, 2021 год → редакция 9, протокол №7, 2022 год. Эти документы загружаются отдельно. На показе удобно начать с двух новых департаментов, затем открыть перенос функции и источники обеих редакций.
Как устроено решение
flowchart TB
D["Документы до и после"] --> X["Текст и адресуемые источники"]
X --> L["Локальное сопоставление структуры и функций"]
X -. "Опциональный ИИ-режим" .-> A["OpenAI: смысловое сравнение"]
A --> V["Проверка цитат + независимый смысловой оппонент"]
L --> R["Матрица, заключение, PDF / Excel / Markdown / JSON"]
V --> R
L --> E["События с подтверждённой датой и механизмом"]
P["Периодические отчёты"] --> M["Извлечение чисел и сравнение периодов"]
E --> M
M --> K["Атрибуции, проверка гипотез, база знаний"]
K --> U["Дашборд и рекомендации для решения человеком"]
| Слой | Технологии и код |
|---|---|
| Интерфейс | Streamlit, Pandas, Altair · app.py, metrics_ui.py |
| Оформление | Дизайн из main, светлая и тёмная темы · presentation.py, workspace.css |
| Документы | pypdf, pdfplumber, python-docx, openpyxl · extractors.py, metrics_ingest.py |
| Основной анализ | Правила, сопоставление, объяснения уверенности · analyzer.py, confidence.py, models.py |
| ИИ-сравнение | OpenAI Responses API, строгие JSON-схемы, проверка цитат и смысла · ai_agent.py, ai_verifier.py |
| Метрики | Детерминированные расчёты и опциональные ИИ-этапы · metrics_analysis.py, metrics_llm.py |
| Экспорт | ReportLab, openpyxl, локальные шрифты · pdf_report.py, exports.py |
| Сохранение | SQLite и JSON по этапам · metrics_store.py |
| Проверки | unittest, Streamlit AppTest, контрольные сценарии · tests/ |
Проверки и воспроизводимость
Проверка объединённой версии с main (98201bd) — 23 сентября 2026 года. Внешние ИИ-вызовы в автоматических тестах заменены тестовыми ответами:
| Проверка | Результат |
|---|---|
| Автоматические тесты | 214 пройдено |
| Выбранные условия на реальных редакциях 8 и 9 | 19 из 19 |
| Извлечение синтетических метрик с проверкой ячеек | 2 052 из 2 052 |
| Браузерная проверка | До объединения проверены компьютер, мобильный экран, разделы модуля и скачивание отчёта; новый интерфейс дополнительно проверен через Streamlit AppTest |
Запустить автоматические тесты из корня проекта:
python -m unittest discover -s tests -v
Тесты API используют подменённые ответы и не выполняют оплачиваемые вызовы. Успешные проверки не являются оценкой полной точности на произвольном корпусе документов.
Проверить предоставленную пару положений
Исходные файлы в репозиторий не включены. Укажите свои пути:
python scripts/check_real_documents.py \
--before "/path/to/edition-8.docx" \
--after "/path/to/edition-9.docx"
Скрипт проверяет выбранные вручную условия, печатает PASS / FAIL и возвращает ненулевой код при несоответствии. Это ограниченная приёмочная выборка, а не официальный эталон всех выводов.
Границы прототипа
- Сложные исходники. Для PDF-сканов и графических оргсхем нужен предварительный OCR. Нетипичные таблицы, сокращения и сильные перефразировки могут требовать ручной сверки.
- Охват выводов. Агент анализирует предоставленные материалы. Непереданная инструкция или приложение могут изменить результат; совпадение цитаты само по себе не доказывает правильность трактовки.
- Метрики. Реальные периодические отчёты пока не предоставлены. Полный демонстрационный цикл проверен на явно обозначенной синтетике.
- Прогнозы. Сейчас доступны ручные и демонстрационные гипотезы. Автоматического таймлайна, симулятора и редактора правок в ядре нет. Ручные прогнозы исключаются из показателя точности агента.
- Внешняя оценка. Проверка законодательства и сравнение с другими операторами не реализованы; в исходном ТЗ это опциональные возможности.
Где находятся данные
Основное сравнение обрабатывает загруженные файлы в памяти сервера. Модуль метрик сохраняет извлечённые значения, цитаты и результаты, чтобы решения можно было проверить позже.
| Путь | Содержимое |
|---|---|
.streamlit/secrets.toml | Локальные настройки OpenAI |
data/reports/ | Реальные отчёты, которые пользователь размещает для обработки |
data/synthetic_reports/ | Сгенерированный тестовый комплект |
runs/<run_id>/metrics/ | Результаты этапов M1–M9, включая источники |
data/kb.sqlite | База наблюдений, подтверждённые механизмы и решения по рекомендациям |
Эти пути исключены из Git и Docker-контекста. Частный документ, помещённый в произвольную другую папку, автоматически от Git не защищён. При удалённом запуске данные обрабатываются и сохраняются на соответствующем сервере; в ИИ-режиме выбранные фрагменты также передаются в OpenAI. Ключи не включаются в отчёты.
Документация ветки
- Текущий прогресс и сохранённые рабочие материалы
- Настройка ИИ-сравнения, CLI и статусы обработки
- Модуль эффективности: этапы, расчёты и ограничения
- Повторный аудит метрик и план системы оценки распоряжения
- Исходная спецификация оформления
QAITU · от изменения в документе к проверяемому выводу
Авторы коммитов
История коммитов
- 2026-09-23 17:48Add local document linting and persistent review checklistCodex
- 2026-09-23 17:43ui: restore full control-example button labelNurtas
- 2026-09-23 17:34Merge latest main viewport fitting into mvp-nurtasNurtas
- 2026-09-23 17:32Merge main into mvp-nurtas with AI, metrics and complete exportsNurtas
- 2026-09-23 17:31Fit expanded matrix to viewport (#4)Askat
- 2026-09-23 17:31Fit expanded matrix to the available viewportCodex
- 2026-09-23 17:17Merge remote-tracking branch 'origin/main'Uban2
- 2026-09-23 17:17Add readable PDF reports and analytical Excel exportUban2
Все коммиты (41)
- 2026-09-23 17:09Focus report and expand matrix (#3)Askat
- 2026-09-23 17:08Present QAITU with a polished branch README and visual overviewNurtas
- 2026-09-23 17:08Integrate confidence review without adding report clutterCodex
- 2026-09-23 17:06Focus report composition and add expanded matrix overlayCodex
- 2026-09-23 17:01Save current progress and historical planning materialsNurtas
- 2026-09-23 16:58Add explainable confidence bands and evidence for review candidatesUban2
- 2026-09-23 16:48Keep metrics charts and controls comparable across periods and currenciesNurtas
- 2026-09-23 16:44Add the metrics workspace in the main design with source review and dashboardsNurtas
- 2026-09-23 16:44Add source-backed metrics analysis, forecast checks and learning registryNurtas
- 2026-09-23 16:38Guard the welcome demo from automatic API callsNurtas
- 2026-09-23 16:38Merge latest main integration checksNurtas
- 2026-09-23 16:28Merge main design for the metrics workspaceNurtas
- 2026-09-23 16:24Reconcile published design merge and preserve integration checksUban2
- 2026-09-23 16:21Fit semantic verification within the bounded response budgetNurtas
- 2026-09-23 16:20Merge latest report design and keep summary-first workflowUban2
- 2026-09-23 16:19Merge QAITU design and report navigation (#2)Askat
- 2026-09-23 16:19Tighten semantic review of titles and unchanged clausesNurtas
- 2026-09-23 16:17Merge latest main and preserve summary-first report flowCodex
- 2026-09-23 16:17Merge Liquid Glass design with current analysis fixesUban2
- 2026-09-23 16:15Merge latest main fixes for false losses and nonfunctional rowsNurtas
- 2026-09-23 16:15Show semantic AI comparisons, citations and review status in the appNurtas
- 2026-09-23 16:15Add evidence-checked OpenAI comparison and semantic verificationNurtas
- 2026-09-23 16:13Improve report navigation, table layout and reading hierarchyCodex
- 2026-09-23 15:54Reduce false losses and nonfunctional audit rowsUban2
- 2026-09-23 15:53Load OpenAI credentials from private server settingsNurtas
- 2026-09-23 15:46Refresh workspace with Liquid Glass-inspired designCodex
- 2026-09-23 15:29Merge MVP analysis and matrix interfaceUban2
- 2026-09-23 15:14Exclude staffing position titles from function assignmentsNurtas
- 2026-09-23 15:11Build traceable function ownership matrix and robust comparison MVPNurtas
- 2026-09-23 15:11Fix word-per-line PDF extraction and noisy findingsUban2
- 2026-09-23 15:04Keep local report available when LLM review failsUban2
- 2026-09-23 14:54Improve provision parsing and analytical summaryUban2
- 2026-09-23 14:36Add QAITU organization analysis MVPUban2
Структура репозитория (78 файлов)
.dockerignore .github/workflows/tests.yml .gitignore .streamlit/config.toml .streamlit/secrets.toml.example DEMO_SCENARIO.md Dockerfile FUNCTION_MATRIX_SPEC.md IMPLEMENTATION_PLAN.md MVP_ALEN_REVIEW.md PROGRESS.md README.md REQUIREMENTS_AUDIT.md TEST_DOCUMENTS_REVIEW.md app.py docs/AI_COMPARISON.md docs/METRICS_MODULE_IMPLEMENTATION.md docs/METRICS_REQUIREMENTS_AUDIT.md docs/assets/qaitu-banner.svg docs/superpowers/specs/2026-09-23-liquid-glass-design.md docs/superpowers/specs/2026-09-23-report-focus-design.md qaitu/__init__.py qaitu/ai_agent.py qaitu/ai_reviewer.py qaitu/ai_verifier.py qaitu/analyzer.py qaitu/confidence.py qaitu/config.py qaitu/demo.py qaitu/exports.py qaitu/extractors.py qaitu/llm/prompts/metrics/attribute.md qaitu/llm/prompts/metrics/challenge_attribution.md qaitu/llm/prompts/metrics/extract_metrics.md qaitu/llm/prompts/metrics/recommend.md qaitu/metrics_analysis.py qaitu/metrics_catalog.py qaitu/metrics_ingest.py qaitu/metrics_llm.py qaitu/metrics_models.py qaitu/metrics_service.py qaitu/metrics_store.py qaitu/metrics_ui.py qaitu/models.py qaitu/pdf_report.py qaitu/presentation.py qaitu/report.py qaitu/reporting.py qaitu/static/fonts/DejaVuSans-Bold.ttf qaitu/static/fonts/DejaVuSans.ttf qaitu/static/fonts/LICENSE.txt qaitu/static/matrix-fit.html qaitu/static/theme-bridge.html qaitu/static/workspace.css requirements.txt scripts/check_real_documents.py scripts/compare_with_ai.py scripts/gen_synthetic_reports.py tests/test_ai_agent.py tests/test_ai_reviewer.py tests/test_ai_verifier.py tests/test_analyzer.py tests/test_attribution.py tests/test_confidence.py tests/test_config.py tests/test_exports.py tests/test_extractors.py tests/test_ingestion.py tests/test_metrics_extraction.py tests/test_metrics_llm.py tests/test_metrics_review_regressions.py tests/test_metrics_service.py tests/test_metrics_ui.py tests/test_no_causal_language.py tests/test_regressions.py tests/test_reporting.py tests/test_synthetic_flag.py tests/test_ui.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.