Skip to content

NEXT STEP 노출 조건·문구·목적지를 PM에게 확인한다 #1175

Closed as not planned
1 of 1 issue completed
Closed as not planned

Description

@OnlyReadOneBook

작업 유형

enhancement — 신규 기능·기존 기능 개선

주 담당 모듈

afternote — 애프터노트

개요

시안에 서로 다른 NEXT STEP 예시가 있지만 사용자 상태별 규칙과 목적지는 확정되지 않았다. 카테고리별 작성 현황을 FE가 추론하거나 구독/에디터 이동을 자연스러운 기본값으로 잡는 구현 예약을 제거한다.

PM 확인이 필요한 결정

노출 대상 상태, 동시 조건 우선순위·카드 수, 문구와 목적지, 완료 후 숨김 조건, 빈 목록·등록 한도·구독 유도 조건을 PM에게 확인한다. BE#270은 확정된 제품 규칙을 전달할 계약만 정한다. 기존 #1704의 독립 구조 수정은 보존한다.

완료 기준

PM의 명시적인 답변과 적용 범위·근거 링크를 기록한다. 답변 전에는 구현·재개·테스트 완료 체크리스트를 예약하지 않는다. 결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다. 디자이너에게 질문하거나 태그하지 않으며, 미답변이나 과거 FE 재량 위임을 승인으로 해석하지 않는다.

정리 근거

2026-09-13 사용자 요청에 따라 미확정 구현 예약을 제거했다. 기능 구현 완료를 의미하지 않는다. 기존 댓글의 실측은 참고 자료이며, 상충하는 옛 구현 지시는 현재 범위를 대체하지 않는다.

