ADR-0026: Result И Error Handling Standard
Статус
Принято.
Контекст
Сервисы Pin должны одинаково возвращать controlled business errors, validation failures, authorization failures и unexpected exceptions. Raw exceptions и provider payloads нельзя раскрывать клиентам.
Решение
Используем shared ApplicationError/Result<T> model и стабильные error.code как API contract. HTTP mapping выполняется в API layer через общий problem response mapper. Ожидаемые бизнес-ошибки не бросаются как raw exceptions.
Последствия
- Каждый feature handler возвращает typed result/failure.
- Error codes документируются и не меняются без compatibility review.
- Каждый сервис ведет error catalog с category, HTTP status, retryability и localization key.
- Validation errors используют field-level typed model со stable field error codes.
- Provider/internal details логируются безопасно и маппятся в public error code.
- Frontend clients используют
error.code, а не текст сообщения.