# V13-FE-033 — KBX ProblemDetails adoption Slice note ## Scope - **WBS:** V13-FE-033 - **Requirement/API/Test:** REQ-FE-ERROR / Cross / T-FE-ERROR-01 - **Goal:** KBX v60 problem discriminator and recovery metadata를 현재 ASP.NET ProblemDetails + Zod 경계에 제한적으로 차용한다. - **Status:** IN_PROGRESS ## Source / Assumption / Unknown / Decision Required - **Source:** `docs/Design/kbx-foundation-v60-status-canonical-contract-hardening/contracts/problems/kbx.problem.schema.json`, `packages/kbx-ui`의 오류 계약, 현재 `frontend/src/shared/api/problem.ts`와 `client.ts`. - **Assumption:** 기존 `status` HTTP 필드는 유지한다. KBX `type`은 도메인 오류 분류를 보강하는 discriminator로만 사용한다. - **Unknown:** BE가 실제로 `correlationId`, `retryable`, `validationErrors`, `actions`를 어떤 JSON naming policy로 발행하는지와 모든 endpoint의 응답 일관성. - **Decision Required:** BE/Architect가 공통 ProblemDetails payload의 필드명과 401/403/409/422/429/503별 표준 메시지·재시도 정책을 승인해야 한다. ## Adopted - Discriminator: `validation`, `business-rule`, `conflict`, `permission`, `not-found`, `integration`, `system`. - Recovery metadata: `correlationId`, `code`, `retryable`, `currentVersion`, `actions`, structured validation errors. - Pure FE interaction mapping: `UNAUTHORIZED`, `FORBIDDEN`, `CONFLICT`, `VALIDATION`, `RETRYABLE`, `ERROR`. ## Explicitly not adopted - OMS lifecycle/shipment status values, OMS routes, database migrations, generated clients, PrimeVue/AG Grid imports, automatic retry execution, or KIS/order submission behavior. - No server-side error contract was invented; current implementation accepts the proposed fields but does not claim BE parity. ## Evidence - `pnpm exec vitest run src/shared/api/tests/problem.spec.ts`: 1 file, 9 tests passed. - `pnpm typecheck`: passed (`vue-tsc --noEmit`). ## Remaining acceptance evidence - BE contract fixture or live endpoint evidence for all six interaction classes. - API Architect approval of field naming, redaction, correlation propagation, and retry ownership. - Browser/component evidence that each standard state renders the approved action without duplicate submission.