Activity

  1. OnlyReadOneBook commented on Aug 25, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    본문을 시안 실측으로 다시 썼습니다. 처음 열 때 시안 대조를 건너뛰고 코드만 보고 적은 것을 바로잡습니다.

    바뀐 것 세 가지입니다.

    1. 시안 근거를 넣었습니다 — 4327:66535(목록 있음) · 4327:66762(목록 없음). 둘 다 바텀바에서 애프터노트 탭이 선택된 화면이고 NEXT STEP 섹션이 그려져 있습니다.
    2. 문구가 상태별로 다릅니다. 목록이 비었을 때는 「현재 플랜에서 보관 가능한 개수를 모두 사용하였습니다… 구독을 해주세요」입니다. 고정 문구가 아니라 사용자 상태에 따라 바뀌는 안내이고 한쪽은 구독 유도로 이어집니다 — 처음엔 이걸 몰라 「문구 하나를 어디서 가져올까」로만 적었습니다.
    3. 빈 목록 분기 문제를 추가했습니다. 시안은 빈 목록에서도 카드를 띄우는데, 현재 코드는 EmptyListBody 로 빠져 헤더 자체가 없습니다. 문구 원천을 만들어도 그 분기 때문에 빈 화면에서는 여전히 안 뜹니다.
  2. changed the title [-]fix(afternote): 홈 NEXT STEP 카드가 표시된 적이 없다 — 문구를 만드는 원천이 서버·ViewModel 어디에도 없음 (#777 후속)[/-] [+]홈 NEXT STEP 카드가 표시된 적이 없다 — 문구를 만드는 원천이 서버·ViewModel 어디에도 없음 (#777 후속)[/+] on Aug 28, 2026
  3. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    판정 — 시안은 살아 있고, 서버 원천이 없어 구현 불가다 (삭제도 아니다)

    origin/develop fc8f32cd5 기준으로 재판정했습니다. 본문 기준 리비전(e1b307eb5 + PR #1172)에서 전제가 바뀐 것은 없습니다.

    1. 시안 — 살아 있다. 걷으면 안 된다

    Figma MCP 로 두 노드를 직접 열어 확인했습니다. 둘 다 NEXT STEP 섹션이 그대로 있습니다.

    노드 섹션 제목 노드 카드 본문
    4327:66535 애프터노트 main_1안 4327:66546 NEXT STEP 4327:66550 「가족들의 '주거래 은행' 정보를 / 입력하신 건 확인하셨나요?」
    4327:66762 애프터노트_목록X 4327:66773 NEXT STEP 4327:66777 「현재 플랜에서 보관 가능한 개수를 모두 사용하였습니다. / 더 많은 기록을 남기고 관리하려면 구독을 해주세요.」

    카드는 두 시안 모두 ChevronRight(4327:66551 · 4327:66778)를 단 button 이라 전이가 있는 것이 전제입니다. 다만 목적지 자체는 시안에 그려져 있지 않습니다.

    빈 목록 분기 문제도 현행 코드에 그대로 있습니다. AfternoteHomeScreen.kt 의 items.itemCount > 0 || selectedType != null 분기 아래 else -> EmptyListBody(modifier = bodyModifier) 로 빠지고, EmptyListBody 는 headerDescription · nextStep 을 아예 받지 않습니다. 시안 애프터노트_목록X 는 타이틀·설명·NEXT STEP 을 모두 띄우므로 이 분기는 여전히 손봐야 합니다 — 다만 아래 이유로 지금 고쳐도 띄울 내용이 없습니다.

    2. BE 실코드 — 두 문구 어느 쪽도 원천이 없다

    Afternote-BE origin/main 0a4b870 전수 실측입니다 (OpenAPI 아님, 실코드 grep).

    찾은 것 결과
    nextStep · next_step · NEXT_STEP 0건 (*.java *.kt *.sql *.yml 전체)
    subscri · Membership · quota · storageLimit · maxCount · 보관 가능 · 플랜 0건
    구독 · payment · billing · purchase · Iap · tier · Grade 0건
    주거래 · 은행 · bank 0건 (레포 전체)
    checklist · nextAction · recommend · progress · completionRate · todo 0건

    즉 플랜·구독·보관 한도라는 개념이 서버에 존재하지 않습니다. 「목록 없음」 쪽 문구는 원천이 없는 정도가 아니라 도메인 자체가 없습니다.

    「주거래 은행」 쪽도 마찬가지입니다. 본문 Note 에 「카테고리별 작성 현황으로 FE 가 만들 여지가 있다」고 적었으나, 실측해 보니 서버의 카테고리는 AfternoteCategoryType { SOCIAL, BUSINESS, GALLERY, PLAYLIST } 4종뿐이고 「주거래 은행」 같은 항목 단위 개념이 없습니다. 카테고리 4종만으로는 저 문장을 만들 수 없습니다.

    한도 판정에 쓸 수치도 없습니다 — AfternotePageResponse 는 content · page · size · hasNext 뿐이라 총 개수조차 내려오지 않습니다.

    전이 목적지도 막혀 있습니다. 구독 유도의 착지점인 #881(Google Play Billing 구매·복원 및 구독 화면 연결)이 아직 OPEN 입니다.

    3. 그래서 지금 안 하는 것

    추측으로 문구를 만들어 붙이지 않겠습니다. 붙일 수 있는 형태는 두 가지뿐인데 둘 다 틀립니다.

    • 시안 문구를 고정 문자열로 하드코딩 — 앱 홈(feature/home)의 home_tab_next_step_body 가 실제로 이렇게 돼 있습니다. 그러나 이 카드는 상태에 따라 문구가 갈리는 것이 설계의 핵심이라, 한쪽을 고정하면 나머지 한 상태에서 거짓말을 합니다. 특히 「보관 가능한 개수를 모두 사용하였습니다」를 한도와 무관하게 띄우는 것은 사실과 다른 안내입니다.
    • 표시 조건을 FE 가 지어내기 — 한도 수치가 서버에 없으므로 임계값을 FE 가 발명해야 합니다.

    4. BE 에 필요한 것 (착수 조건)

    이 카드를 켜려면 서버가 아래를 내려줘야 합니다. 문구를 FE 가 조립할지 서버가 완성해 내려줄지부터 갈립니다.

    1. 문구의 주인 결정 — 「어떤 상태에서 어떤 문장을 띄우는가」의 규칙이 서버에 있어야 합니다. 상태가 늘 때마다 앱 배포가 필요 없으려면 완성된 문구 + 전이 대상을 서버가 내려주는 편(nextStep: { text, actionType, targetId } | null)이 맞습니다.
    2. 플랜·보관 한도 도메인 — 구독 유도 문구의 전제입니다. 사용자별 플랜, 플랜별 보관 한도, 현재 사용량이 필요합니다. 현재 서버에 개념 자체가 없어 BE 선행 작업입니다.
    3. 총 개수 — 한도 대비 사용량 표시에 필요합니다. AfternotePageResponse 에 totalElements 가 없습니다.
    4. 전이 목적지 명세 — 시안에 전이가 그려져 있지 않습니다. 구독 유도는 Google Play 구매·복원 구현에 필요한 서버·상품·화면 계약을 확인한다 #881, 미작성 안내는 해당 카테고리 에디터가 후보이나 디자인 확인이 필요합니다.

    5. 조치

    • 이 이슈는 닫지 않고 blocked 로 둡니다. 원천이 생기기 전에는 FE 가 할 수 있는 일이 없습니다.
    • NextStep 타입 · HomeHeaderSection 의 nextStep != null 분기 · afternote_home_next_step_section_title 은 살립니다. 시안이 살아 있으므로 죽은 코드가 아닙니다.
    • 빈 목록 분기(EmptyListBody 에 헤더가 없다)도 이 이슈에 남깁니다 — 카드 내용이 생겨야 의미가 있습니다.
    • refactor(afternote): 참조 0건 문자열 73건 시안 대조 후 삭제 (#1079 후속) #1545(참조 0건 문자열 73건 삭제)와의 조율은 아래 별도 코멘트로 정리해 그쪽에도 남겼습니다.
  4. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    서버 계약 요구를 BE 큐에 올렸습니다 — Afternote/Afternote-BE#270 (Hwanggyuun · Feature · enhancement).

    이 이슈의 코멘트만으로는 BE 담당자 큐에 잡히지 않아서, 실측 근거(nextStep·플랜 도메인·totalElements 전부 0건)와 시안 노드 두 개를 그대로 옮겨 BE 이슈로 뗐습니다. 이 이슈를 그 이슈에 blocked_by 로 걸어 뒀습니다.

    FE 몫은 계약이 도착한 뒤입니다 — 카드는 시안에 살아 있으므로 걷지 않고 그대로 둡니다.

  5. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 30, 2026
  6. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 2, 2026
  7. changed the title [-]홈 NEXT STEP 카드가 표시된 적이 없다 — 문구를 만드는 원천이 서버·ViewModel 어디에도 없음 (#777 후속)[/-] [+]NEXT STEP 노출 조건·문구·목적지를 PM에게 확인한다[/+] on Sep 12, 2026
  8. OnlyReadOneBook commented on Sep 18, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    PM 결정 대기 항목은 깃허브 이슈로 두지 않고 피그마 질문 한 자리에만 둔다(2026-09-18 결정). 이 이슈의 질문은 피그마 스레드에 걸려 있다: https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=4327-99186#1932508536 답이 오면 그 답을 근거로 구현 이슈를 새로 만든다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions