# Monitor: сессии и живое аудио

Реализация и адресная поставка завершены 20 октября 2026 года. Живой сигнал, ASR final и ответ в нужной панели проверены. Пользователь подтвердил «выключил. появился»; после отключения список потоков пуст, все четыре графика удалены, показано «Поток завершён. Измерения освобождены».

## Что изменилось

Верхняя навигация: «Сессии · Аудио · Все таблицы». Переключатель «Дорожки сервисов / Список событий» находится внутри выбранной сессии, под UUID и User-Agent. Смена представления сохраняет выбранную сессию и границы окна. Сохранены модалки JSON, ссылки на код, таблицы и фильтры.

[Аудиомонитор](<https://chat-agent.gis-master.ru/monitor/audio>) показывает активные потоки отдельно от выбранной чат-сессии. Есть waveform ingress, RMS dBFS, входящий и исходящий PCM, очередь в миллисекундах, раскрываемый спектр до 8 kHz, таблица и временное представление фактических каналов. JSON-модалки содержат последнее наблюдение и ссылки на исходники. Для PCM сохраняются только заголовок, размер и последовательность пакета.

Наблюдение запускается автоматически при открытии «Аудио», получает приращения не чаще раза в секунду, приостанавливается в скрытой вкладке и возобновляется при возвращении. Его можно остановить кнопкой. Новые потоки подхватываются автоматически; после завершения потока графики очищаются. Ошибка диагностического чтения останавливает наблюдение без повторов истёкшего доступа. Итоговая Frontend-ревизия — 095dc1a1fff1e1213d3d1fe702b79b08e310cd4d, pipeline 5286; все пять обязательных checks и адресные jobs успешны. Измерения ограничены 15 минутами в памяти существующего активного владельца и освобождаются при завершении. Отсутствующие измерения показываются как отсутствие данных.

Новых сервисов, подключений к брокеру, таблиц и микрофонных захватов нет. Расширение остаётся 1.1.4. PostgreSQL, NATS, Agent, LLM, ASR-модели и GPU-сервисы не обновлялись.

## Код и CI

- Первоначальная поставка Gateway/Core/ingress и Frontend: `66476241d92d79b212b28bd6ac5ab65a1f8cf0ab`; [pipeline 5285](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/pipelines/5285>).
- live bridge: `71c9b087799c73e07c1a7c30372b1b6498ea29b7`; [pipeline 5282](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/pipelines/5282>).
- Пять обязательных checks chat-agent успешны. Успешны streaming и release checks bridge.
- Адресные jobs chat-agent: сборка 18517, свежий preflight 18537, backend 18533, Frontend 18534.
- Адресные jobs bridge: preflight 18402, сборка 18396, refresh 18403, verify 18404.
- Выполнен штатный drain; после обновления backend admission оставался закрытым, после проверки bridge и поставки Frontend открыт. В фактическом Core `CHAT_AGENT_INITIAL_DRAIN=false`.
- Неиспользованные ручные jobs не запускались. Полный stack deploy и prune не выполнялись.

## Автоматическое живое наблюдение: итоговая правка Frontend

По замечанию пользователя наблюдение включено по умолчанию. [Pipeline 5286](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/pipelines/5286>), commit `095dc1a1fff1e1213d3d1fe702b79b08e310cd4d`: пять обязательных checks успешны, preflight 18589, build Frontend refresh 18603 и chat NATS refresh Frontend 18604 успешны. Локально прошли 243 frontend-теста, TypeScript и Vite build.

На deployed странице без нажатия «Наблюдать» зафиксировано 19 последовательных запросов списка потоков с интервалами 1,095–1,126 с. Кнопка «Остановить» имеет `aria-pressed=true` сразу после открытия. При паузе запросов 0; после перехода в «Сессии» аудиоопросов 0, новых WebSocket-подключений 0. При повторном открытии «Аудио» наблюдение включается само. Пауза при скрытии и возобновление при возвращении проверены тестом. Ошибок консоли нет.

Повторно проверенный Core сохранил прежние revision/digest и время старта `2026-10-20T10:27:54.941353125Z`, admission открыт. В корректирующей поставке обновлён только Frontend; runtime revision `095dc1a1fff1e1213d3d1fe702b79b08e310cd4d`, старт `2026-10-20T10:58:14.563544622Z`.

## Фактический runtime

Сопоставлено через Insight после адресной поставки. Проверены revision, RepoDigest, состояние контейнера и завершение обновления сервиса. Docker Healthcheck присутствует у Core и ingress; у остальных трёх приведено фактическое running и 1/1.

| Сервис | Revision | RepoDigest | Состояние |
|---|---|---|---|
| chat-agent_src_api_gateway | `66476241d92d79b212b28bd6ac5ab65a1f8cf0ab` | `sha256:399490452bbd2811b4323b6771856e487c05698be20a2d18a1de7f3016463619` | 1/1, running, completed |
| chat-agent_audio_ws_ingress | `66476241d92d79b212b28bd6ac5ab65a1f8cf0ab` | `sha256:ec44eeb0650a89d6740f7ed3b610a617d1a1e03c9815d3c6cfca5908b12db085` | 1/1, running, completed, healthy |
| chat-agent_src_core | `66476241d92d79b212b28bd6ac5ab65a1f8cf0ab` | `sha256:1b7acd0971ed5d3349d442666bc7b298dc81bcac4d48ca2447f0bce17c7e6937` | 1/1, running, completed, healthy |
| chat-agent_src_front | `095dc1a1fff1e1213d3d1fe702b79b08e310cd4d` | `sha256:83599a6a4d13149b29115430fb920ae0c90072848fdcc08859f0e5f87ea3ea44` | 1/1, running, completed |
| py_faster_whisper_stt_whisper_to_nats | `71c9b087799c73e07c1a7c30372b1b6498ea29b7` | `sha256:8b6360fbdc97df8e98bf60016788a1378333eb64d385421a858cbd54005a496e` | 1/1, running, completed |

## Проверки

Локально: 191 Python-тест и 242 frontend-теста, сборка и TypeScript; 122 streaming-проверки в Docker. Адресные Ruby-проверки релиза, runtime-settings и реальные Nginx-маршруты прошли. 52 интеграционных Python-теста локально пропущены; обязательный интеграционный CI gate прошёл.

В deployed Monitor проверена историческая сессия из 49 событий: локальный переключатель, сохранение UUID и конца окна, оба представления. Каталог содержит 12 таблиц. `/monitor/audio` открывается напрямую. Консоль проверочной страницы без ошибок.

## Живая голосовая попытка

Пользователь подключил исправный микрофон, произнёс согласованную фразу и оставил захват включённым.

- Поток: `713a1635-6452-4380-9833-839d92cf7ec6`.
- Сессия: `5a2be86c-9322-4246-8d9b-58727a63568c`.
- Backend: `streaming_worker`, вход 48 kHz, выход после ресемплинга 16 kHz.
- Показаны waveform и речевой пик RMS; после речи получена тишина, RMS −100 dBFS.
- Пример снимка: вход 786,4 кбит/с, выход 266,2 кбит/с, очередь 0 мс. Эти значения относятся к разным переходам и формату PCM; напрямую равными быть не должны.
- Наблюдаются 7 каналов/наблюдений. На одном переходе ingress → bridge отправлено и получено по 9451 пакету. Номера пакетов разных переходов не сравнивались.
- В Core получен `result_type: final`, текст «сколько полез в сохраненном списке.». Ошибка распознавания слова зафиксирована; точное совпадение с заданной фразой не подтверждается.
- Из final: decode 607,3 мс, от конца речи до final 635,6 мс.
- Проверена PCM-модалка: PCM16LE, 48 kHz, mono, 2048 байт; аудиобайтов в JSON нет. Ссылки ведут к `NatsAudio.pcm` и `AudioSession._packet` в текущем main.
- Спектр: 64 полосы, максимум 8 kHz; показан отдельной раскрываемой областью.

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

## Скриншоты и данные

- [Графики реального потока](#archive-availability).
- [ASR final в JSON-модалке](#archive-availability).
- [Состояние без активного потока до теста](#archive-availability).
- [Очистка после выключения пользователем](#archive-availability).
- [Автоматическое наблюдение после открытия](#archive-availability).
- [Машинные данные поставки](</experiments/voice-ai/archive/v/10/12/01a12f35-d90b-77d3-a3a9-a80d5acd04b8/monitor-live-audio/delivery.json>).
- [Проверенный PCM JSON и метаданные](#archive-availability).

Снимки viewport сохранены. Полностраничный снимок не получен: браузерный инструмент вернул timeout; проверка DOM, графиков, каналов и модалок выполнена отдельно.
