diff --git a/myApp/HaruDanim/CLAUDE.md b/myApp/HaruDanim/CLAUDE.md index 192d4c0..36e62a0 100644 --- a/myApp/HaruDanim/CLAUDE.md +++ b/myApp/HaruDanim/CLAUDE.md @@ -2,7 +2,7 @@ > **한 줄 소개**: 하루의 습관과 시간을 추적하는 iOS 앱. "행동"의 **시간을 측정**하거나 **횟수를 기록**하고, 이를 바탕으로 **목표(Goal)와 다짐(Quest)** 의 달성률을 관리한다. 프리미엄(StoreKit 2)으로 위젯·워치·iCloud 동기화·iPad 일기를 제공한다. > -> 문서 버전: v2.1 (2026-07-16) — **실제 구현 코드를 기준으로 작성된 현행 명세**. 새 세션에서 이 문서만 읽어도 앱 전체를 파악할 수 있도록 유지한다. 기능이 바뀌면 이 문서도 함께 갱신할 것. +> 문서 버전: v2.2 (2026-07-17) — **실제 구현 코드를 기준으로 작성된 현행 명세**. 새 세션에서 이 문서만 읽어도 앱 전체를 파악할 수 있도록 유지한다. 기능이 바뀌면 이 문서도 함께 갱신할 것. --- @@ -16,7 +16,7 @@ | 번들 ID | `com.yechan.HaruDanim` / App Group `group.com.yechan.HaruDanim` / CloudKit `iCloud.com.yechan.HaruDanim` | | 수익 모델 | 부분 유료화. 무료 한도(행동 10·목표 2·목표당 다짐 3) + 프리미엄 결제 시 해제 | | 결제 상품 | `com.yechan.HaruDanim.premium.monthly`(월 5,000원) / `.yearly`(년 50,000원) / `.lifetime`(80,000원) — 임시 가격, App Store Connect 등록은 아직 안 됨 | -| 현재 상태 (2026-07-17) | **기능 동결(release freeze)** — 첫 배포 후보(RC)는 커밋 `f05e611`(버전 1.0 (1)). 이후 실사용 보고로 버그 수정 라운드 진행됨: l10n 누락·워치 컴플리케이션 추천 캡·⑥ 위젯 종료 버튼·진행률 환산 캡/수행일 집계(§4.2) + 파일명·CSV 헤더 현지화 + 워치 컴플리케이션 목표 필터(§6.4·§11, 사용자 승인 소기능). **사업자 등록 완료, 통신판매업 신고 처리 대기(2~3일)** — 처리되면 ASC 등록·유료 계약 진행. 버그 수정은 최소 변경 + 시뮬레이터 재검증 + Debug/Store 빌드 확인 + 커밋·푸시 | +| 현재 상태 (2026-07-17) | **기능 동결(release freeze)** — 첫 배포 후보(RC)는 커밋 `f05e611`(버전 1.0 (1)). 이후 실사용 보고 기반 수정 라운드가 진행됨(전부 커밋·푸시·실기기 확인 완료): l10n 누락 일괄·ja 앱 이름 'Haru Danim' 통일·워치 컴플리케이션 추천 캡 제거(§11)·⑥ 위젯 종료 버튼(§10)·진행률 환산 캡+수행일 집계+수행일 아님 표기(§4.2)·파일명/CSV 헤더 현지화(§7)·워치 컴플리케이션 목표 필터(§6.4·§11, 사용자 승인 소기능). **App Store 등록 자료는 `Marketing/`에 완비**(설명·키워드·구독 메타·스크린샷 원본/합성판, README에 재생성 절차 — 앱 변경이 자료에 영향 주면 요청 없이 함께 갱신할 것). **사업자 등록 완료, 통신판매업 신고 처리 대기** — 처리되면 ASC 등록·유료 계약 진행(순서는 Marketing/README 체크리스트). 사용자는 계속 실사용 테스트 중이며 버그 보고 시: 최소 변경 + 시뮬레이터 재검증 + l10n 루틴(§2.3) + Debug/Store(워치 파일이면 워치까지) 빌드 + 커밋·푸시 | | 남은 배포 작업 | App Store Connect 상품 3종 등록(구독 그룹 + 비소모성, 유료 앱 계약), **CloudKit 프로덕션 스키마 배포**(대시보드 Deploy Schema to Production — DiaryTemplate 등 새 레코드 타입/필드는 개발 환경에만 자동 생성되므로 출시 전 필수), 실기기 검증(펜슬 필기감·캘린더 권한), App Store 배포. 코드 측 잔여 없음 — `ITSAppUsesNonExemptEncryption=NO` 등록 완료, **개인정보 매니페스트(PrivacyInfo.xcprivacy) 4개 번들 완비**(UserDefaults CA92.1·1C8F.1, 수집·트래킹 없음 — 위젯·워치위젯 폴더 것은 앱·워치 앱 타깃에서 membershipException으로 중복 복사 제외), 결제 화면 약관 링크 완료(개인정보처리방침 `Docs/PRIVACY.md` ko/en/ja는 `github.com/notalentprogrammer/HaruDanim` main의 PRIVACY.md로 게시됨, 이용약관은 Apple 표준 EULA URL). ASC 등록 시 앱 설명에도 두 링크 기재 + '앱 개인정보 보호'는 "데이터 수집 안 함" 선택 | --- @@ -56,7 +56,8 @@ xcodebuild -project Haru_Danim.xcodeproj -scheme Haru_Danim-Store \ -destination 'platform=iOS Simulator,id=' build ``` -- 자주 쓰는 시뮬레이터: iPhone `B1346141-3991-46BF-A12B-A66184FAEBC2`, iPad Pro 11(M5) `CC81FCE1-20D6-460F-9E90-BE949E7388FC`, 워치 watchOS 11.5(최소 OS 근접 검증용) `686B7E3C-C685-409E-B624-B409E5F7D06D` / watchOS 26.2 `3B7C0B47-EBD0-41C9-8BC3-166AA35F80D4` +- 자주 쓰는 시뮬레이터: iPhone `B1346141-3991-46BF-A12B-A66184FAEBC2`, iPad Pro 11(M5) `CC81FCE1-20D6-460F-9E90-BE949E7388FC`, 워치 watchOS 11.5(최소 OS 근접 검증용) `686B7E3C-C685-409E-B624-B409E5F7D06D` / watchOS 26.2 `3B7C0B47-EBD0-41C9-8BC3-166AA35F80D4`. 마케팅 스크린샷용(Marketing/README): iPhone 17 Pro Max(6.9") `DB9D0281-123D-425D-9547-10CFF7946733`, iPad Pro 13"(M5) `39E5A4BE-9082-47AF-B6E4-1B9E8D271681`, 비페어링 워치 'MarketingWatch' `0A2CB37C-A755-4784-9D14-C7AB8FD72C3E`, 페어링 워치(iPhone B134와 페어) `8B57A70E-C0E1-43F2-BB4C-FEB05E82D741` +- ⚠️ 같은 프로젝트에 xcodebuild 2개를 **동시에** 돌리면 빌드 DB 경합으로 위장 실패(BUILD FAILED인데 에러 없음) — 항상 직렬로. `simctl install` 직후의 `launch`는 런치 인자가 무시될 수 있음 — terminate 후 `sleep 2` 두고 재실행 - 워치 UI 검증: 스킴 `Haru_DanimWatch Watch App` + `platform=watchOS Simulator` 대상으로 빌드·설치 후 `-complicationPreview` 인자로 실행(§14 워치) — 페어링 폰 없이 컴플리케이션 3종 미리보기가 렌더된다 - **SourceKit 인라인 진단은 항상 오탐 노이즈**("No such module 'UIKit'" 등) — 판정은 xcodebuild 결과만 신뢰 - DEBUG 런치 인자 검증은 **콜드 스타트 필수** (terminate 후 재실행). 목록은 §14