fix(creator): 공지 상세 이동을 연결한다
This commit is contained in:
@@ -4,18 +4,18 @@
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 리뷰 대상 | Phase 1~2 / `P1-T1~P2-T2` |
|
||||
| 리뷰 대상 | Phase 1~2 / `P1-T1~P2-R2` |
|
||||
| 기준 commit 또는 working tree | `89c070875cbeea8395c1e90cb9f47ff80df5d90f` 이후 미커밋 변경 |
|
||||
| 리뷰 일자 | 2026-08-10 |
|
||||
| 리뷰어 | Codex 자가 리뷰—프로젝트 보수적 실행 정책에 따라 subagent 미사용 |
|
||||
| 기준 문서 | `docs/20260810_크리에이터_채널_커뮤니티_아이템_통일/prd.md`, `plan-task.md` |
|
||||
| 리뷰 상태 | `REV-P3-003` 수정 완료·외부 통합 검증 대기 |
|
||||
| 리뷰 상태 | `REV-P3-004` 수정 완료·외부 통합 검증 대기 |
|
||||
|
||||
## 2. 리뷰 목적과 범위
|
||||
|
||||
### 목적
|
||||
|
||||
- 홈·커뮤니티 탭의 아이템, 상세 진입, 더보기, 목록 구매 제거, 상세 구매 이동이 `CCCI-001~008`을 충족하는지 확인한다.
|
||||
- 홈·커뮤니티 탭의 아이템과 공지, 상세 진입, 더보기, 목록 구매 제거, 상세 구매 이동이 `CCCI-001~010`을 충족하는지 확인한다.
|
||||
- 코드·문서·검증 기록이 실제 working tree와 일치하는지 확인한다.
|
||||
|
||||
### 포함 범위
|
||||
@@ -50,8 +50,8 @@
|
||||
|
||||
### 문서와 코드
|
||||
|
||||
- 요구사항: `CCCI-001~009`, `DEC-001~013`, `EXT-001`
|
||||
- 계획: `P1-T1~P2-T2`, `P2-R1`, `P1-GATE`, `P2-GATE`
|
||||
- 요구사항: `CCCI-001~010`, `DEC-001~014`, `EXT-001`
|
||||
- 계획: `P1-T1~P2-T2`, `P2-R1`, `P2-R2`, `P1-GATE`, `P2-GATE`
|
||||
- 홈 변환·아이템: `CreatorChannelCommunitySection.swift:3`
|
||||
- 목록 잠금·상세 gesture: `CreatorChannelCommunityListItem.swift`, `CreatorChannelCommunityGridItem.swift`
|
||||
- 상세 구매: `CreatorChannelCommunityPostDetailView.swift:19`, `CreatorChannelCommunityPostDetailViewModel.swift:186`
|
||||
@@ -75,19 +75,21 @@ Backend: EXT-001 반영 여부를 이 환경에서 확인하지 못함
|
||||
| 목록 구매 심볼·잠금 배경 `rg` contract check | 성공 | 목록 구매 심볼과 잠금 `Color.gray400` 0건, 목록·상세 `Color.gray800` match |
|
||||
| 상세 구매 `rg` contract check | 성공 | `showPurchaseError` 0건, 상세 dialog·repository 호출 match |
|
||||
| reaction bar 조건부 삽입 `rg` contract check | 성공 | 무조건 삽입 0건, `if !isPaidLocked` 조건부 삽입 2건 |
|
||||
| 공지 상세 전용 구매 `rg` RED/GREEN contract check | 성공 | RED 직접 구매 callback 7건·미연결 생성부 1건, GREEN 기존 callback 0건·상세 연결 match |
|
||||
| `git diff --check` | 성공 | whitespace 오류 0건 |
|
||||
| `xcodebuild -quiet -workspace SodaLive.xcworkspace -scheme SodaLive-dev -configuration Debug -destination 'platform=iOS Simulator,id=E9FC7721-AA96-440F-8349-2DC4B85F40F5' -derivedDataPath /tmp/sodalive-community-baseline CODE_SIGNING_ALLOWED=NO ONLY_ACTIVE_ARCH=YES build` | 성공 | exit code 0 |
|
||||
| `xcrun simctl list devices` | 수동 검증 불가 | 모든 사용 가능한 Simulator가 `Shutdown`; 스킬 정책상 임의 부팅하지 않음 |
|
||||
|
||||
## 5. 발견 사항 요약
|
||||
|
||||
사용자 회귀 제보로 확정한 reaction bar 빈 공간 1건은 수정·빌드를 완료했다.
|
||||
사용자 회귀 제보로 확정한 reaction bar 빈 공간 1건은 수정·빌드를 완료했고, 홈 공지의 상세 전용 구매 원칙 누락 1건을 추가 확정했다.
|
||||
|
||||
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|
||||
|---|---|---|---|---|---|
|
||||
| `REV-P3-001` | High | 수정 완료 | 상세 잠금 버튼이 구매 대신 공통 오류만 표시하던 계획 누락 | `P1-T3` | 완료 |
|
||||
| `REV-P3-002` | High | 보류 | 홈 API 신규 필드와 런타임 동작의 통합 검증 필요 | `P3-GATE`, `EXT-001` | 외부 반영 후 재개 |
|
||||
| `REV-P3-003` | Medium | 수정 완료 | 하트·댓글이 숨겨져도 빈 reaction bar가 24pt 공간을 차지함 | `P2-R1` | 완료 |
|
||||
| `REV-P3-004` | High | 수정 완료 | 홈 공지에 목록 구매 callback이 남고 상세 callback이 연결되지 않음 | `P2-R2` | 완료 |
|
||||
|
||||
## 6. 발견 사항 상세
|
||||
|
||||
@@ -118,10 +120,20 @@ Backend: EXT-001 반영 여부를 이 환경에서 확인하지 못함
|
||||
|
||||
`CreatorChannelCommunityListItem`과 `CreatorChannelCommunityPostDetailContentView`는 유료 잠금 상태에서 하트·댓글 자식만 숨기고, body에는 `reactionBar`를 항상 삽입했다. 그 결과 빈 `HStack`의 `.frame(height: 24)`와 부모 `VStack` spacing이 홈·커뮤니티 리스트·상세에 남았다. 코드 수정 전에 `P2-R1`을 추가하고, 두 body에서 기존 `isPaidLocked`로 reaction bar 전체를 조건부 제외했다. focused contract check·`git diff --check`·Debug build가 통과했다.
|
||||
|
||||
### REV-P3-004 — 홈 공지의 상세 전용 구매 원칙 누락
|
||||
|
||||
- **심각도:** High
|
||||
- **상태:** 수정 완료
|
||||
- **관련 요구사항:** `CCCI-010`
|
||||
- **소유 Task:** `P2-R2`
|
||||
|
||||
`CreatorChannelNoticeSection`은 `onTapNotice`·`onTapComment`·`onTapPurchase`를 각각 기본 no-op으로 선언하고 잠금 영역에 별도 구매 `Button`을 뒀다. `CreatorChannelHomeView`는 notices만 전달해 상세 callback을 연결하지 않았다. 코드 수정 전에 `P2-R2`를 추가하고, 세 callback을 단일 `onTapDetail`로 통일해 기존 `onTapCommunityDetail` route에 연결했다. 잠금 구매 `Button` wrapper만 제거했으며 카드 외형과 상세 구매·refresh 구현은 변경하지 않았다. focused RED/GREEN contract check·`git diff --check`·Debug build가 통과했다.
|
||||
|
||||
## 7. 확정 항목의 plan·goal 전환
|
||||
|
||||
- `REV-P3-001`: 코드 수정 전에 `P1-T3`로 전환했고 수정·빌드를 완료했다.
|
||||
- `REV-P3-003`: 코드 수정 전에 `P2-R1`로 전환했고 수정·검증을 완료했다.
|
||||
- `REV-P3-004`: 코드 수정 전에 `P2-R2`로 전환했고 수정·검증을 완료했다.
|
||||
- `REV-P3-002`: 외부 조건이므로 `P3-GATE` 완료를 보류한다.
|
||||
|
||||
## 8. 리뷰 종료 판정
|
||||
@@ -129,12 +141,12 @@ Backend: EXT-001 반영 여부를 이 환경에서 확인하지 못함
|
||||
| 판정 항목 | 결과 | 근거 |
|
||||
|---|---|---|
|
||||
| 리뷰 범위 전체 확인 | 충족 | 사용자 회귀 제보와 수정 결과를 추가 반영 |
|
||||
| 후보 항목 판정 완료 | 충족 | `REV-P3-001`·`REV-P3-003` 수정 완료, `REV-P3-002` 보류 |
|
||||
| 확정 항목 plan 반영 | 충족 | `P1-T3`, `P2-R1`, `DEC-012~013` |
|
||||
| 후보 항목 판정 완료 | 충족 | `REV-P3-001`·`REV-P3-003`·`REV-P3-004` 수정 완료, `REV-P3-002` 보류 |
|
||||
| 확정 항목 plan 반영 | 충족 | `P1-T3`, `P2-R1`, `P2-R2`, `DEC-012~014` |
|
||||
| 보류 항목의 담당·재개 조건 기록 | 충족 | `EXT-001`·부팅된 Simulator |
|
||||
| 검증 명령과 결과 기록 | 충족 | 정적 계약·Debug build exit 0 |
|
||||
|
||||
**최종 결론:** iOS reaction bar 회귀 수정·빌드 완료, 외부 통합 검증 대기
|
||||
**최종 결론:** 홈 공지 상세 구매 일원화 수정·빌드 완료, 외부 통합 검증 대기
|
||||
|
||||
**남은 항목:** 백엔드 `EXT-001` 반영 후 부팅된 Simulator에서 본체 상세 이동, 권한별 더보기, 목록 dialog 미노출, 상세 구매, `Color.gray800`을 확인한다.
|
||||
|
||||
@@ -159,3 +171,15 @@ Backend: EXT-001 반영 여부를 이 환경에서 확인하지 못함
|
||||
- `git diff --check` — 성공
|
||||
- `SodaLive-dev` 단일 Simulator Debug build — exit code 0
|
||||
- 남은 항목: `REV-P3-002`와 Simulator 시각 검증
|
||||
|
||||
### 3차 수정 검증 — 2026-08-10
|
||||
|
||||
- 무엇을: `REV-P3-004`의 홈 공지 직접 구매·상세 미연결을 수정했다.
|
||||
- 왜: 공지도 커뮤니티 게시글이므로 목록이 아닌 상세에서만 구매해야 한다.
|
||||
- 어떻게:
|
||||
- RED: 직접 구매 callback 7건, 홈 상세 callback 미연결 생성부 1건 확인
|
||||
- GREEN: 기존 callback 0건, 단일 `onTapDetail`·홈 `onTapCommunityDetail` 연결 확인
|
||||
- 기존 상세 구매 dialog/API와 구매 후 상세·홈·커뮤니티 refresh 연결 유지 확인
|
||||
- `git diff --check` — 성공
|
||||
- `SodaLive-dev` Debug build — exit code 0
|
||||
- 남은 항목: `REV-P3-002`와 Simulator 통합 검증
|
||||
|
||||
Reference in New Issue
Block a user