[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이 실패한다