Skip to content

feat: Tuist 워크스페이스 전환 및 AtchaV2(메인 2.0) 모듈 기반 구축 - #338

Merged
YuGeonHui merged 1 commit into
env/devfrom
feat/tuist-workspace
Aug 22, 2026
Merged

feat: Tuist 워크스페이스 전환 및 AtchaV2(메인 2.0) 모듈 기반 구축#338
YuGeonHui merged 1 commit into
env/devfrom
feat/tuist-workspace

Conversation

@YuGeonHui

Copy link
Copy Markdown
Collaborator

개요

앗차 "메인 2.0"(AtchaV2)을 위한 Tuist 4 기반 모듈 구조를 구축합니다. 레거시 앱은 단일 Tuist 타겟으로 래핑해 같은 워크스페이스에 두고, 기존 Atcha-iOS.xcodeproj는 전환기 동안 그대로 유지합니다 (CI/fastlane 무영향 — 여전히 기존 xcodeproj로 빌드됨).

주요 변경

워크스페이스 / 도구

  • Tuist 4.202 (mise 고정, mise.toml) — tuist generateAtcha.xcworkspace 생성 (생성물은 gitignore)
  • Scripts/bootstrap.sh: gitignore된 xcconfig 4개의 빈 스탠드인 생성 → tuist installtuist generate (xcconfig 부재 시 generate가 실패하므로 필수)
  • SPM 의존성은 Tuist/Package.swift로 통합, Package.resolved 커밋 (Amplitude branch 리비전 고정)

AtchaV2 (신규 메인 2.0 앱)

  • Swift 6 (SWIFT_DEFAULT_ACTOR_ISOLATION=MainActor) / iOS 26.0 (AlarmKit 대비, NSAlarmKitUsageDescription 포함) / 번들 com.atcha.iOS.v2 / Debug·Stage·Release 3구성
  • 코드 기반 AppEnvironment (DEV/STAGE/LIVE 컴파일 플래그 — 런타임에 xcconfig 의존 없음)
  • Firebase(Core/Crashlytics/Messaging)는 v2용 GoogleService-Info.plist 준비 전까지 가드 후 configure

모듈 구조 (uFeatures + 클린아키텍처)

AtchaV2 ─► HomeFeature ─► {HomeFeatureInterface, Domain, DesignSystem, CoreCoordinator, SnapKit}
   └─► AtchaData ─► {Domain, CoreNetwork}     ※ Feature는 AtchaData import 금지, Domain 무의존
  • Domain: Entity(HomeSummary) · 추상화 UseCase(프로토콜+구현) · Repository 인터페이스
  • AtchaData: Request/Response DTO(toEntity() 매핑) · RepositoryImpl
  • HomeFeature: Interface/Sources/Tests/Example 4타겟 — @MainActor ViewModel · ViewData · 피처 DIContainer(조립) · Coordinator(흐름)
  • CoreNetwork: Endpoint 추상화 · NetworkClient 프로토콜 · URLSession async/await 구현
  • CoreCoordinator: finish delegate 포함 (자식 코디네이터 누수 방지 규칙 내장)
  • DesignSystem: DSColor/DSFont/DSSpacing 토큰 · DSButton · 다크모드 대응 컬러셋
  • Legacy: 기존 285개 소스를 제자리 참조로 단일 타겟 래핑, 스킴명(Atcha-Dev/Stage/Live) 보존. 기존 프로젝트가 컴파일하지 않던 죽은 파일(App/DIContainer/DIContainer.swift) 제외, 번들에 실수 복사되던 xcconfig(시크릿) 리소스 제외

검증

  • tuist generate + 의존 그래프 (Feature→AtchaData 엣지 없음)
  • AtchaV2 Debug/Stage 시뮬레이터 빌드
  • HomeFeature 테스트 통과 (Swift Testing)
  • 레거시 Atcha-Dev 디바이스 빌드 (TMapSDK가 디바이스 전용이라 시뮬 빌드는 원래 불가)
  • iOS 26 시뮬레이터 실기동 — 홈 화면·상태 렌더링·DS 토큰 확인

후속 작업 (범위 밖)

실제 API base URL 입력 / v2용 GoogleService-Info.plist·APNs·match / V2 앱 아이콘 / CI의 Tuist 전환(mise 스텝, build_app(workspace:), agvtool 대체) / AlarmKit Live Activity 위젯 익스텐션

🤖 Generated with Claude Code

- Tuist 4.202 워크스페이스 도입: 레거시 앱을 단일 타겟(Projects/Legacy)으로 래핑, 기존 xcodeproj는 전환기 동안 유지
- AtchaV2 신규 앱 타겟: Swift 6 / iOS 26(AlarmKit 대비) / com.atcha.iOS.v2 / Debug·Stage·Release 3구성
- 마이크로피처(uFeatures) + 클린아키텍처 스켈레톤:
  - Domain(Entity·추상화 UseCase·Repository 인터페이스), AtchaData(DTO·RepositoryImpl)
  - HomeFeature(Interface/Sources/Tests/Example 4타겟, @mainactor ViewModel·ViewData)
  - CoreNetwork(Endpoint·NetworkClient), CoreCoordinator(finish delegate 포함), DesignSystem(토큰·DSButton)
- 코드 기반 AppEnvironment(DEV/STAGE/LIVE 컴파일 플래그), Firebase는 plist 존재 가드 후 configure
- Scripts/bootstrap.sh: gitignore된 xcconfig 스탠드인 생성 후 tuist install/generate
- 검증: AtchaV2 Debug/Stage 시뮬 빌드, HomeFeature 테스트(Swift Testing), 레거시 디바이스 빌드 통과

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@YuGeonHui
YuGeonHui merged commit 117b352 into env/dev Aug 22, 2026
1 check passed
@YuGeonHui
YuGeonHui deleted the feat/tuist-workspace branch August 22, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant