Files
KArtSell.Aegis/docs/v12_1/05_BE_FE_JOB_COMPONENT_STANDARD.md
T
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

1.6 KiB

BE·FE·Hangfire·컴포넌트 표준

Backend Slice

Endpoint → Request/Validator → Application UseCase → Domain Policy → Dapper SQL → Outbox → Tests

생산형 Command는 클라이언트가 Evidence/Model/Config를 임의 제공하지 못하게 한다. 서버가 승인된 PIT Read Model과 Version Set을 조회한다. Decision과 Outbox는 동일 트랜잭션이며, idempotency key 충돌 시 원결과를 반환하거나 409를 명시한다.

Outbox/Inbox

  • Outbox: 미발행 lease, attempt, next_attempt_at, dead-letter, payload hash.
  • Inbox: consumer+message unique, processing lease, result hash.
  • Exactly-once를 주장하지 않고 at-least-once + idempotent side effect를 구현한다.
  • replay는 승인·범위·watermark·dry-run·영향분석이 있어야 한다.

Hangfire

모든 Job은 JobRunId, JobType/Version, ScopeKey, IdempotencyKey, Watermark, Dataset/Model/Config/Code SHA, Input/Output Hash, Attempt, TraceId를 가진다. transient retry, business hold, DQ quarantine, poison event를 분리한다.

Frontend

  • TanStack Query: 서버 상태와 캐시.
  • Pinia: 세션·역할·UI preference. 서버 데이터를 복제하지 않는다.
  • vee-validate+Zod: 폼·요청/응답 runtime validation.
  • vue-router: 공유·복구 가능한 URL 상태.
  • AG Grid: 대량 목록의 server-side pagination/filter/sort.

공통 컴포넌트는 QueryStateBoundary, PermissionGuard, DataFreshnessBadge, EvidenceVersionSet, VersionConflictDialog, DataGridShell 후보로 한정한다. 동일 업무 의미와 변경축이 반복될 때만 승격한다.