fix(creator): 구매완료 배지를 제거한다

This commit is contained in:
Yu Sung
2026-08-10 16:39:23 +09:00
parent 00c40161c9
commit a845b54f0f
4 changed files with 184 additions and 16 deletions

View File

@@ -368,6 +368,41 @@
- 하트 tap 시 기존 좋아요 API가 호출되고 icon/count가 갱신된다.
- 실행 후 이 문서의 `검증 기록` 섹션에 실행 일자, 명령, 결과를 누적한다.
### Phase 8: 구매완료 배지 제거
**Phase 결과:** 구매한 유료 커뮤니티 게시글 상세에서 `구매완료` 배지가 표시되지 않고 기존 잠금·구매·상세 콘텐츠 흐름은 유지된다.
**선행조건:** PRD `DEC-001` 확정.
#### Task 8.1 구매완료 배지 렌더링 제거
**Goal 실행 `P8-T1`:** 상세 콘텐츠의 구매완료 배지만 최소 범위로 제거한다.
- **완료 증거:** `purchase_badge_absent` contract check 통과, 인접 잠금/reaction contract 유지, `SodaLive-dev` Debug 빌드 성공.
- **범위 밖:** `existOrdered` 모델, 잠금 overlay, 구매 다이얼로그/API, 목록·그리드 UI 변경.
- **TDD 방식:** 테스트 번들 타깃이 없는 현재 저장소 제약에 따라 source contract check를 focused test로 사용한다.
**Files:**
- Modify: `SodaLive/Sources/V2/CreatorChannel/Community/Detail/Components/CreatorChannelCommunityPostDetailContentView.swift`
- Modify: `docs/20260707_커뮤니티_게시글_상세/prd.md`
- Modify: `docs/20260707_커뮤니티_게시글_상세/plan-task.md`
- [x] **RED:** `purchase_badge_absent` contract check를 정의한다.
- [x] **RED 확인:** `if rg -n 'purchaseCompleteTag|Text\("구매완료"\)' SodaLive/Sources/V2/CreatorChannel/Community/Detail/Components/CreatorChannelCommunityPostDetailContentView.swift; then exit 1; fi`를 실행해 3개 매치와 exit code 1을 확인한다.
- [x] **GREEN:** header의 구매완료 조건부 렌더링과 `purchaseCompleteTag` computed property를 제거한다.
- [x] **GREEN 확인:** 같은 `purchase_badge_absent` contract check가 매치 없이 exit code 0으로 성공하는지 확인한다.
- [x] **REFACTOR:** 추가 정리 없이 diff가 배지 렌더링 제거로만 제한되는지 확인한다.
#### Task 8.2 회귀 및 빌드 검증
**Goal 실행 `P8-GATE`:** 구매완료 배지 제거와 인접 유료 게시글 흐름 보존을 판정한다.
- [x] `rg -n 'isPaidLocked|Button\(action: onTapPurchase\)|paidLockedOverlay|reactionBar' SodaLive/Sources/V2/CreatorChannel/Community/Detail/Components/CreatorChannelCommunityPostDetailContentView.swift`에서 잠금·구매·reaction 경로가 유지되는지 확인한다.
- [x] `git diff --check -- docs/20260707_커뮤니티_게시글_상세 SodaLive/Sources/V2/CreatorChannel/Community/Detail/Components/CreatorChannelCommunityPostDetailContentView.swift`가 성공하는지 확인한다.
- [x] `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build``BUILD SUCCEEDED`로 끝나는지 확인한다.
- [x] 가능한 simulator/API-backed 환경에서 구매한 유료 글의 배지 미표시, 미구매 글의 잠금·가격 표시, 무료 글의 상세 콘텐츠를 확인하고 결과 또는 불가 사유를 검증 기록에 남긴다.
## 검증 기록
- 2026-07-07: `docs/20260707_커뮤니티_게시글_상세/prd.md`, `docs/agent-guides/build-test-verification.md`, 기존 `docs/20260707_글_상세_답글_쓰기/plan-task.md`, `docs/20260705_크리에이터_채널_커뮤니티_탭/plan-task.md`를 확인해 구현 범위와 문서 형식을 정했다.
@@ -380,3 +415,8 @@
- 2026-07-07: `rg "canReport|onTapReport|showReportError|CreatorChannelActionPopupWithReport|private struct CreatorChannelActionPopup|신고" SodaLive/Sources/V2/CreatorChannel/Community/Detail` 실행 결과 fake report 제거 후 출력이 없음을 확인했다.
- 2026-07-07: 커뮤니티 댓글 신고 흐름은 기존 `ReportRequest`/`ReportType`에 커뮤니티 댓글 신고 식별자가 없어 연결하지 못했다. 구현은 기존 `CreatorCommunityCommentItemView`의 수정/삭제 popup 동작과 동일하게 맞췄고, fake report action은 노출하지 않는다.
- 2026-07-07: 정적 검증과 Debug 빌드 검증은 완료했다. Task 7.3의 device/simulator/API-backed 환경 수동 runtime QA는 아직 수행하지 않았다.
- 2026-08-10: PRD `DEC-001`에 구매완료 배지 제거와 잠금·구매 흐름 유지 범위를 확정했다. 구현 전 `purchase_badge_absent` contract check는 `purchaseCompleteTag``Text("구매완료")` 3개 매치로 exit code 1이 되어 의도한 RED 실패를 확인했다.
- 2026-08-10: header의 구매완료 조건부 렌더링과 `purchaseCompleteTag`만 제거했다. 같은 `purchase_badge_absent` contract check는 0개 매치로 통과했고, `isPaidLocked`, `Button(action: onTapPurchase)`, `paidLockedOverlay`, `reactionBar` 8개 매치가 유지됨을 확인했다.
- 2026-08-10: `git diff --check -- docs/20260707_커뮤니티_게시글_상세 SodaLive/Sources/V2/CreatorChannel/Community/Detail/Components/CreatorChannelCommunityPostDetailContentView.swift`는 출력 없이 성공했다. `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build``BUILD SUCCEEDED`로 통과했다.
- 2026-08-10: iPhone 16 Pro Simulator에 `SodaLive-dev`를 설치·실행해 앱 홈 화면 진입 screenshot을 확보했다. 상세 화면 직접 수동 QA는 앱 공개 deeplink가 상세가 아닌 커뮤니티 목록으로 이동하고, macOS GUI 자동화는 Apple Events 권한 `-1743`으로 차단되며, 사용자가 LLDB 기반 주입 검증을 건너뛰라고 지시해 수행하지 않았다. 따라서 실제 API-backed 구매/미구매/무료 상세 화면의 pixel QA는 미검증으로 남기고, source contract·Debug build·앱 launch smoke로 대체했다.
- 2026-08-10: 리뷰 리포트 `docs/20260707_커뮤니티_게시글_상세/reviews/phase8-remove-purchase-complete-badge.md`를 작성했다. 초기 리뷰에서 회귀 검색 매치 수 기록 불일치가 확인되어 8개로 정정했고, 같은 Oracle 리뷰 세션의 재검증에서 PASS, blocker 없음 판정을 받았다.