You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
기존 회의의 무료 3개·구독 정책 기록과 두 시안은 결정 자료로 보존한다. 특정 팝업·문구·트리거·구매 후 등록 재시도를 구현 완료 조건으로 고정하지 않는다.
PM 확인이 필요한 결정
적용할 시안과 출시 상품 정책, 한도 도달 시 노출 조건, 나중에 하기·구독 버튼 목적지, 구매 성공·대기·실패·취소 뒤 기록 입력과 등록 재개 흐름을 PM에게 확인한다. #881의 계약 확인과 함께 대조한다.
완료 기준
PM의 명시적인 답변과 적용 범위·근거 링크를 기록한다. 답변 전에는 구현·재개·테스트 완료 체크리스트를 예약하지 않는다. 결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다. 디자이너에게 질문하거나 태그하지 않으며, 미답변이나 과거 FE 재량 위임을 승인으로 해석하지 않는다.
정리 근거
2026-09-13 사용자 요청에 따라 미확정 구현 예약을 제거했다. 기능 구현 완료를 의미하지 않는다. 기존 댓글의 실측은 참고 자료이며, 상충하는 옛 구현 지시는 현재 범위를 대체하지 않는다.
2026-07-28 15:42 런타임 실측 — 타임레터 쪽도 같은 상태라 참고로 남깁니다.
타임레터를 4건째 등록하려 하면 플랜 제한 팝업이 정상적으로 뜹니다.
현재 플랜은 타임레터를 3건까지만 등록할 수 있습니다.
구독 시, 더 많은 타임레터를 제한 없이 남기고 관리할 수 있습니다.
[나중에 하기] [구독 후 기록하기]
그런데 "구독 후 기록하기" 를 누르면 팝업만 닫히고 아무 일도 일어나지 않습니다(네트워크 요청 0건, 화면 그대로). 코드상 TimeLetterNavGraph.kt:73 에 // TODO: 구독 화면 및 관련 플로우 구현 시 구독 화면 이동으로 변경 이 남아 있습니다.
즉 구독 화면이 생기면 애프터노트(이 이슈)와 타임레터 양쪽 진입점을 함께 연결해야 합니다. 1차 QA 의 O5 항목이 이것이고, 기획·BE 구독 API 대기 상태는 이 이슈와 동일합니다.
즉 유도 팝업(「현재 플랜은 최대 3건까지만…」 + 「구독 후 기록하기」)은 그려져 있지만, 그 버튼이 갈 구독/결제 화면 자체가 설계돼 있지 않습니다.
이게 실무적으로 중요한 이유는, 지금 본문의 게이트만 보면 「BE#223 이 오면 착수 가능」으로 읽히는데 실제로는 그때도 착수가 안 되기 때문입니다. #881(Google Play Billing 연동)도 같은 벽에 막혀 있습니다 — 그쪽 완료 조건이 「실제 Play 상품과 현지 가격을 조회하고 구매할 수 있음」인데 그 화면이 없습니다.
PM 답변이 아직 없어 완료 기준은 채우지 못합니다. 다음 착수자가 낡은 전제로 시작하지 않도록, origin/develop7d87aa3f4 기준 실측만 남깁니다. 구현·체크리스트·디자이너 요청은 적지 않습니다.
1. 애프터노트 쪽에는 한도 게이트가 아예 없습니다
07-28 코멘트의 "타임레터 쪽도 같은 상태" 라는 표현은 애프터노트에도 팝업이 있고 버튼만 죽은 것으로 읽히는데, 실제로는 애프터노트에 팝업도 판정도 없습니다. 그 부분을 정정합니다.
AfternoteHomeEntry.kt:86onFabClick = { navigateToAdd(selectedType ?: AfternoteType.SOCIAL_NETWORK) }. 아무 조건 없이 에디터로 갑니다.
신규 등록 진입점은 이 하나뿐입니다. AfternoteHomeRoute.kt:9 → AfternoteLocalNavActions.kt:29-30 → AfternoteNavHost.kt:71, 90. 같은 파일 :37 은 기존 항목 편집 경로라 별개입니다.
FREE_PLAN·FreePlanLimit 심볼은 저장소 전체에서 feature/timeletter 의 5개 파일에만 있고 feature/afternote/** 에는 0건입니다. subscription·entitlement·billing 은 *.kt 전체에서 0건입니다. feature/afternote 에 걸리는 "한도" 문자열은 Crashlytics 보관 한도(최근 8건) 주석이라 플랜과 무관합니다.
즉 무료 3개 한도는 현재 FE 에서 전혀 강제되지 않습니다. 결정이 오면 애프터노트 쪽 작업은 버튼 목적지 연결이 아니라 게이트 신설입니다.
2. 현행 타임레터 게이트는 클라이언트 카운트입니다 (서버 계약 아님)
TimeLetterWriteViewModel.kt:174getTimeLetters().totalCount, :182registeredCount >= FREE_PLAN_REGISTER_LIMIT, :708const val FREE_PLAN_REGISTER_LIMIT = 3.
TimeLetterApiService.kt:19-20 의 @GET("time-letters") 에는 기간 파라미터가 없습니다. 따라서 totalCount 는 누적 SCHEDULED 건수이고, 월 경계 개념이 코드에 없습니다.
팝업 문구(TimeLetterWriteScreen.kt:459)도 "3건까지만" 이라 월 표현이 없습니다.
08-23 코멘트가 인용한 BM 문서의 "타임레터 등록 건수(무료 월 3건)" 과 코드가 어긋납니다. PM 확인 항목 "한도 도달 시 노출 조건" 에 "누적 3건인가 월 3건인가" 를 명시 질문으로 넣어야 답변이 구현 가능한 형태로 돌아옵니다.
3. 유도 팝업의 확인 버튼은 여전히 죽어 있고, 줄 번호가 옮겨졌습니다
07-28 코멘트가 가리킨 TimeLetterNavGraph.kt:73 은 현재 :89-92 입니다.
onFreePlanLimitConfirm = {
// TODO: 구독 화면 및 관련 플로우 구현 시 구독 화면 이동으로 변경
viewModel.dismissFreePlanLimitPopup()
},
팝업 자체는 TimeLetterWriteScreen.kt:456-463, 상태 플래그는 TimeLetterWriteUiState.kt:29 입니다.
Activity
OnlyReadOneBook commentedon Jul 28, 2026
2026-07-28 15:42 런타임 실측 — 타임레터 쪽도 같은 상태라 참고로 남깁니다.
타임레터를 4건째 등록하려 하면 플랜 제한 팝업이 정상적으로 뜹니다.
그런데 "구독 후 기록하기" 를 누르면 팝업만 닫히고 아무 일도 일어나지 않습니다(네트워크 요청 0건, 화면 그대로). 코드상
TimeLetterNavGraph.kt:73에// TODO: 구독 화면 및 관련 플로우 구현 시 구독 화면 이동으로 변경이 남아 있습니다.즉 구독 화면이 생기면 애프터노트(이 이슈)와 타임레터 양쪽 진입점을 함께 연결해야 합니다. 1차 QA 의 O5 항목이 이것이고, 기획·BE 구독 API 대기 상태는 이 이슈와 동일합니다.
OnlyReadOneBook commentedon Aug 23, 2026
PM BM 문서에 게이팅 범위가 명시됐습니다 — 팝업 트리거 설계 시 기준:
단 08-23 회의에서 "BM 요청 - 추가할거 많음"(PM이 BM 보강 예정) + 결제 경로 재검토(#881 코멘트 참조)가 언급됐으니, 착수 시점에 BM 문서 최신본 재확인 필요.
[-]feat(afternote): 등록 건수 제한 구독 유도 팝업 — BE 구독 API·시안 정본 확정 선행[/-][+]등록 건수 제한 구독 유도 팝업 — BE 구독 API·시안 정본 확정 선행[/+]OnlyReadOneBook commentedon Aug 30, 2026
게이트 재실측 (2026-08-31) — 게이트가 하나 더 있습니다
착수 가능 여부를 다시 재다가, 본문에 안 적힌 게이트를 발견했습니다.
본문에 적힌 게이트 — 둘 다 유효
Afternote-BEorigin/main(= 실서버 배포 브랜치)에 subscription·plan·entitlement·billing 관련 파일이 0건입니다. [feat] 구독·플랜 조회 및 타임레터 등록 한도 서버 계약 추가 Afternote-BE#223 은 열려 있고, 유일한 구현은 미머지 브랜치에 엔티티·이벤트만 있는 상태로 컨트롤러가 없습니다.4327:66610(1안)·4327:66687(2안)이 둘 다 살아 있습니다. 어느 쪽이 정본인지 아직 안 갈렸습니다.새로 확인한 게이트 — 목적지 화면이 시안에 없습니다
정본 페이지
4327:43064의 TEXT 노드 6,482건을 전수로 훑었습니다.즉 유도 팝업(「현재 플랜은 최대 3건까지만…」 + 「구독 후 기록하기」)은 그려져 있지만, 그 버튼이 갈 구독/결제 화면 자체가 설계돼 있지 않습니다.
이게 실무적으로 중요한 이유는, 지금 본문의 게이트만 보면 「BE#223 이 오면 착수 가능」으로 읽히는데 실제로는 그때도 착수가 안 되기 때문입니다. #881(Google Play Billing 연동)도 같은 벽에 막혀 있습니다 — 그쪽 완료 조건이 「실제 Play 상품과 현지 가격을 조회하고 구매할 수 있음」인데 그 화면이 없습니다.
정리
세 번째는 디자이너에게 요청해야 풀립니다. BE 작업과 병렬로 진행할 수 있으니 먼저 여는 편이 낫다고 봅니다.
[-]등록 건수 제한 구독 유도 팝업 — BE 구독 API·시안 정본 확정 선행[/-][+]등록 한도 도달 시 구독 유도·구매 후 복귀를 PM에게 확인한다[/+]OnlyReadOneBook commentedon Sep 13, 2026
착수 가능성 재실측 (2026-09-13)
PM 답변이 아직 없어 완료 기준은 채우지 못합니다. 다음 착수자가 낡은 전제로 시작하지 않도록,
origin/develop7d87aa3f4기준 실측만 남깁니다. 구현·체크리스트·디자이너 요청은 적지 않습니다.1. 애프터노트 쪽에는 한도 게이트가 아예 없습니다
07-28 코멘트의 "타임레터 쪽도 같은 상태" 라는 표현은 애프터노트에도 팝업이 있고 버튼만 죽은 것으로 읽히는데, 실제로는 애프터노트에 팝업도 판정도 없습니다. 그 부분을 정정합니다.
AfternoteHomeEntry.kt:86onFabClick = { navigateToAdd(selectedType ?: AfternoteType.SOCIAL_NETWORK) }. 아무 조건 없이 에디터로 갑니다.AfternoteHomeRoute.kt:9→AfternoteLocalNavActions.kt:29-30→AfternoteNavHost.kt:71, 90. 같은 파일:37은 기존 항목 편집 경로라 별개입니다.FREE_PLAN·FreePlanLimit심볼은 저장소 전체에서feature/timeletter의 5개 파일에만 있고feature/afternote/**에는 0건입니다.subscription·entitlement·billing은*.kt전체에서 0건입니다.feature/afternote에 걸리는 "한도" 문자열은 Crashlytics 보관 한도(최근 8건) 주석이라 플랜과 무관합니다.즉 무료 3개 한도는 현재 FE 에서 전혀 강제되지 않습니다. 결정이 오면 애프터노트 쪽 작업은 버튼 목적지 연결이 아니라 게이트 신설입니다.
2. 현행 타임레터 게이트는 클라이언트 카운트입니다 (서버 계약 아님)
TimeLetterWriteViewModel.kt:174getTimeLetters().totalCount,:182registeredCount >= FREE_PLAN_REGISTER_LIMIT,:708const val FREE_PLAN_REGISTER_LIMIT = 3.TimeLetterApiService.kt:19-20의@GET("time-letters")에는 기간 파라미터가 없습니다. 따라서totalCount는 누적 SCHEDULED 건수이고, 월 경계 개념이 코드에 없습니다.TimeLetterWriteScreen.kt:459)도 "3건까지만" 이라 월 표현이 없습니다.08-23 코멘트가 인용한 BM 문서의 "타임레터 등록 건수(무료 월 3건)" 과 코드가 어긋납니다. PM 확인 항목 "한도 도달 시 노출 조건" 에 "누적 3건인가 월 3건인가" 를 명시 질문으로 넣어야 답변이 구현 가능한 형태로 돌아옵니다.
3. 유도 팝업의 확인 버튼은 여전히 죽어 있고, 줄 번호가 옮겨졌습니다
TimeLetterNavGraph.kt:73은 현재:89-92입니다.TimeLetterWriteScreen.kt:456-463, 상태 플래그는TimeLetterWriteUiState.kt:29입니다.4. 게이트 재실측: 08-31 판정 그대로 유효
Afternote-BEmain트리 677개 경로 중 subscription·plan·entitlement·billing·purchase 에 걸리는 파일 0건입니다. [feat] 구독·플랜 조회 및 타임레터 등록 한도 서버 계약 추가 Afternote-BE#223 은 OPEN 이고 최종 갱신은 2026-08-22 입니다.#470참조가 0건입니다. 라벨이 아니라 본문 직접 검색이며, 이 이슈 범위를 물고 있는 PR 은 없습니다.붙일 자리
결정이 나면 작업이 두 모듈로 갈립니다. 애프터노트 진입점은 이 이슈(1hyok), 타임레터 진입점은 #1692(koongmai)가 등록 게이트를
SaveTimeLetterUseCase로 수렴할 예정이라 그 위에 붙습니다.본문은 고치지 않았습니다. 위 정정은 전부 본문이 아니라 과거 코멘트의 전제와 줄 번호에 대한 것이고, 본문의 완료 기준(PM 답변과 근거 링크 기록)은 그대로 유효하기 때문입니다.
OnlyReadOneBook commentedon Sep 18, 2026
PM 결정 대기 항목은 깃허브 이슈로 두지 않고 피그마 질문 한 자리에만 둔다(2026-09-18 결정). 이 이슈의 질문은 피그마 스레드에 걸려 있다: https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=4823-17385#1932508350 답이 오면 그 답을 근거로 구현 이슈를 새로 만든다.