feat: AtchaV2 Phase 4 — DesignSystem 신규 구축 (TDS식 2계층 토큰 + 컴포넌트 11종 + 갤러리) - #342
Merged
Conversation
- Domain: Place/LastRoute/AlarmInfo 엔티티, LastRouteSearchResult 정규화 enum, Repository·디바이스 포트 6종, UseCase 7종 (등록 순서·정규화 정책 포함) - AtchaData: Route/Place/Alarm 엔드포인트, APIResponse envelope 해체 헬퍼, 레거시 실측 DTO 이식(toEntity, KST 고정 파싱, mode unknown 폴백), RepositoryImpl 3종 - 테스트: Domain 정책 8개 + AtchaData 인라인 픽스처 28개 (Swift Testing) - 미확정 입력 #3(빈 목록=serviceEnded 가정)·#4(클라 삭제 후 등록)는 TODO로 격리 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- CoreStorage 레이어 모듈 신설 (KeyValueStore 프로토콜 + Codable 헬퍼, UserDefaultsKeyValueStore, KeychainStore — 레거시 키체인+메모리 캐시 패턴을 Mutex 기반 Sendable-clean으로 재작성) - AtchaData에 RecentSearchRepositoryImpl (최대 10개, 중복 시 최신 갱신, 최신순, 삭제 지원) + RecentSearchRecordDTO - 테스트는 인메모리 KeyValueStore 스텁 (실 UserDefaults 미사용) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- CoreAuth 모듈 신설(.nonisolated, CoreNetwork+CoreStorage 의존) - TokenStore: 키체인 기반 액세스/리프레시 토큰 보관(레거시 키 계약 유지) - AuthSessionManager(actor): 익명 부트스트랩 + GET /auth/reissue 리프레시 (토큰 회전) + 401 복구 체인, single-flight - AuthenticatedNetworkClient: Bearer 부착 → 401 시 복구 1회 → 재시도, 공개 경로 suffix 주입, 복구 불능 시 원 401 전파 (AtchaData/Feature 무변경) - App: 데코레이터 주입(AppDIContainer), 스플래시 단계(AppCoordinator + SplashViewController), base URL 실호스트 반영(atcha.p-e.kr / atcha.online) - 익명 발급 엔드포인트는 스펙 미정(미확정 입력 #2) — 프로토콜+스텁, 실호출 보류 - 테스트 30개(Swift Testing): 401 체인·동시 401 리프레시 1회·공개 경로 예외 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…갤러리) - 토큰 2계층화: DSPalette(primitive — grey 11단·lime 4단·red·교통 노선 30종) → DSColor(semantic 중첩 네임스페이스). 폴백 hex = 에셋 동일값으로 호스트리스 테스트에서도 결정적 - DSResourceBundle: fatalError 없는 번들 파인더 (Tuist Bundle.module 대체) - DSTypography 11 프리셋(Pretendard 임베드 + CTFontManager 런타임 등록, 실패 시 시스템 폰트 폴백) + DSRadius/DSIconSize/DSSpacing 확장 - 컴포넌트: DSButton(4스타일×3사이즈, 구 API 호환), DSTextField(포커스 보더), DSListCell, DSTransportBadge, DSRouteCard, DSBanner, DSToast(액션 지원), DSEmptyState, DSNavigationBar, DSSectionHeader, DSSeparator - 브랜드 에셋 이식(새 네이밍 ic*/illust*), 레거시 ds* colorset 3종 제거 (flat API는 deprecated 별칭으로 유지 — HomeFeature 무변경) - Project.layer에 example 파라미터 추가 → DesignSystemExample 갤러리 앱 - 테스트 53개(13 suites) 전부 통과, Debug/Stage 빌드 통과 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
개요
AtchaV2 Phase 4 — DesignSystem 신규 구축. TDS식 2계층 토큰 체계 + 컴포넌트 11종 + 갤러리 앱. 레거시 1:1 이식이 아닌 새 네이밍/새 체계입니다 (flat DSColor 별칭은 deprecated로 유지 — HomeFeature 무변경).
주요 변경
토큰
DSPalette(primitive — grey 11단·lime 4단·red·교통 노선 30종) →DSColor(semantic 중첩 네임스페이스). 폴백 hex = 에셋 동일값으로 호스트리스 테스트에서도 결정적DSTypography11 프리셋 (Pretendard 임베드 + CTFontManager 런타임 등록, 실패 시 시스템 폰트 폴백) +DSRadius/DSIconSize/DSSpacing확장DSResourceBundle: fatalError 없는 번들 파인더 (TuistBundle.module대체)컴포넌트 11종
DSButton(4스타일×3사이즈, 구 API 호환) · DSTextField(포커스 보더) · DSListCell · DSTransportBadge · DSRouteCard · DSBanner · DSToast(액션 지원) · DSEmptyState · DSNavigationBar · DSSectionHeader · DSSeparator
기타
ic*/illust*), 레거시ds*colorset 3종 제거Project.layer에 example 파라미터 추가 → DesignSystemExample 갤러리 앱검증
🤖 Generated with Claude Code