배경
Today 탭은 오늘 기준 Todo 요약과 기한 기반 섹션을 담당하는 독립적인 탭 흐름임.
#663 / #677에서 Home 탭은 Application/Presentation/Project.swift 안의 HomeTab static framework target으로 분리되었고, Presentation target은 tab shell/root composition을 유지하면서 HomeTab을 import해 조립하는 구조가 됨.
Today 탭 분리도 같은 방향을 따른다. 즉, Today 탭의 화면, TCA feature, coordinator, route를 Presentation target에서 분리해 TodayTab target이 소유하도록 정리하되, tab shell과 공통 상세 화면 조립은 Presentation에 남김.
선행 작업
목표
TodayTab target을 만들고 Today 탭 흐름을 HomeTab과 같은 패턴의 별도 static framework target으로 분리함.
작업 범위
제외 범위
- Home/Notification/Profile 탭 모듈 분리
PresentationShared 신규 분리 또는 공용 Todo/Search/WindowGroup feature 재이동
- Todo 상세 feature의 별도 소유권 변경
Presentation shell을 제거하거나 tab root composition 책임을 TodayTab으로 이전
HomeTab과 다른 별도 public entry wrapper 또는 route abstraction 추가
- Domain/Data/Infra/Persistence 경계 변경
- Today 기능 동작 변경
- TCA reducer/action/state 책임 변경
- 탭 간 직접 의존 추가
검증
의존 방향 정책
Presentation은 tab shell/root composition에서 HomeTab과 같은 방식으로 TodayTab을 직접 import하고 조립함
TodayTab은 Presentation을 import하지 않음
TodayTab은 필요한 경우 PresentationShared, Domain, Core만 직접 참조함
TodayTab은 다른 탭 모듈을 import하지 않음
PresentationShared는 TodayTab 또는 다른 탭 모듈을 import하지 않음
- Todo 상세 화면처럼 여러 탭에서 공유되는 흐름은
PresentationShared와 Presentation shell 조립 경계를 유지함
기대 효과
- Today 탭 소유권 분리
- Today 관련 TCA feature와 테스트의 독립 빌드 가능성 확보
- #677에서 확정된
HomeTab 분리 패턴과 일관된 탭 기반 모듈러 아키텍처 적용 범위 확장
배경
Today 탭은 오늘 기준 Todo 요약과 기한 기반 섹션을 담당하는 독립적인 탭 흐름임.
#663 / #677에서 Home 탭은
Application/Presentation/Project.swift안의HomeTabstatic framework target으로 분리되었고,Presentationtarget은 tab shell/root composition을 유지하면서HomeTab을 import해 조립하는 구조가 됨.Today 탭 분리도 같은 방향을 따른다. 즉, Today 탭의 화면, TCA feature, coordinator, route를
Presentationtarget에서 분리해TodayTabtarget이 소유하도록 정리하되, tab shell과 공통 상세 화면 조립은Presentation에 남김.선행 작업
PresentationShared모듈로 분리HomeTab모듈로 분리목표
TodayTabtarget을 만들고 Today 탭 흐름을HomeTab과 같은 패턴의 별도 static framework target으로 분리함.작업 범위
Application/Presentation/Project.swift에TodayTabstatic framework target 추가Application/Presentation/Project.swift에TodayTabTestsunit test target 추가TodayFeature,TodayFeature+State,TodayView,TodayViewCoordinator를Application/Presentation/TodayTab/Sources로 이동TodayRoute와 Today 탭이 직접 소유해야 하는 presentation structure 이동 여부 검토Application/Presentation/TodayTab/Tests로 이동Presentationtarget이TodayTab에 의존하도록 target dependency 정리MainView가TodayTab을 import하고TodayViewCoordinator,TodayView,TodayRoute를HomeTab과 같은 방식으로 조립하도록 수정제외 범위
PresentationShared신규 분리 또는 공용 Todo/Search/WindowGroup feature 재이동Presentationshell을 제거하거나 tab root composition 책임을TodayTab으로 이전HomeTab과 다른 별도 public entry wrapper 또는 route abstraction 추가검증
TodayTabbuild 실행TodayTabTests또는 이동한 Today 테스트 실행Presentationbuild 또는 build-for-testing 실행TodayTab이Presentation또는 다른 탭 모듈을 import하지 않는지 확인PresentationShared가TodayTab또는 다른 탭 모듈을 import하지 않는지 확인의존 방향 정책
Presentation은 tab shell/root composition에서HomeTab과 같은 방식으로TodayTab을 직접 import하고 조립함TodayTab은Presentation을 import하지 않음TodayTab은 필요한 경우PresentationShared,Domain,Core만 직접 참조함TodayTab은 다른 탭 모듈을 import하지 않음PresentationShared는TodayTab또는 다른 탭 모듈을 import하지 않음PresentationShared와Presentationshell 조립 경계를 유지함기대 효과
HomeTab분리 패턴과 일관된 탭 기반 모듈러 아키텍처 적용 범위 확장