Files
transcriber/tasks/items/external-service-metrics.md
T
av 8739b18a9f tasks: очередь расставлена от базы к деталям
- порядок беклога и роадмапа назначен слоями: проверки, которым можно
  верить → долги входа → владелец записи и контракт API → конвейер под
  тестами → приложение и возможности поверх; у каждого движения записана
  причина;
- заведены восемь задач под пункты «Завершения», которых не закрывала ни
  одна запись, — цель any-audio-source была без задач вовсе;
- у четырёх задач сняты критерии, требовавшие того, что делает задача ниже
  по очереди; исправлены ссылки на несуществующий repo/sqlite и на
  отменённую разведку об очереди.
2026-08-12 20:48:53 +03:00

42 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✨ Считать вызовы, отказы и длительность по каждому внешнему сервису
- **Тип:** feature
- **Категория:** Очередь — Метрики внешних сервисов пишутся в выбранном словаре, а не переписываются потом.
- **Зачем:** Ни у Telegram, ни у Object Storage, ни у SpeechKit нет ни одной метрики: отказ внешнего сервиса виден только строкой в журнале контейнера.
- **Теги:** goal:service-observability
Двигает пункты 2 и 5 «Завершения» цели: у каждого внешнего сервиса появляются
вызовы, отказы и длительность, а расход на платные сервисы виден числом.
Внешних сервисов сегодня четыре — Telegram, Object Storage, SpeechKit и
`ffmpeg`/`ffprobe` как внешний процесс; пятым станет языковая модель. Метрика
заводится одной формой на все, чтобы шестой сервис не приносил шестого способа
считать.
## Затрагивает
- `internal/metrics` — форма метрики внешнего вызова: имя сервиса, операция,
исход, гистограмма длительности;
- адаптеры `internal/adapter/*` — место, где вызов оборачивается замером;
- `docs/architecture.md`, раздел эксплуатации — перечень метрик;
- `docs/conventions/` — правило: новый внешний вызов приходит со своей меткой,
а не со своей метрикой.
## Критерии приёмки
- У каждого из четырёх внешних сервисов есть счётчик вызовов, счётчик отказов и
гистограмма длительности. Оракул — тест: прогнать по одному вызову каждого
адаптера с подставным собеседником и снять `/metrics`.
- Отказ внешнего сервиса виден отдельно от успеха и не теряется в общем счётчике.
Оракул — тест: подставной собеседник отвечает отказом, метка исхода в метрике
отличается.
- Минуты распознавания и объём заливки видны числом. Оракул — тест: после шага
распознавания счётчик минут вырос на длительность записи, а после заливки в
Object Storage счётчик объёма — на размер файла.
## Рамки
Трассировку здесь не заводим — чем развивать наблюдаемость, решает разведка
`opentelemetry-fit`; эта задача остаётся в том словаре, который она выберет.
Учёт по пользователям — задача `usage-accounting`, здесь метрики сервисные.