tasks: заведён урожай ревью remove-telegram-intake
- шесть записей по кластерам причин: журнал под внешним значением, нулевой код ответа в журнале, затирание вложения бедным ответом, открытый анониму адрес подтверждения почты, рубеж расшифровки без работы, пределы длительности - находка про код 500 у отказа приёма дописана в json-api-for-spa: там живёт единая точка отображения доменной ошибки - telegram-account-link и bot-api-only-through-bot-client оставлены с оговоркой, что предмета у них нет до возвращения входа
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 🐞 Писать в журнал код ответа отвергнутого запроса
|
||||
|
||||
- **Тип:** fix
|
||||
- **Категория:** Очередь — Заведена урожаем ревью и встала в конец машинально: место в плане стройки назначает человек.
|
||||
- **Зачем:** У всякого запроса, отвергнутого роутером, в журнале стоит нулевой код: всплеск отказов доступа неотличим от обычного трафика.
|
||||
- **Теги:** review-2026-08-15
|
||||
|
||||
Код ответа в журнале называет исход запроса, а не ноль.
|
||||
|
||||
Обработчик, завершившийся отказом роутера — `401` без сессии, `403` без учётной
|
||||
записи, `404` на чужой записи, `500` на сбое, — пишет статус в ответ **после**
|
||||
возврата из слоя журнала. Слой читает его раньше и получает ноль. Верное значение
|
||||
попадает в журнал только у обработчиков, отвечающих самостоятельно.
|
||||
|
||||
Разграничение записей по владельцу устроено так, что чужая запись отвечает тем
|
||||
же, чем несуществующая. Единственное место, где виден перебор идентификаторов, —
|
||||
журнал; а именно эти строки и приезжают с нулём.
|
||||
|
||||
## Воспроизведение
|
||||
|
||||
Поднять сервис и послать четыре запроса подряд:
|
||||
|
||||
```
|
||||
/auth/login → 302 ... http.route=/auth/login http.status_code=302
|
||||
/api/audio → 404 ... http.route=/api/audio http.status_code=0
|
||||
/nope → 404 ... http.route=/nope http.status_code=0
|
||||
POST /api/audio без сессии → 401 ... http.status_code=0
|
||||
```
|
||||
|
||||
Первый обработчик отвечает сам и код пишет верно; три остальных отвергнуты
|
||||
роутером и дают ноль.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- слой журнала запроса в `main.go`: место, где снимается код ответа;
|
||||
- `docs/conventions/logging.md` — словарь полей запроса.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- Отвергнутый запрос пишет в журнал свой код. Оракул: те же четыре запроса —
|
||||
`401`, `403`, `404` и `500` приезжают в поле кода, ноля в нём нет ни у одного.
|
||||
- Обработчик, отвечающий самостоятельно, продолжает писать свой код. Оракул:
|
||||
запрос входа по-прежнему даёт `302`.
|
||||
|
||||
## Рамки
|
||||
|
||||
Найдено прогоном ревью задачи `remove-telegram-intake` 2026-08-15, враждебный
|
||||
проход, оракул — живой прогон. Дефект существовал до той правки: изменение этот
|
||||
слой не трогало. Метрики кодов ответа у сервиса нет вовсе, и заводить её этой задачей не
|
||||
надо — она про журнал.
|
||||
Reference in New Issue
Block a user