Skip to content

Today 탭을 TodayTab 모듈로 분리한다 #664

Description

@opficdev

배경

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으로 분리함.

작업 범위

  • Application/Presentation/Project.swiftTodayTab static framework target 추가
  • Application/Presentation/Project.swiftTodayTabTests unit test target 추가
  • TodayFeature, TodayFeature+State, TodayView, TodayViewCoordinatorApplication/Presentation/TodayTab/Sources로 이동
  • TodayRoute와 Today 탭이 직접 소유해야 하는 presentation structure 이동 여부 검토
  • Today 관련 테스트를 Application/Presentation/TodayTab/Tests로 이동
  • Presentation target이 TodayTab에 의존하도록 target dependency 정리
  • MainViewTodayTab을 import하고 TodayViewCoordinator, TodayView, TodayRouteHomeTab과 같은 방식으로 조립하도록 수정
  • 모듈 경계에 필요한 타입과 initializer의 access control 조정
  • README 아키텍처 그래프와 모듈 설명이 현재 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 책임 변경
  • 탭 간 직접 의존 추가

검증

  • 이동한 Swift 파일 대상 SwiftLint 실행
  • TodayTab build 실행
  • TodayTabTests 또는 이동한 Today 테스트 실행
  • Presentation build 또는 build-for-testing 실행
  • TodayTabPresentation 또는 다른 탭 모듈을 import하지 않는지 확인
  • PresentationSharedTodayTab 또는 다른 탭 모듈을 import하지 않는지 확인

의존 방향 정책

  • Presentation은 tab shell/root composition에서 HomeTab과 같은 방식으로 TodayTab을 직접 import하고 조립함
  • TodayTabPresentation을 import하지 않음
  • TodayTab은 필요한 경우 PresentationShared, Domain, Core만 직접 참조함
  • TodayTab은 다른 탭 모듈을 import하지 않음
  • PresentationSharedTodayTab 또는 다른 탭 모듈을 import하지 않음
  • Todo 상세 화면처럼 여러 탭에서 공유되는 흐름은 PresentationSharedPresentation shell 조립 경계를 유지함

기대 효과

  • Today 탭 소유권 분리
  • Today 관련 TCA feature와 테스트의 독립 빌드 가능성 확보
  • #677에서 확정된 HomeTab 분리 패턴과 일관된 탭 기반 모듈러 아키텍처 적용 범위 확장

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions