Initial commit: Add project files
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# 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` 후보로 한정한다. 동일 업무 의미와 변경축이 반복될 때만 승격한다.
|
||||
Reference in New Issue
Block a user