Голосовые системы

Monitor v4 — реализация и приёмка

Исходники

Один MR: https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/35. База: 0b9857f572106bbd98279c02ac23ffbb680eec01. MR source: a1f0ff07bbe901252f4f1ae064da838c7e9ad90b, merge: e1a1621a6320301a9d8b9868bdb6ed051727e6ea. Перед поставкой добавлено уточнение кнопки боковой панели: b0d1ba04def9d891b0964813eaddff19ab53cf85. Это текущий source SHA для обоих изменённых компонентов.

25 файлов, +494 / −230 строк. Изменены Front и read-only проекция Gateway; расширение, ASR, GPU, DRS, инфраструктура, БД и корневой CI не менялись. Зависимости не добавлялись и не обновлялись. Основной пользовательский checkout сохранён; writer — существующий изолированный checkout asr-compare-timing.

Поведение

  • Три постоянных раздела: Данные, Диагностика, Последовательность событий. Один AudioArchive сохраняет плеер и прогон между вкладками.
  • Данные: компактные вопрос/ответ/замеры/аудио; параметры, история вызовов, трассы, генерации и JSON находятся в раскрытиях и модальных окнах. Измерения указывают владельца часов и границы; вложенные интервалы не выдаются за независимые слагаемые.
  • У waveform удалены числовые поля. Мышь и клавиатура выбирают участок только для прослушивания; сброс и длительность сохранены.
  • Диагностика: единая таблица исходного и последнего диагностического прогона, исходная модель и «Фраза» по умолчанию. Новый прогон очищает прежний результат; отмена, ошибка и завершение без результата различаются. Оценки отделяют отсутствие поддержки, несохранённые и некорректные значения.
  • Журнал/схема используют одну последовательность и общий выбор. Audio Ingress и остальные компоненты имеют точные имена в подсказках. Историческое asr не подменяется предполагаемым сервисом. Отступы до 32 px основаны только на сохранённом parent_id инструментов; временная близость не обозначает параллельность.
  • Боковая панель открывается строкой и кнопкой. Переход на схему выделяет стрелку и участников; возврат выбирает строку. Сохранены фильтры, старые ссылки и положение чтения.
  • Gateway разрешает существующий payload_ref для окончательного ответа тем же resolver, что использует event_content; циклы, отсутствие данных, чужая сессия/запрос и будущая ссылка не раскрывают содержимое.
  • Ошибки инструментов считаются по уникальному tool_call_id отдельно от ошибок доставки. Неполная история не выдаётся за полный исходный прогон.

Проверки исходников и CI

Локально: 100 адресных frontend-проверок основного изменения; после уточнений повторялись только затронутые группы, включая 45 UI-сценариев, 37 AudioArchive-проверок и 8 проверок журнала. TypeScript, Vite build, check-source и diff --check пройдены. PostgreSQL: 22 integration tests.

Pipeline 5667 проверил Python, Browser NATS и integration; Ruby suite штатно пропущена по отбору влияния. Первый frontend-прогон выявил тестовые обращения к удалённому прежнему интерфейсу. Сценарии обновлены, включая Exchanges, LiveView и настоящий вход Monitor. Один дальнейший прогон упал на существующем 5-секундном тайм-ауте неизменённого extension/domRuntime.test.ts; код и лимиты расширения не менялись.

Pipeline 5670: frontend — 513/513, runtime-settings и типизация пройдены; неизменённые группы штатно пропущены. Pipeline 5671: пять jobs завершены успешно с существующим отбором влияния (Ruby — пропуск). Pipeline 5672 проверяет последнюю frontend-правку; остальные группы пропускаются как неизменённые.

Предыдущие runtime digest и версии находятся в runtime-before.json. Результаты поставки и проверки HTTPS дополняются ниже после фактического выполнения.

Поставка — текущее состояние

Gateway: pipeline 5673, build component 27853 — success, 20,1 с. Кандидат: api-gateway/main@sha256:2c785f171dedd9690925014a42ac9e98f605aba0f1d572dcdcc46fb6075f247b.

Front: pipeline 5674, build component 27904 — success, 68,4 с. Опубликован front/main:monitor-frontend-b0d1ba04def9d891b0964813eaddff19ab53cf85. Один production bundle. Оба образа собраны только для указанных компонентов; другие приложения не пересобирались.

Для сборки использованы существующие scoped-фазы chrome-gateway и monitor-frontend через job build component, с точными тегами SHA и штатным CI_FORCE_BUILD. Корневой CI не менялся. У этих двух подготовительных pipelines проверки штатно пропущены по сравнению того же SHA: этот код уже прошёл проверку в 5672. Первоначальная job 27802 имела пустой отбор и образ не создала; её успех не засчитывается как публикация Gateway.

Gateway refresh 27883 получила и проверила новый образ, затем завершилась deadline до переключения. Сервис остался на прежнем digest 158d4dce…, update=completed. Front refresh 27934 не запускалась; его прежний digest d63158d1… сохранён. Откат образов не понадобился — переключения не было.

Восстановительная job 27869 остановилась с guard «ASR rollout is not drained»: допуск уже был открыт. Дополнительно через авторизованный терминал Core выполнен только GET /healthz: ok=true, draining=false, audio_connections=1. Серверные env и credentials не выводились в этот артефакт.

Блокер: живой поток d9a1fa13-7afb-438c-bc14-8f57fbab2893, сессия 4f051baa-3791-443a-8362-63717683f53c, продолжает принимать аудио. Штатный drain требует ноль audio_connections (stack/runtime_probe.py:103). Запрошено разрешение завершить только этот захват; подтверждение пока не получено. Повторять deployment job до устранения причины не следует.

Приёмка нового production UI ещё не выполнена: работающий HTTPS Monitor пока обслуживает прежний Front. Просмотр локального макета и старого Monitor не считается приёмкой новой версии. После освобождения потока остаются Gateway → контрольный запрос → Front → обе темы/журнал/схема/старые ссылки → один повтор архивной фразы. Микрофон для приёмки включать не нужно.

Активный поток · машинный статус.

Запуск manual jobs с переменными использует штатный GitLab Jobs API; новые CI-правила и обходы guard не добавлялись.

Обновление после разрешения владельца

Блокер снят, Gateway → Front поставлены и прошли HTTPS-проверку. Актуальный итог: rollout/REPORT.md. Все прежние записи о незавершённой поставке выше относятся к предыдущему моменту проверки.

Исходник

Скачать Markdown · К материалам исследования