package boundary

패키지 경계는 공유 계약과 런타임 책임을 분리해 결정한다

shared에는 양쪽이 합의해야 하는 타입만 두고, 실제 구현과 입력 검증은 책임 계층 안에 배치한다.

공유 계약DTO, enum, ApiResult

client와 server가 모두 알아야 하는 모양만 둔다.

구현 전용UI, DB, infra

변경이 잦은 로직은 각 패키지 내부에 둔다.

입력 검증unknown 좁히기

API 경계에서 런타임 값으로 확인한다.

구분의미판단
shared에 둘 것요청/응답 DTO양쪽 계약이 바뀌면 함께 수정되어야 함
넣지 말 것화면 상태, DB 접근, 배포 설정한 계층 전용 책임
테스트계약 테스트와 계층 테스트 분리공유 타입과 런타임 검증의 간극 확인

핵심 shared가 커질수록 결합도도 커지므로 공유는 계약으로 제한하고 구현은 각 패키지 안에서 닫아 둔다.