[BE-01] Facility 지역 계약 — FacilityRegion VO + RegionResolveGateway 인터페이스
작업 내용 (설계 의도)
변경 사항
facility 도메인이 소유하는 지역 계약을 최소 단위로 확립한다. 후행 티켓(region 구현·facility 데이터층·적재·백필)이 전부 import하는 연관 병목이므로 wave 1에 단독 배치한다. 근거 TDD: ../TDD.md “인터페이스 시그니처”, “도메인 바운디드 컨텍스트 경계 판단”.
domain/facility/vo/FacilityRegion.kt— 시도/시군구 코드·명칭 4필드 값객체.UNSPECIFIED(00/00000/미지정) 상수,isUnspecified(),of(...)팩토리.domain/facility/gateway/RegionResolveGateway.kt—resolve(address: String, sidoHint: String?): FacilityRegion인터페이스. 실패 시 UNSPECIFIED 반환(예외 금지)을 계약 주석에 명시.- 순수 도메인만 — 다른 도메인 패키지·infra import 0.
의존
- 없음
다이어그램
클래스 의존
flowchart LR Region[FacilityRegion VO] Gw[RegionResolveGateway iface] Gw --> Region
테스트 케이스
- UNSPECIFIED 상수는 sidoCode 00·sigunguCode 00000·명칭 미지정을 가지며 isUnspecified()가 true를 반환한다
- of 팩토리는 전달된 코드·명칭을 그대로 보유한다
- 일반 코드(서울 11/11110)로 생성한 값은 isUnspecified()가 false를 반환한다