закрыта задача errors-as-instead-of-typecast

This commit is contained in:
av
2026-08-11 18:05:07 +03:00
parent 2559d09fc8
commit 09cedc4e61
2 changed files with 0 additions and 36 deletions
@@ -1,35 +0,0 @@
# 🧹 Сравнивать доменные ошибки через errors.As
- **Тип:** chore
- **Категория:** Очередь
- **Зачем:** NoopJobError и JobNotFoundError проверяются приведением типа: первая же обёртка %w между слоями сломает проверку молча.
Сегодня это работает только потому, что ошибку на этом пути никто не
оборачивает. Сломается тихо: воркер перестанет отличать «задач нет» от отказа и
начнёт писать `ERROR` раз в секунду на каждый из трёх воркеров, а `NoopJobError`
попадёт в метрику отказов.
Правило записано в [conventions/errors.md](../../docs/conventions/errors.md),
линтер на этих двух местах уже красный.
## Затрагивает
- `internal/controller/worker/worker.go`, проверка `NoopJobError`;
- `internal/service/transcribe.go`, метод `findJob`, проверка
`JobNotFoundError`;
- `internal/contract/error.go` — оба типа полей не несут и годятся в sentinel;
- `.golangci.yml` — после правки `errorlint` на этих местах должен молчать.
## Критерии приёмки
- Обе проверки идут через `errors.As` либо через `errors.Is` по sentinel.
Оракул — `golangci-lint run` не даёт замечаний `errorlint`.
- Обёртка `fmt.Errorf("…: %w", err)` в середине пути не ломает распознавание.
Оракул — тест: обёрнутый `NoopJobError` воркер по-прежнему считает пустым
прогоном и не пишет ни лога, ни метрики.
- Метрика `transcriber_worker_job_count` на пустом прогоне не растёт. Оракул —
тот же тест, проверка значения счётчика до и после.
## Рамки
Поведение снаружи не меняется; конвейер не трогаем.