О проекте
Команда: TaldauAI
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Рабочий MVP
Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)
Суть
Локальный помощник секретаря: запись совещания превращается в транскрипт с говорящими, поручения и саммари. После ручной проверки выгружается DOCX, затем идёт контроль сроков и автонапоминания.
Как устроено
FastAPI сохраняет аудио и запускает ml.process_meeting в BackgroundTasks. Пайплайн: ffmpeg, затем локальный Mixed CTC ASR (альтернатива Whisper) с beam decoding, диаризация pyannote, опциональная коррекция KazLLM. Qwen 7B через Ollama извлекает поручения, ответственных, сроки и саммари в JSON v1. Адаптер валидирует JSON и связывает поручения с репликами через source_segment_ids. Результат пишется в PostgreSQL (SQLAlchemy/Alembic), затем в React-редакторе идёт ручная проверка с контролем ревизий (409 на устаревшую версию), экспорт DOCX и напоминания за 2 дня, в день срока и при просрочке.
Ключевые решения
- Mixed CTC ASR
- CTC beam decoding
- CTC adaptation (дообучение)
- faster-whisper
- pyannote diarization
- KazLLM correction
- Ollama
- urgency по сроку
- optimistic locking expected_revision
- python-docx
Особенности
Полностью локальный стек: собственный Mixed CTC для рус/каз речи с дообучением и beam-декодированием, сравнение с Whisper large-v3 и KazLLM. Поручения привязаны к исходным репликам, каждое требует ручного подтверждения. Если срок не прозвучал, модель его не выдумывает. README честно описывает ограничения.
Стек
Python · FastAPI · SQLAlchemy · Alembic · PostgreSQL · React · TypeScript · Vite · Tailwind · Radix UI · Docker Compose · ffmpeg
Модели
Qwen 7B (Ollama) · KazLLM · Whisper large-v3 · faster-whisper
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-54a50d6c-taldauai.
README
README.mdTaldauAI — протокол совещания с проверяемыми поручениями
Локальный прототип для секретаря: запись → транскрипт → говорящие → поручения и саммари → ручная проверка → DOCX → контроль сроков. Он помогает фиксировать поручения, ответственных и сроки, которые легко потерять при ручном протоколировании. Результат ИИ — черновик, а не утверждённый протокол.
Финальная интеграция 23.09.2026: объединены ML/backend, редактор с ручной проверкой, уведомления, новый интерфейс и лендинг фронтендера dc4cd0f. Лендинг открывается на /, рабочее приложение — на /app. Старые адреса перенаправляются. История проверок и ограничения приведены ниже.
Оглавление
- Возможности и статус требований
- Архитектура и данные
- Окружение и зависимости
- Установка и запуск
- Переменные окружения
- Настоящий сценарий приёмки
- Проверки и измерения
- Безопасность и ограничения
- Диагностика
- Сторонние компоненты и сдача
Возможности и статус требований
| Требование | Фактическое состояние |
|---|---|
| Русский, казахский, смешанная речь | Локальный Mixed CTC; Whisper — альтернатива. Есть синтетические языковые проверки; ошибки на естественной речи сохраняются |
| Диаризация | Локальная pyannote, метки голосов и ссылки на реплики. SPEAKER_00 — не установленная личность |
| Исполнитель, действие, срок | Qwen через локальную Ollama; возможны пропуски, дубли, ошибки имени и даты |
| Саммари | Тема, обсуждение, решения и открытые вопросы при наличии опоры в транскрипте; структурированные поручения |
| Ручная проверка | Переименование участников; исправление текста/срока; свободный ввод внешнего ответственного; добавление, удаление и отдельное подтверждение поручений |
| Экспорт | DOCX после подтверждения всех поручений. PDF не реализован; DOCX покрывает вариант «PDF/DOCX» |
| Контроль | Статусы исполнения, срочность, общий журнал автоматических локальных напоминаний |
| Ввод записи | Файл; микрофон; на /live — микрофон и звук выбранной вкладки при поддержке браузера. Обработка после остановки и отправки |
| Teams / Zoom / Google Meet | Бот-участник и прямая интеграция отсутствуют. Запись вкладки не является такой интеграцией |
| Дополнительные функции | СЭД, идентификация по тембру, email/мессенджер-рассылка отсутствуют |
Для новых автоматически извлечённых поручений реализована предварительная классификация срочности по сроку, а не по смыслу: до 2 дней включительно и просрочка — высокая, 3–7 дней — средняя, более 7 дней — низкая. Без даты используется средняя срочность без выдумывания срока. Расчёт выполняется на день обработки в TALDAU_TIMEZONE; результат остаётся на ручную проверку. Старые и вручную добавленные поручения не пересчитываются; после изменения даты секретарь проверяет срочность самостоятельно. Классификация по направлению не реализована.
При работающем backend напоминания создаются автоматически за два дня до срока, в день срока и отдельно при просрочке, только для подтверждённых незавершённых поручений. Интервал по умолчанию — 60 секунд; уникальность версии поручения и вида уведомления предотвращает повторы. /notifications — общий локальный журнал, фильтр по имени не является личным кабинетом или доставкой адресату. Сценарий персональной автоматической рассылки выполнен частично. Ручной /remind формирует текст, но не отправляет email.
Архитектура и данные
Браузер → React/Vite → /api → FastAPI
├─ аудио → backend/data/uploads/
├─ BackgroundTasks → Python ml.process_meeting
│ ffmpeg → Mixed CTC / Whisper → pyannote
│ → необязательная KazLLM → Qwen/Ollama → JSON
└─ SQLAlchemy → PostgreSQL
→ редактор / подтверждение / DOCX / уведомления
ML вызывается внутри процесса API, не отдельным HTTP-сервисом. Backend и ML устанавливаются в одно Python-окружение. Тяжёлые задачи последовательно проходят через внутрипроцессную блокировку. Запускайте один Uvicorn worker, без --reload. Это не долговечная очередь: после аварии незавершённая задача сама не возобновляется, запись нужно загрузить заново. Готовые результаты и правки остаются в PostgreSQL.
В БД хранятся совещания, путь к аудио, согласие, дата, участники, сегменты, поручения, саммари, предупреждения, исходный ML JSON и уведомления. Аудио находится в файловой системе. Схема создаётся миграциями Alembic; личный дамп и seed для реальной обработки не нужны.
Адаптер валидирует JSON v1, а не извлекает поля заново из прозы. Исходный ASR-текст и таймкоды сохраняются; source_segment_ids связывают поручения с репликами, warnings показывают ограничения. Полный ответ ML и его исходный needs_review хранятся отдельно от человеческого подтверждения: каждое новое поручение требует ручной проверки. suggested_name и assignment_quote сохраняются в сыром JSON, отдельного интерфейса для этих полей нет. При наличии KazLLM UI показывает suggested_text рядом с исходным текстом.
Результат сохраняется одной транзакцией. Исключение переводит совещание в failed; отсутствие модели не подменяется демоданными. Подтверждение требует ответственного и даты: если срок не прозвучал, секретарь должен уточнить его, модель не должна выдумывать дату.
Редактирование требует expected_revision, устаревшая версия получает 409. Сначала сохраняются правки, затем отдельно подтверждается новая версия. Изменение текста, исполнителя, срока, срочности или имени связанного участника снимает подтверждение. Отметка «Проверено» появляется после успешного ответа API; статус исполнения меняется отдельно.
Саммари проверяет дословные цитаты в сегментах, но совпадение цитаты не гарантирует правильность её толкования. При сбое генерации остаются отмеченные выдержки и предупреждение. Ручные изменения поручений не обновляют саммари автоматически. Из backend/ можно обновить его без повторного ASR командой ../.venv/bin/python -m app.refresh_summary MEETING_ID (PowerShell: ..\.venv\Scripts\python.exe -m app.refresh_summary MEETING_ID). Команда учитывает текущие поручения, сохраняет исходный ML JSON и проверяет версии перед записью.
Окружение и зависимости
Проверено: macOS 26.5.2 arm64, Apple M4 Pro, 24 GiB объединённой памяти, Python 3.11.15, Node 25.8.0, npm 11.11.0, ffmpeg 9.0.2, PostgreSQL 16. ASR/диаризация — TALDAU_DEVICE=cpu; Ollama управляет ускорением самостоятельно. Это характеристики проверенной машины, не минимальные требования. Пиковая память и минимальное железо не измерены. Windows, WSL2, Linux и CUDA в этой проверке не запускались.
Используйте Python 3.11. Для других версий отдельно проверяйте совместимость ML wheels. Установка FastAPI не доказывает совместимость torch/pyannote. Node 25 использован при проверке; полный прогон с другой версией не заявляется.
| Компонент | Зависимости |
|---|---|
| API / БД | FastAPI 0.115.6, Uvicorn 0.34.0, SQLAlchemy 2.0.44, Alembic 1.14.0, psycopg 3.3.2 |
| DOCX | python-docx 1.1.2 |
| ML | faster-whisper 1.2.1, pyannote.audio 4.0.7; torch/onnxruntime и другие транзитивные пакеты |
| UI | React 18, TypeScript 5.6, Vite 6, Tailwind 3, Radix UI, Lucide, React Router |
Источники версий: backend/requirements.txt, requirements-ml.txt, frontend/package.json, package-lock.json. npm ci использует lockfile. Python requirements не фиксируют все транзитивные версии: полная побитовая воспроизводимость окружения пока не обеспечена. requirements-training.txt нужен только для обучения, не для приёмки.
В Git: код, примеры конфигурации, миграции, тесты, синтетические WAV и отчёты. Отдельно: Python/Node, Docker/PostgreSQL, ffmpeg, Ollama, библиотеки и веса. Не коммитьте .venv, модели, исполняемые файлы Ollama, базу, .env, приватные записи или токены.
Измеренный местный размер .venv — около 1.2 GiB; обязательные ASR/диаризация — около 753 MiB; Qwen 7B — 4 683 087 332 байт. Это не полный расход установки: добавляются npm, Docker-образ/volume, кэши, временное WAV и записи. Общий минимум свободного места не измерен. Другие размеры и версии — MODELS.md.
Установка и запуск
- macOS — Terminal, zsh/bash: полный путь установки и запуска.
- Windows — PowerShell и отдельный вариант WSL2: без заявления о проверке Windows, с обнаруженными рисками совместимости.
- Модели, доступ и лицензии: подготовка весов до запуска.
Порядок: чистый клон → единая .venv в корне → зависимости → backend/.env → PostgreSQL → миграции → веса/Ollama → doctor → API → frontend → приёмка ниже. Для сдачи используйте объединённую ветку main.
docker compose up -d postgres поднимает только PostgreSQL. По умолчанию: БД 127.0.0.1:5433, API 127.0.0.1:8000, UI http://127.0.0.1:5173, Ollama 127.0.0.1:11434. Vite проксирует /api в backend. Swagger: http://127.0.0.1:8000/docs. Публичная deployed-версия не заявляется.
/api/health проверяет API и БД, не модели. ml.doctor проверяет наличие файлов/модулей/моделей Ollama, но не заменяет inference. Запущенный frontend также не доказывает работоспособность всего приложения.
Переменные окружения
backend/.env читает app.config; переменные процесса имеют приоритет. После изменения перезапустите API. Относительные пути ASR, диаризации и фикстуры в backend разрешаются от корня репозитория. Отдельный python -m ml не читает .env: передайте переменные и запускайте из корня либо используйте абсолютные пути. Корневой .env не является конфигурацией API.
| Параметр backend | По умолчанию в коде | Реальный запуск / назначение |
|---|---|---|
DATABASE_URL | postgresql+psycopg://postgres:postgres@localhost:5433/taldau | Согласовать с БД; это пример локальной учебной БД |
ASR_BACKEND | local_ml | local_ml |
LLM_BACKEND | local_ml | local_ml |
TALDAU_TIMEZONE | Asia/Almaty | Часовой пояс дат и напоминаний |
TALDAU_ASR_ENGINE | whisper в ML | mixed-ctc, как в примере .env |
TALDAU_ASR_MODEL | Не задан | Обязательно models/mixed-stt |
TALDAU_DIARIZATION_MODEL | Не задан | Обязательно models/speaker-diarization-community-1 |
TALDAU_LLM_MODEL | qwen2.5:7b | Локальная модель поручений и саммари |
TALDAU_SUMMARY_MODEL | Используется TALDAU_LLM_MODEL | Необязательно qwen2.5:14b, после установки |
TALDAU_KAZLLM_MODEL | Не задан | Необязательная коррекция; базовый запуск — отключено |
TALDAU_OLLAMA_URL | http://127.0.0.1:11434 | Только loopback HTTP, без облачного fallback |
TALDAU_DEVICE | cpu | cuda требует отдельной подготовки и проверки |
TALDAU_ML_RESULT_FIXTURE | Не задан | Не задавать: непустой путь имеет приоритет над настоящим ML |
TALDAU_REMINDERS_ENABLED | true | Автоматический локальный журнал |
TALDAU_REMINDERS_INTERVAL_SECONDS | 60 | Минимум 1 секунда |
TALDAU_CTC_BEAM_SIZE | 1 | Необязательный эксперимент 1–64; основной запуск — 1 |
LLM_BASE_URL, LLM_MODEL | http://localhost:11434/v1, qwen2.5:7b | Старый демонстрационный extractor, не замена TALDAU_* |
frontend/.env читает Vite отдельно; после изменений перезапустите Vite:
| Параметр | По умолчанию | Пример |
|---|---|---|
VITE_USE_MOCKS | Выключено, включается только строкой true | false для API-приёмки |
TALDAU_API_PROXY | http://127.0.0.1:8000 | Адрес API для dev proxy |
Переменные процесса Vite также могут перекрывать .env. TALDAU_DB_PORT относится к Compose: при смене порта измените и DATABASE_URL. Инструкции создают .env только при отсутствии и не перезаписывают существующие настройки.
Настоящий сценарий приёмки
- Откройте лендинг
http://127.0.0.1:5173и перейдите в приложение/app. Используйте React-приложение, не отдельные HTML-макеты с демоданными. - Создайте совещание, дата 23.09.2026. Подтвердите уведомление участников и согласие на запись/ИИ-обработку. Флажок фиксирует заявление оператора, а не заменяет реальное уведомление.
- Загрузите acceptance_mixed.wav, укажите 2 говорящих. Это синтетический вымышленный диалог из сценария.
- Дождитесь
done. Не перезапускайте API во время обработки. Приfailedизучите сообщение и журнал backend. - Проверьте транскрипт, таймкоды, говорящих, саммари, предупреждения и источники поручений. Метки голосов могут переставиться между запусками.
- Только теперь сравните с эталоном: два поручения — договор к 24.09.2026 и отчёт к 25.09.2026. Эталон не передаётся модели; дата и число участников — исходные метаданные, не готовые ответы.
- Проверьте имена по репликам. Исправьте участника, ответственного (можно внешний отдел), срок. Сохраните. Добавьте пропущенное поручение и удалите ошибочное/дублированное.
- Подтвердите каждое поручение отдельно. При ошибке API подтверждение не должно выглядеть сохранённым; после изменения требуется новая проверка.
- Скачайте DOCX, откройте и сравните с правками. До подтверждения всех поручений экспорт блокируется.
- Проверьте
/tasksи/notifications. Уведомления зависят от текущей даты. В отдельной тестовой БД можно создать подтверждённое тестовое поручение с сегодняшним/прошедшим сроком и дождаться интервала сканирования. - После завершения обработки остановите API через Ctrl+C и запустите той же командой. Обновите UI: результат, правки и DOCX должны сохраниться. Для проверки БД используйте
docker compose restart postgres, без удаления volume.
Одна смешанная запись не оценивает все языковые режимы. Отдельно проверьте русский, казахский и смешанный WAV с известным текстом; для полного языкового сценария нужны два голоса, поручение и срок в каждом. ML_EVALUATION.md содержит результаты пяти коротких синтетических ASR-примеров. Реальные демонстрационные записи анонимизируйте и не публикуйте без разрешения.
Проверки и измерения
Повторено при подготовке документации: 35 ML-тестов — passed, 0 skipped/failed; 9 backend-тестов — passed, 0 skipped/failed, включая PostgreSQL в случайной временной схеме. Alembic current: 20260923_0003 (head); check: изменений нет. Frontend 6990bba проверен в отдельной чистой копии: npm ci установил 292 пакета, build прошёл, lint — 0 ошибок, 2 предупреждения Fast Refresh. Это чистая копия кода на подготовленной машине, не чистая ОС.
Команды, реальные прогоны и границы доказательств: VALIDATION.md. API-тесты подменяют ML-ответ только внутри теста и не измеряют ASR. PostgreSQL-тесты создают/удаляют отдельную случайную схему; TEST_DATABASE_URL задаётся явно. Браузерная приёмка создаёт записи — используйте отдельную тестовую БД.
Сохранённые отчёты команды: 6/6 текстовых сценариев, 2/2 поручения и 4/4 преобладающих голоса. Последнее — сопоставление меток по четырём синтетическим репликам, не DER и не независимый holdout. Отчёт содержит прежнюю версию саммари. Два пилота адаптации CTC не улучшили Dev WER; приложение использует исходные веса. Добавление training-скриптов не означает улучшение модели.
Безопасность и ограничения
В реальном режиме аудио получает локальный backend; ffmpeg/ASR/pyannote работают локально. Ollama получает текст сегментов, метаданные и инструкции для извлечения/саммари, не исходное аудио. ML задаёт offline-режим Hugging Face, отключает телеметрию pyannote/ONNX Runtime и разрешает Ollama только на loopback без proxy/redirect. Интернет нужен для первоначальной установки. Для закрытого контура заранее подготовьте пакеты, Docker-образ, полные веса и повторите приёмку с отключённой внешней сетью. Полного сетевого аудита в этой проверке не было.
localhost внутри Docker/WSL — другая среда. Базовая конфигурация запускает API и Ollama на одном хосте, в Docker — только БД. Для WSL запускайте Ollama рядом с backend в той же среде. Не заменяйте её внешним облачным API.
Прототип не готов для чувствительных корпоративных данных без доработки: нет авторизации, ролей, TLS в приложении, прикладного шифрования записей/БД и полноценного аудита. Не публикуйте API/БД в интернете. backend/data/uploads, PostgreSQL и диагностические результаты требуют контроля доступа ОС. Удаление поручения реализовано; удаления совещания вместе с аудио через UI/API и автоматической политики хранения нет. Удаление поручения не удаляет исходную запись и сырой ML JSON.
Остаются ошибки ASR/диаризации, неопределённые имена, пропуски/дубли поручений, неоднозначные сроки и ошибки смысла саммари. CPU-обработка длинных записей может быть длительной. Нет долговечной очереди/восстановления, персональной доставки уведомлений, PDF, СЭД и бота видеоконференций. Windows/WSL, CUDA, полный автономный запуск без сети и масштабирование не подтверждены.
Диагностика
| Симптом | Действие |
|---|---|
| PostgreSQL недоступен | Docker запущен; из корня docker compose ps, docker compose exec postgres pg_isready -U postgres -d taldau; порт совпадает с URL |
| Занят 5433 | Другой TALDAU_DB_PORT и тот же порт в DATABASE_URL; не запускайте две БД на одном порту |
| Занят 8000 / 5173 | Остановите свой прежний процесс либо выберите другой порт; обновите proxy. --strictPort не даст Vite незаметно сменить порт |
| Неверный URL БД | Формат postgresql+psycopg://user:[скрыто]@host:port/database, правильное окружение и отсутствие старой переменной процесса |
| Нет таблиц | Из backend/ тем же Python: -m alembic upgrade head, затем current и check |
| Нет onnxruntime/torch/pyannote | Проверьте python -c "import sys; print(sys.executable)"; ML requirements должны стоять в окружении API |
| Нет ffmpeg | Установите системный ffmpeg; ffmpeg -version должен работать в терминале API |
| Не найдены веса | Doctor с backend config, правильный engine и полный каталог. Отдельный CLI не читает .env |
| Ollama / модель недоступна | ollama list, /api/tags, один ollama serve; заранее ollama pull qwen2.5:7b |
| Не хватает памяти | Остановите лишние ML-процессы, отключите необязательные KazLLM/14B, один worker, короткий WAV |
| Windows-путь / PowerShell / WSL | См. отдельную инструкцию; не переносите macOS .venv в Windows; Ollama в той же среде |
| CORS / UI не видит backend | Открывайте через Vite; проверьте /api, proxy и health. Не открывайте index.html напрямую |
| Подозрительно быстрый результат | Уберите фикстуру и stub, выключите VITE_USE_MOCKS=true, перезапустите API/Vite |
failed | Смотрите error_message и stderr API; исправьте причину, загрузите заново. Фикстура не является исправлением |
| Задача прервана перезапуском | Очередь не восстанавливается; повторно загрузите запись, не очищайте БД |
| DOCX заблокирован | done, заполненные исполнитель/дата, сохранение и отдельное подтверждение всех задач |
@/api не найден / маркеры конфликтов | Проверьте src/api.ts, Vite config и git status; согласованно завершите merge. Скрытие overlay ошибку не исправляет |
Остановка: дождитесь обработки, Ctrl+C у API/Vite, docker compose stop postgres из корня. Повторный запуск: PostgreSQL, Ollama, API, Vite. Не используйте docker compose down -v для остановки или ремонта — он удаляет данные.
Сторонние компоненты и сдача
Работа команды: интеграция, контракт/валидация, сроки, редактор/подтверждение, хранение, DOCX, локальные уведомления, запись и тесты. Речевые/языковые модели не обучены командой с нуля. Источники и лицензии — MODELS.md; библиотеки перечислены в зависимостях. UI использует Tailwind, Radix/shadcn-подход и Lucide; отдельные дизайн-макеты не заменяют приложение. Лицензия проекта не изменяет права на чужие веса, библиотеки, шаблоны и данные.
Эксперименты использовали Tim2190/kazakh-codeswitch-asr и ISSAI KSC2; атрибуция, разбиения и результаты — TRAINING.md. Эти датасеты не нужны для запуска. Синтетические тесты созданы командой через macOS TTS. Допуск синтетики в ТЗ не заменяет проверку прав распространения конкретных голосов/артефактов; перед передачей офлайн-комплекта проверьте их отдельно. Личные записи и протоколы из переписки в этой задаче не публиковались.
CASE_REQUIREMENTS.md: работоспособность 25, реализация 25, README/воспроизводимость 25, ценность 15, развитие 10. Проверки помогают оценить проект, но не обещают баллы. HACKATHON_PLAN.md — сохранённые командой требования, не замена актуальному регламенту. В переданном Положении нет основной части 5.2–5.8: формат дополнительных материалов, обязательность видео/презентации и условия доступа эксперта уточните у организаторов. Офлайн-комплект и видео можно предложить дополнительно.
Чек-лист сдачи:
- Актуальные frontend/backend/ML и документация согласованно объединены в
main, конфликтов нет. - Финальный коммит доступен в основном GitHub, эксперту открыт приватный репозиторий.
- Чистый клон запускается по инструкции, пройден настоящий сценарий до DOCX и после перезапуска.
- Веса доступны эксперту согласованным способом; gated-доступ решён без передачи личного токена участника.
- Нет секретов, приватных записей, локальной БД и весов в коммите.
- Основной сценарий показан, ограничения раскрыты; вклад команды подтверждается историей работы.
- Капитан подал материалы в формате организаторов; push в GitHub не заменяет сдачу на платформе.
Авторы коммитов
История коммитов
- 2026-09-23 17:52docs: record final restart and persistence verificationKaraul Shyngys
- 2026-09-23 17:50feat: suggest task urgency from deadlines with human reviewKaraul Shyngys
- 2026-09-23 17:46fix: finalize documentation merge and mobile landing boundsKaraul Shyngys
- 2026-09-23 17:46feat: integrate landing page and final verified applicationKaraul Shyngys
- 2026-09-23 17:43feat: integrate reviewed meeting interfaceKaraul Shyngys
- 2026-09-23 17:41docs: document final setup and verified acceptance resultsKaraul Shyngys
- 2026-09-23 17:31feat: add TaldauAI landing pagebeka
- 2026-09-23 17:06feat: generate evidence-linked narrative meeting summariesKaraul Shyngys
Все коммиты (47)
- 2026-09-23 17:02feat: align frontend with TaldauAI preview designbeka
- 2026-09-23 16:54feat: merge live meeting frontend with reviewed workflowKaraul Shyngys
- 2026-09-23 16:41chore: ignore generated Vite cacheKaraul Shyngys
- 2026-09-23 16:40feat: add reliable task review and automatic local remindersKaraul Shyngys
- 2026-09-23 16:36feat: add live meeting assistant recording flowbeka
- 2026-09-23 16:24Merge remote-tracking branch 'origin/almaz/backend' into bekasil/ui-previewbeka
- 2026-09-23 16:16feat: add Notion-style meeting assistant prototypebeka
- 2026-09-23 16:05chore: merge verified ML branch at 4efd70fAlmaz Bukayev
- 2026-09-23 16:04feat: integrate local ML processing with PostgreSQL review workflowAlmaz Bukayev
- 2026-09-23 15:51fix: preserve CTC target boundaries and record adaptation resultsKaraul Shyngys
- 2026-09-23 15:47fix: verify exported CTC adaptation weightsKaraul Shyngys
- 2026-09-23 15:47feat: add local CTC adaptation and corpus preparationKaraul Shyngys
- 2026-09-23 15:33feat: add standalone UI design previewbeka
- 2026-09-23 15:25fix: ground deadlines in transcript and document backend handoffKaraul Shyngys
- 2026-09-23 15:15Merge remote-tracking branch 'origin/main' into kashyyn/mlKaraul Shyngys
- 2026-09-23 15:14fix: verify task assignees and validate meeting acceptance flowKaraul Shyngys
- 2026-09-23 15:05Merge pull request #1 from BAITC-Hacks/bekasil/docsBekasyl
- 2026-09-23 15:02docs: add environment preflight checksbeka
- 2026-09-23 15:01fix: route fixture processing through ML adapterAlmaz Bukayev
- 2026-09-23 14:58fix: mark curated demo tasks as reviewedAlmaz Bukayev
- 2026-09-23 14:56Merge remote-tracking branch 'origin/almaz/backend' into almaz/backendAlmaz Bukayev
- 2026-09-23 14:56feat: add end-to-end meeting processing workflowAlmaz Bukayev
- 2026-09-23 14:55feat: add offline meeting ML pipelineAlmaz Bukayev
- 2026-09-23 14:50feat: add protocol export and acceptance evaluation toolsKaraul Shyngys
- 2026-09-23 14:36feat: add evaluated CTC beam decoding and improve ML reliabilityKaraul Shyngys
- 2026-09-23 14:16chore: integrate ML pipeline into mainKaraul Shyngys
- 2026-09-23 14:14chore: merge main and resolve ignore rulesKaraul Shyngys
- 2026-09-23 14:09docs: record local KazLLM end-to-end evaluationKaraul Shyngys
- 2026-09-23 13:59fix: pass decoded audio to local diarizationKaraul Shyngys
- 2026-09-23 13:54chore: ignore generated TypeScript build filesAlmaz Bukayev
- 2026-09-23 13:53feat: add meeting protocol frontend prototypeAlmaz Bukayev
- 2026-09-23 13:45feat: benchmark mixed speech and improve speaker alignmentKaraul Shyngys
- 2026-09-23 13:40feat: add mixed speech ASR and KazLLM correction suggestionsKaraul Shyngys
- 2026-09-23 13:23feat: evaluate mixed Russian Kazakh speech separatelyKaraul Shyngys
- 2026-09-23 13:17docs: document ML setup and verificationKaraul Shyngys
- 2026-09-23 13:15feat: add local meeting ML processing pipelineKaraul Shyngys
- 2026-09-23 13:10docs: define ML integration contract for meeting processingKaraul Shyngys
- 2026-09-23 12:30chore: add AGENTS.md and .gitignoreAlmaz Bukayev
- 2026-09-23 12:17Add hackathon preparation planKaraul Shyngys
Структура репозитория (142 файлов)
.env.example .gitignore ACCEPTANCE.md AGENTS.md BACKEND_HANDOFF.md CASE_REQUIREMENTS.md HACKATHON_PLAN.md ML_CONTRACT.md ML_EVALUATION.md ML_RUN.md READINESS.md README.md TRAINING.md backend/.env.example backend/alembic.ini backend/alembic/env.py backend/alembic/script.py.mako backend/alembic/versions/20260923_0001_initial.py backend/alembic/versions/20260923_0002_ml_contract.py backend/alembic/versions/20260923_0003_review_notifications.py backend/app/__init__.py backend/app/asr/__init__.py backend/app/asr/base.py backend/app/asr/stub.py backend/app/config.py backend/app/database.py backend/app/llm/__init__.py backend/app/llm/base.py backend/app/llm/ollama.py backend/app/llm/stub.py backend/app/main.py backend/app/models.py backend/app/refresh_summary.py backend/app/schemas.py backend/app/seed.py backend/app/services/__init__.py backend/app/services/export.py backend/app/services/ml_adapter.py backend/app/services/processor.py backend/app/services/reminders.py backend/requirements-test.txt backend/requirements.txt backend/tests/test_integration.py backend/tests/test_ml_adapter.py docker-compose.yml docs/MODELS.md docs/SETUP_MACOS.md docs/SETUP_WINDOWS.md docs/VALIDATION.md examples/acceptance_reference.json examples/acceptance_scenario.json examples/audio/acceptance_mixed.wav examples/audio/kk_control.wav examples/audio/meeting_demo.wav examples/audio/mixed_action.wav examples/audio/mixed_deadline.wav examples/audio/mixed_owner.wav examples/audio/ru_control.wav examples/meeting_asr_manifest.json examples/meeting_manifest.json examples/results/acceptance-evaluation.json examples/results/acceptance-result.json examples/results/ctc-adaptation-pilot-v1.json examples/results/ctc-adaptation-pilot-v2.json examples/results/meeting-asr-beam.json examples/results/meeting-asr-greedy.json examples/results/meeting-beam-result.json examples/results/meeting_result.json examples/results/mixed-ctc-beam-evaluation.json examples/results/mixed-ctc-evaluation.json examples/results/tasks-kazllm-baseline.json examples/results/tasks-qwen-evaluation.json examples/results/whisper-hotwords-comparison.json examples/results/whisper-large-v3-evaluation.json examples/shala_manifest.json examples/task_cases.json frontend/.env.example frontend/design-preview.html frontend/eslint.config.js frontend/index.html frontend/package-lock.json frontend/package.json frontend/postcss.config.js frontend/scripts/acceptance.mjs frontend/scripts/recording.mjs frontend/src/App.tsx frontend/src/api.ts frontend/src/components/Layout.tsx frontend/src/components/ui/badge.tsx frontend/src/components/ui/button.tsx frontend/src/components/ui/card.tsx frontend/src/components/ui/checkbox.tsx frontend/src/components/ui/dialog.tsx frontend/src/components/ui/input.tsx frontend/src/components/ui/label.tsx frontend/src/components/ui/select.tsx frontend/src/components/ui/tabs.tsx frontend/src/components/ui/toast.tsx frontend/src/index.css frontend/src/lib/utils.ts frontend/src/main.tsx frontend/src/mocks.ts frontend/src/pages/LandingPage.tsx frontend/src/pages/LiveMeetingPage.tsx frontend/src/pages/MeetingPage.tsx frontend/src/pages/MeetingsPage.tsx frontend/src/pages/NewMeetingPage.tsx frontend/src/pages/NotificationsPage.tsx frontend/src/pages/TasksPage.tsx frontend/src/pages/landing.css frontend/src/types.ts frontend/src/vite-env.d.ts frontend/tailwind.config.js frontend/taldauai_notion.html frontend/tsconfig.app.json frontend/tsconfig.json frontend/tsconfig.node.json frontend/vite.config.ts ml/__init__.py ml/__main__.py ml/ctc.py ml/doctor.py ml/evaluate.py ml/evaluate_meeting.py ml/evaluate_tasks.py ml/export.py ml/mixed_asr.py ml/pipeline.py ml/summary.py requirements-ml.txt requirements-training.txt scripts/check_acceptance_persistence.py scripts/make_acceptance_audio.py scripts/make_synthetic_audio.py tests/test_acceptance.py tests/test_ctc.py tests/test_pipeline.py tests/test_summary.py tests/test_training.py training/__init__.py training/adapt_ctc.py training/prepare_corpora.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.