- 11 записей типа goal закрыты с причиной, называющей задачи-наследники; ROADMAP.md удалён, индекс остался один — BACKLOG.md; - 33 записи переписаны: ссылка «Двигает пункты N «Завершения» цели» уступила место прямому утверждению — без целей номера пунктов вели в никуда; - шапка BACKLOG.md размечена парой <!-- стадия -->, порядок строк теперь объявлен зависимостью, а не важностью.
3.2 KiB
3.2 KiB
✨ Считать вызовы, отказы и длительность по каждому внешнему сервису
- Тип: feature
- Категория: Очередь — Метрики внешних сервисов пишутся в выбранном словаре, а не переписываются потом.
- Зачем: Ни у Telegram, ни у Object Storage, ни у SpeechKit нет ни одной метрики: отказ внешнего сервиса виден только строкой в журнале контейнера.
У каждого внешнего сервиса появляются вызовы, отказы и длительность, а расход на платные сервисы становится виден числом.
Внешних сервисов сегодня четыре — Telegram, Object Storage, SpeechKit и
ffmpeg/ffprobe как внешний процесс; пятым станет языковая модель. Метрика
заводится одной формой на все, чтобы шестой сервис не приносил шестого способа
считать.
Затрагивает
internal/metrics— форма метрики внешнего вызова: имя сервиса, операция, исход, гистограмма длительности;- адаптеры
internal/adapter/*— место, где вызов оборачивается замером; docs/architecture.md, раздел эксплуатации — перечень метрик;docs/conventions/— правило: новый внешний вызов приходит со своей меткой, а не со своей метрикой.
Критерии приёмки
- У каждого из четырёх внешних сервисов есть счётчик вызовов, счётчик отказов и
гистограмма длительности. Оракул — тест: прогнать по одному вызову каждого
адаптера с подставным собеседником и снять
/metrics. - Отказ внешнего сервиса виден отдельно от успеха и не теряется в общем счётчике. Оракул — тест: подставной собеседник отвечает отказом, метка исхода в метрике отличается.
- Минуты распознавания и объём заливки видны числом. Оракул — тест: после шага распознавания счётчик минут вырос на длительность записи, а после заливки в Object Storage счётчик объёма — на размер файла.
Рамки
Трассировку здесь не заводим — чем развивать наблюдаемость, решает разведка
opentelemetry-fit; эта задача остаётся в том словаре, который она выберет.
Учёт по пользователям — задача usage-accounting, здесь метрики сервисные.