Секции «Ядро» и «Инфра» слиты в одну «Очередь»: полок домена у проекта нет, а две секции держали два независимых порядка вместо одного. Порядок: красный гейт, потом долги, задевающие интерфейсы, потом хранилище, вход, разграничение, приложение. Разведка потолков SpeechKit последней — она обслуживает направление, а не очередь.
3.1 KiB
3.1 KiB
✨ Свести приём и чтение записей к одному контракту для приложения
- Тип: feature
- Категория: Очередь
- Зачем: Сегодняшний API отвечает 404 на любую ошибку чтения и 500 на любую ошибку приёма: строить на нём экраны нечем.
- Теги: goal:web-access
Двигает пункты 1, 2 и 4 «Завершения» цели: экраны заводят задачу, видят её состояние и листают список — всё через один контракт.
Обработчик GET /api/status/:id сегодня отвечает 404 на любую ошибку
чтения, включая сбой базы, а POST /api/audio — 500 на любую ошибку заведения,
включая негодный файл. Экран, построенный на таком контракте, показывает «не
найдено» при упавшей базе.
Затрагивает
POST /api/audioиGET /api/status/:id— коды ответа и форма ошибки;- новый эндпоинт списка своих записей с постраничным чтением;
- единая точка отображения доменной ошибки в код ответа — её сегодня нет (conventions/errors.md);
internal/contract— доменные ошибки под отображение;internal/controller/httpцеликом;docs/architecture.md, раздел «Единые точки проекта».
Критерии приёмки
- Сбой базы при чтении задачи даёт
500, а не404. Оракул — тест с репозиторием, возвращающим ошибку драйвера. - Негодный файл даёт
400с человекочитаемым текстом, а не500. Оракул — тест: файл, который отвергает разбор метаданных. - Тело ошибки одной формы на всех эндпоинтах и не содержит сырого
err.Error(). Оракул — тест на четырёх ветвях отказа: форма совпадает, текста внутренней ошибки в теле нет. - Список записей отдаётся страницами и упорядочен по времени создания. Оракул — тест на выборке больше страницы.
- Отображение ошибки живёт в одной функции, и она названа в
docs/architecture.md. Оракул —task gate, шагdocs.py check.
Рамки
Аутентификацию и владельца не заводим — это oidc-login и record-ownership;
задача про форму контракта. Публичный контракт после мерджа обратной правкой не
откатывается.