[BE-04] 컨텍스트 맵 베이스라인 회귀 스펙 (R1/R2 신규 분류 커버)
작업 내용 (설계 의도)
근거 TDD: ../TDD.md “컨텍스트 맵 5개 분류”, “FR-7 정적 검증 방법” R1/R2 / ADR-001
변경 사항
- 기존
AggregateAndUseCaseRulesTest(R1: 도메인 교차 참조 금지)·LayerDependencyRulesTest(R2: 레이어 방향)가 이미 통과 중(베이스라인 0건) 임을 전제로, 신규 분류 컨텍스트가 규칙 스캔에 빠짐없이 포함되는지 확인하는 회귀 스펙을 추가한다. - 검증 대상:
dashboard·image(조회·유틸, domain 레이어 없음)·weather(Entity 없는 generic subdomain)가 R1/R2 스캔에서 누락 없이 다뤄지는지 — 특히image의 도메인 로직이common/storage에 있음을 명시적으로 assert(공유 커널 위치 고정). application.dashboard가 코어를 읽기 조합하는 것은 정상 오케스트레이션이며 R1 domain-레이어 스캔 대상이 아님을 문서화하는 assert.- 신규 테스트 파일만 추가 — 프로덕션 코드 무변경.
위치
backend/src/test/kotlin/com/sportsapp/architecture/ContextMapBaselineTest.kt(신규)- 기존
architecture/스타일 준수. 기존 3개 파일은 수정하지 않는다(Single Writer 보호).
의존
- 없음 (독립 — 새 파일만 생성, 기존 파일 미수정)
다이어그램
처리 흐름
sequenceDiagram participant T as ContextMapBaselineTest participant A as ArchUnit T->>A: domain 하위 12 컨텍스트 slice 존재/무참조 확인 T->>A: image 도메인로직이 common.storage에 위치 확인 A-->>T: 베이스라인 0건 → PASS
클래스 의존
flowchart LR Test["ContextMapBaselineTest"] --> ArchUnit["ArchUnit"] Test --> Storage["common.storage.ImageDomainService"]
테스트 케이스
- domain 하위 12개 컨텍스트가 서로 domain-레이어 import를 하지 않으면 베이스라인이 통과한다 (R1 회귀 확인)
- ImageDomainService가 domain.common.storage 패키지에 위치하면 통과한다 (image 도메인 로직 위치 고정)
- weather 컨텍스트에 Entity가 없어도(gateway+service만) 규칙 스캔이 오류 없이 통과한다 (엣지: 빈 Aggregate)
- dashboard가 domain 레이어를 갖지 않으면 조회·유틸 분류 전제가 통과한다
- (위반 시나리오) 신규 도메인이 타 도메인 Entity를 domain 레이어에서 import하면 R1이 실패한다