[Refactor] Публиковать типизированные коды Problem Details для frontend #117

Closed
opened 2026-10-20 05:00:26 +03:00 by codex-bot · 2 comments
Owner

Проблема

Аудит main/audits/2026-10-19-code-quality-architecture/02-findings.md, CQ-003: ProblemDetailsDto.code публикуется в OpenAPI как произвольная строка; frontend поддерживает отдельный неполный список кодов, включая недостижимую ветку. Это одна координирующая задача для публичного контракта и его потребителя.

Результат и scope

Backend определяет достоверный публикуемый словарь кодов и передаёт обновлённый OpenAPI artifact; frontend обновляет generated types и убирает ручное зеркало там, где оно дублирует контракт. Не удалять и не переименовывать реально выдаваемые коды без отдельного согласования; не править generated файлы вручную. Смежная frontend#55 отвечает за отображение source/recovery, не за генерацию словаря.

Acceptance Criteria

  • Публикуемый backend OpenAPI описывает допустимые значения ProblemDetailsDto.code согласно реально выдаваемым кодам; runtime payload остаётся совместимым.
  • Контракт явно доставлен frontend, сгенерированные типы обновлены из него; ручной список не расходится с источником или удалён.
  • Использования отсутствующих/лишних кодов на frontend пересмотрены без потери текущего поведения access-loss; соответствующие проверки backend/frontend проходят.
  • Изменения в двух самостоятельных репозиториях проверены и приняты вместе; порядок поставки backend contract → frontend consumer зафиксирован.

Источник: аудит 2026-10-19, CQ-003 (CQ-014/OE-08 лишь смежны), план, пункт 4. Отдельные внутренние перестановки всех enum не входят в эту задачу.

## Проблема Аудит `main/audits/2026-10-19-code-quality-architecture/02-findings.md`, CQ-003: `ProblemDetailsDto.code` публикуется в OpenAPI как произвольная строка; frontend поддерживает отдельный неполный список кодов, включая недостижимую ветку. Это одна координирующая задача для публичного контракта и его потребителя. ## Результат и scope Backend определяет достоверный публикуемый словарь кодов и передаёт обновлённый OpenAPI artifact; frontend обновляет generated types и убирает ручное зеркало там, где оно дублирует контракт. Не удалять и не переименовывать реально выдаваемые коды без отдельного согласования; не править generated файлы вручную. Смежная frontend#55 отвечает за отображение source/recovery, не за генерацию словаря. ## Acceptance Criteria - [ ] Публикуемый backend OpenAPI описывает допустимые значения `ProblemDetailsDto.code` согласно реально выдаваемым кодам; runtime payload остаётся совместимым. - [ ] Контракт явно доставлен frontend, сгенерированные типы обновлены из него; ручной список не расходится с источником или удалён. - [ ] Использования отсутствующих/лишних кодов на frontend пересмотрены без потери текущего поведения access-loss; соответствующие проверки backend/frontend проходят. - [ ] Изменения в двух самостоятельных репозиториях проверены и приняты вместе; порядок поставки backend contract → frontend consumer зафиксирован. Источник: аудит 2026-10-19, CQ-003 (CQ-014/OE-08 лишь смежны), план, пункт 4. Отдельные внутренние перестановки всех enum не входят в эту задачу.
codex-bot added the
Priority
Medium
3
Kind/Refactor
labels 2026-10-20 05:00:26 +03:00
Author
Owner

Delivery order: backend contract WealthLedger/backend#144 → frontend consumer WealthLedger/frontend#123. Close after both are merged.

Delivery order: backend contract WealthLedger/backend#144 → frontend consumer WealthLedger/frontend#123. Close after both are merged.
Author
Owner

Delivered in order: backend #144 (d37fa2c) → frontend WealthLedger/frontend#123 (32e8fe9). Both CI green. Follow-up (out of scope): type thrown exception payload code so a new code cannot bypass PROBLEM_CODES.

Delivered in order: backend #144 (d37fa2c) → frontend WealthLedger/frontend#123 (32e8fe9). Both CI green. Follow-up (out of scope): type thrown exception payload `code` so a new code cannot bypass `PROBLEM_CODES`.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#117