Files
KArtSell.Aegis/docs/v12_2/02_ARCHITECTURE_REFACTORING_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.9 KiB

SOLID·리팩터링·구조화 실행 기준

1. 경계

  • Endpoint: HTTP/Auth/Header/Validation/ProblemDetails만 담당
  • Application: 유스케이스 조정, 멱등, 트랜잭션, Outbox
  • Domain Policy: 순수 결정, 우선순위, 상태전이, 단위
  • Infrastructure: Dapper/Npgsql/Adapter/Hangfire
  • Projection: 화면·리포트 전용, 버전·watermark·rebuild 가능

2. SOLID 적용

원칙 적용 금지
SRP 정책, 저장, 외부 I/O, 화면상태 분리 God Service, Job 내부 정책
OCP 명시적 policy/adapter registry와 contract test reflection plugin framework
LSP Adapter 교체 시 시점·단위·오류·멱등 동일 mock 성공만으로 승인
ISP IClock, ContextReader, SourceAdapter 등 좁은 Port 범용 Repository/대형 Service
DIP Domain은 FastEndpoints/Dapper/Npgsql을 모름 Infrastructure 타입의 Domain 침투

3. 리팩터링 규칙

  1. 동작보존 리팩터링과 정책/수식 변경은 별도 PR로 분리한다.
  2. Characterization/Golden test를 먼저 만든다.
  3. 중복은 코드 모양이 아니라 의미와 변경축이 같을 때만 추상화한다.
  4. 공통화는 3회 반복 후에도 동일 의미·변경축이 확인될 때 승격한다.
  5. 모든 클래스에 interface를 만들지 않는다.
  6. 모든 테이블을 event sourcing하지 않는다. Evidence/Decision/Audit처럼 불변 증거가 필요한 곳만 append-only로 한다.
  7. 조기 마이크로서비스 분리는 금지한다. Modular Monolith의 경계·스키마·Architecture Test가 먼저다.

4. Architecture Fitness Function

  • Domain 프로젝트의 FastEndpoints/Dapper/Npgsql/Hangfire 참조 0
  • 모듈 간 직접 DB schema 접근 0
  • Generic Repository 패턴 0
  • Endpoint 권한 선언 누락 0
  • 자동주문/KIS capability true 구성 0
  • Migration 번호 중복·역행 0
  • 문서/DDL/OpenAPI/Test 계약 diff 미검토 0