[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.ktresolve(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를 반환한다