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
수신자 등록 진입·복귀·선택 흐름은 PM 전건호가 2026-08-06T06:40:37Z Figma 댓글(node 700:38183, 댓글 id 1873986804, 링크)에서 답했고 2026-08-07T05:51:10Z 확인(댓글 id 1875806371)으로 닫혔다. 목록 시트 하단의 새 수신자 등록 행은 시안 없는 FE 재량 추가가 아니라 PM 이 그 답에서 직접 지정한 것이다. 이전 본문의 반대 서술을 여기서 바로잡는다.
#1427 이 적은 #872 와 #540 사이의 상충도 실재하지 않는다. 둘 다 같은 08-06 댓글을 가리키고, #540 의 대기 표기는 08-07 확인 전 시점의 문장이 남은 것이며, #540 은 2026-08-29T20:12:10Z 에 CLOSED 됐다.
남은 미확정은 카카오 초대 전환이 새로 낸 것뿐이다. BE PR Afternote/Afternote-BE#289 가 2026-09-08T05:57:54Z 에 머지되며 POST /api/v1/users/receivers 가 사라져 등록 직후 receiverId 가 없어졌고, 그래서 "방금 등록한 수신자를 선택 상태로" 축만 PM 답 그대로는 성립하지 않는다. 항목별 확정 상태와 인용 전문은 2026-09-13 코멘트에 복원해 두었다.
PM 확인이 필요한 결정
카카오 초대 전환으로 새로 생긴 두 축만 묻는다.
초대만 보내고 아직 수락 전이라 receiverId 가 없는 상대를 에디터에서 수신자로 고를 수 있게 할 것인가.
초대 전송·취소·실패 각각에서 어느 화면으로 돌아오고 작성 내용을 어디까지 보존할 것인가.
08-06 답으로 확정된 축(진입 버튼 문구, 목록 시트, 시트 하단 행, 목적지, 작성 화면 복귀, 작성 내용의 임시저장 유지, 애프터노트·타임레터·마음의 기록 통일)은 다시 묻지 않는다. #1427 은 새로 물을 것이 없어 질문을 이 이슈 하나로 합친다.
완료 기준
위 두 축에 대한 PM 의 명시적인 답변과 적용 범위·근거 링크를 기록한다. 그 답변 전에는 두 축에 걸린 구현·재개·테스트 완료 체크리스트를 예약하지 않는다. 이미 확정된 축은 08-06·08-07 기록이 근거이며 다시 확인받지 않는다. 결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다. 디자이너에게 질문하거나 태그하지 않으며, 미답변이나 과거 FE 재량 위임을 승인으로 해석하지 않는다.
정리 근거
2026-09-12T23:56 본문 개정이 이미 받은 PM 답을 함께 지워 확정 항목이 다시 미확인으로 돌아갔다. 2026-09-13 에 그 결정 이력을 코멘트로 복원하고 본문의 두 가지 사실 오류를 고쳤다. 시트 하단 행을 FE 재량으로 적은 것과 #872·#540 사이에 상충이 있다고 적은 것이다. 기능 구현 완료를 의미하지 않는다.
답 전문: 작성 화면의 수신자 추가하기는 수신자 선택으로 바꾸고 선택하면 기존 수신자 목록 시트를 띄운다. 시트 하단에 새 수신자 등록을 두고 탭하면 설정의 수신자 등록 화면으로 이동한다. 등록 완료 후에는 원래 작성 화면으로 복귀해 방금 등록한 수신자가 선택된 상태로 돌아오고 작성 중이던 내용은 임시저장으로 유지된다. 애프터노트·타임레터·마음의 기록을 통일한다.
이어서 1hyok 이 2026-08-07T05:51:10Z 에 "가능합니다"로 확인했다. 댓글 id 1875806371.
#872 의 확정 기록과 #540 의 대기 기록은 둘 다 같은 08-06 댓글 하나를 가리킨다. #540 의 "PM 논의 진행 중" 표기는 08-07 확인이 오기 전 시점에 쓴 문장이 그대로 남은 것이고, #540 자체가 2026-08-29T20:12:10Z 에 CLOSED 됐다. 두 기록 중 무엇이 유효한지 고를 일이 아니라 시점 차이다.
카카오 초대 전환으로 무효가 된 축
BE PR Afternote/Afternote-BE#289 가 2026-09-08T05:57:54Z 에 머지되면서 POST /api/v1/users/receivers 가 사라졌다. 대체 흐름은 POST /api/v1/receiver-invitations 이고 응답에는 invitationId·invitationToken·invitationUrl·expiresAt 만 있다. receiverId 는 상대가 초대를 수락하는 시점의 ReceiverInvitationAcceptResponse 에서야 생긴다.
그래서 "등록 완료 후 방금 등록한 수신자가 선택된 상태로 돌아온다"는 결정은 PM 답 그대로는 성립하지 않는다. 등록이 초대 전송으로 바뀌었고 그 직후에는 선택할 receiverId 자체가 없다. 무효가 된 것은 이 한 축뿐이고, 나머지(진입 버튼 문구, 목록 시트, 시트 하단 행, 목적지, 작성 화면 복귀, 작성 내용 유지, 3개 기능 통일)는 그대로 유효하다.
그래서 새로 물어야 하는 축 둘
초대만 보내고 아직 수락 전이라 receiverId 가 없는 상대를 에디터에서 수신자로 고를 수 있게 할 것인가.
초대 전송·취소·실패 각각에서 어느 화면으로 돌아오고 작성 내용을 어디까지 보존할 것인가.
이 둘 외에 새로 물을 것은 없다. #1427 에도 없어서 질문을 이 이슈 하나로 합쳤다.
두 축에 걸린 배선은 이미 코드에서 빠져 있다. 답변을 기다리는 동안 미완성 구현이 남아 썩는 상태가 아니라는 뜻이고, 이 이슈가 기록만으로 완료 기준을 채우는 형태인 근거이기도 하다.
feature/afternote/presentation/.../editor/receiver/SelectReceiverScreen.kt 의 SelectReceiverEmpty (86-116행)는 제목(96행), 설명(102행), ProfileImage (113행)만 그린다. 등록으로 나가는 CTA 가 없다. 같은 파일의 SelectReceiverLoadFailed (119행)가 AfternoteButton 을 쓰는 것과 대비된다. 테스트도 표시 계약까지만 검증한다: SelectReceiverScreenTest.kt 27행·43행·50행은 0건 문구의 표시 여부만 보고, 클릭 계약은 없다.
거기까지 온 경로는 커밋 두 건이고 둘 다 붙이는 쪽이 아니라 떼는 쪽이다.
e328e5ad9 (2026-09-03, 작성 중 수신자 등록 진입·복귀·선택 흐름을 PM에게 확인한다 #1793): 수신자 등록 진입 배선을 떼어 Nav3 이관 뒤로 미뤘다. AfternoteNavActions.navigateToReceiverRegister 선언과 AppNavigationActions 구현을 지우고, SelectReceiverEmpty 의 CTA 를 배선 없으면 안 그리도록 바꿨다.
442a72733 (2026-09-04, 수신자 등록 진입의 상충된 승인 근거를 확인한다 #1427): 그 뒤 프로덕션에서 도달할 수 없게 된 등록 CTA, core:ui 등록 행, 등록 왕복(onReceiverRegisterStart, refreshAfterReceiverRegister)과 전용 문자열 2종을 걷어냈다.
현재 origin/develop 에서 navigateToReceiverRegister·onReceiverRegisterStart·refreshAfterReceiverRegister 를 grep 하면 프로덕션 코드에는 0건이고, CI 가드 스크립트의 유래 주석 두 곳(.github/scripts/validate-test-only-production-declarations.mjs 5행, .github/workflows/repository-quality.yml 230행)에만 이름이 남아 있다.
남은 완료 기준과 풀려야 하는 것
남은 것은 한 줄이다. 아래 두 축에 대한 PM 의 명시적인 답과, 그 답이 애프터노트·타임레터·마음의 기록 중 어디까지 걸리는지다.
초대만 보내고 아직 수락 전이라 receiverId 가 없는 상대를 에디터에서 수신자로 고를 수 있게 할 것인가.
초대 전송·취소·실패 각각에서 어느 화면으로 돌아오고 작성 내용을 어디까지 보존할 것인가.
풀려야 하는 것은 PM 답변 하나뿐이다. 코드나 계약 쪽 선행은 이 완료 기준에 걸리지 않는다. 2번 축은 #1792(임시저장 목록·진입·이어쓰기·저장 후 흐름) 답변과 같이 읽어야 한다. 08-06 답의 "작성 중이던 내용은 임시저장으로 유지"가 그 흐름 위에 얹히기 때문이다.
셋 다 결선 선행이다. 목적지 이동이 그래프 경계를 넘으므로 #1698·#1695 가 끝나야 배선할 수 있고(e328e5ad9 본문), #1586 은 등록 직후 receiverId 를 쓰는 쪽이다. 전부 PM 답변이 온 다음 단계에 붙는 조건이라, "답변과 적용 범위·근거 링크를 기록한다" 는 이 이슈의 완료 기준에는 걸리지 않는다. 이 이슈는 #1427 을 blocking 하고 있다.
답이 오면 대조할 계약 기준선
완료 기준의 "결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다" 를 위해 지금 시점의 계약을 떠 둔다.
BE main 의 UserController.java 에는 @PostMapping("/receivers") 가 없다. 남아 있는 것은 @GetMapping("/receivers") (201행), @GetMapping("/receivers/{receiverId}") (214행), @PatchMapping 3종, @DeleteMapping("/receivers/{receiverId}") 다. 대체 경로는 ReceiverInvitationController.java 의 /api/v1/receiver-invitations (17행)이고, 생성은 27행 @PostMapping, 수락은 47행 @PostMapping("/{token}/accept") 다. 앞 코멘트가 적은 대로 receiverId 는 수락 시점에야 생긴다.
FE origin/develop 은 아직 core/network/.../UserApiService.kt 39행에서 @POST("users/receivers") 를 선언하고 있고, receiver-invitations 를 부르는 코드는 0건이다. 이 간극을 메우는 것은 #944 이고 #1586 이 같은 전환의 영향을 받는다. 이 이슈의 완료 기준에 포함되지 않는다.
이번에 확인하지 못한 것
Figma 접근이 이 세션에서 인증되지 않아 시안 노드는 다시 열지 못했다. 시안 미확인이고, 위 근거 링크와 인용은 앞 코멘트와 본문에 이미 기록된 것을 그대로 쓴다.
Activity
refactor(app,afternote): 수신자 등록 진입 배선을 떼어 Nav3 이관 뒤로 미룬다 (#1793)
refactor(afternote,core): 프로덕션 호출자가 없는 등록 CTA·등록 행·등록 왕복을 걷어낸다 (#1427)
[-]feat(afternote): 수신자 등록 화면 진입을 배선한다 — #1427 에서 Nav3 재작성분 분리[/-][+]작성 중 수신자 등록 진입·복귀·선택 흐름을 PM에게 확인한다[/+]OnlyReadOneBook commentedon Sep 13, 2026
지워진 결정 이력을 복원한다
2026-09-12T23:56 본문 개정에서 이미 받은 PM 답이 본문과 함께 사라졌고, 그 결과 확정돼 있던 항목이 다시 "PM 확인 필요"로 돌아갔다. 실제 기록은 아래와 같다.
근거
PM 전건호가 Figma 스레드(node 700:38183)에서 2026-08-06T06:40:37Z 에 답했다. 댓글 id 1873986804.
https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=700-38183#1873986804
답 전문: 작성 화면의 수신자 추가하기는 수신자 선택으로 바꾸고 선택하면 기존 수신자 목록 시트를 띄운다. 시트 하단에 새 수신자 등록을 두고 탭하면 설정의 수신자 등록 화면으로 이동한다. 등록 완료 후에는 원래 작성 화면으로 복귀해 방금 등록한 수신자가 선택된 상태로 돌아오고 작성 중이던 내용은 임시저장으로 유지된다. 애프터노트·타임레터·마음의 기록을 통일한다.
이어서 1hyok 이 2026-08-07T05:51:10Z 에 "가능합니다"로 확인했다. 댓글 id 1875806371.
https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=700-38183#1875806371
이미 정해진 것
시트 하단 행은 FE 재량 추가가 아니다. PM 이 답에서 직접 지정했다. 반대로 적혀 있던 본문은 이 코멘트와 함께 고쳤다.
#1427 이 말한 상충은 실재하지 않는다
#872 의 확정 기록과 #540 의 대기 기록은 둘 다 같은 08-06 댓글 하나를 가리킨다. #540 의 "PM 논의 진행 중" 표기는 08-07 확인이 오기 전 시점에 쓴 문장이 그대로 남은 것이고, #540 자체가 2026-08-29T20:12:10Z 에 CLOSED 됐다. 두 기록 중 무엇이 유효한지 고를 일이 아니라 시점 차이다.
카카오 초대 전환으로 무효가 된 축
BE PR Afternote/Afternote-BE#289 가 2026-09-08T05:57:54Z 에 머지되면서
POST /api/v1/users/receivers가 사라졌다. 대체 흐름은POST /api/v1/receiver-invitations이고 응답에는invitationId·invitationToken·invitationUrl·expiresAt만 있다.receiverId는 상대가 초대를 수락하는 시점의ReceiverInvitationAcceptResponse에서야 생긴다.그래서 "등록 완료 후 방금 등록한 수신자가 선택된 상태로 돌아온다"는 결정은 PM 답 그대로는 성립하지 않는다. 등록이 초대 전송으로 바뀌었고 그 직후에는 선택할
receiverId자체가 없다. 무효가 된 것은 이 한 축뿐이고, 나머지(진입 버튼 문구, 목록 시트, 시트 하단 행, 목적지, 작성 화면 복귀, 작성 내용 유지, 3개 기능 통일)는 그대로 유효하다.그래서 새로 물어야 하는 축 둘
receiverId가 없는 상대를 에디터에서 수신자로 고를 수 있게 할 것인가.이 둘 외에 새로 물을 것은 없다. #1427 에도 없어서 질문을 이 이슈 하나로 합쳤다.
관련
develop은 아직@POST("users/receivers")를 부른다.POST users/receivers의receiverId반환을 소비하는 이슈라 같은 전환의 영향을 받는다.OnlyReadOneBook commentedon Sep 13, 2026
완료 기준 항목별 현황 (2026-09-13 실측)
앞 코멘트가 복원한 결정 이력 위에, 이 이슈의 완료 기준을 문장 단위로 끊어 무엇이 채워졌고 무엇이 안 채워졌는지 실코드로 대조했다. 기준선은 FE
origin/develop7d87aa3f4, BEmain이다.FE 가 지금 쥐고 있는 코드는 0줄이다
두 축에 걸린 배선은 이미 코드에서 빠져 있다. 답변을 기다리는 동안 미완성 구현이 남아 썩는 상태가 아니라는 뜻이고, 이 이슈가 기록만으로 완료 기준을 채우는 형태인 근거이기도 하다.
feature/afternote/presentation/.../editor/receiver/SelectReceiverScreen.kt의SelectReceiverEmpty(86-116행)는 제목(96행), 설명(102행),ProfileImage(113행)만 그린다. 등록으로 나가는 CTA 가 없다. 같은 파일의SelectReceiverLoadFailed(119행)가AfternoteButton을 쓰는 것과 대비된다. 테스트도 표시 계약까지만 검증한다:SelectReceiverScreenTest.kt27행·43행·50행은 0건 문구의 표시 여부만 보고, 클릭 계약은 없다.거기까지 온 경로는 커밋 두 건이고 둘 다 붙이는 쪽이 아니라 떼는 쪽이다.
e328e5ad9(2026-09-03, 작성 중 수신자 등록 진입·복귀·선택 흐름을 PM에게 확인한다 #1793): 수신자 등록 진입 배선을 떼어 Nav3 이관 뒤로 미뤘다.AfternoteNavActions.navigateToReceiverRegister선언과AppNavigationActions구현을 지우고,SelectReceiverEmpty의 CTA 를 배선 없으면 안 그리도록 바꿨다.442a72733(2026-09-04, 수신자 등록 진입의 상충된 승인 근거를 확인한다 #1427): 그 뒤 프로덕션에서 도달할 수 없게 된 등록 CTA, core:ui 등록 행, 등록 왕복(onReceiverRegisterStart,refreshAfterReceiverRegister)과 전용 문자열 2종을 걷어냈다.현재
origin/develop에서navigateToReceiverRegister·onReceiverRegisterStart·refreshAfterReceiverRegister를 grep 하면 프로덕션 코드에는 0건이고, CI 가드 스크립트의 유래 주석 두 곳(.github/scripts/validate-test-only-production-declarations.mjs5행,.github/workflows/repository-quality.yml230행)에만 이름이 남아 있다.남은 완료 기준과 풀려야 하는 것
남은 것은 한 줄이다. 아래 두 축에 대한 PM 의 명시적인 답과, 그 답이 애프터노트·타임레터·마음의 기록 중 어디까지 걸리는지다.
receiverId가 없는 상대를 에디터에서 수신자로 고를 수 있게 할 것인가.풀려야 하는 것은 PM 답변 하나뿐이다. 코드나 계약 쪽 선행은 이 완료 기준에 걸리지 않는다. 2번 축은 #1792(임시저장 목록·진입·이어쓰기·저장 후 흐름) 답변과 같이 읽어야 한다. 08-06 답의 "작성 중이던 내용은 임시저장으로 유지"가 그 흐름 위에 얹히기 때문이다.
blocked_by 셋은 기록형 완료 기준을 막지 않는다
receiverId소비셋 다 결선 선행이다. 목적지 이동이 그래프 경계를 넘으므로 #1698·#1695 가 끝나야 배선할 수 있고(
e328e5ad9본문), #1586 은 등록 직후receiverId를 쓰는 쪽이다. 전부 PM 답변이 온 다음 단계에 붙는 조건이라, "답변과 적용 범위·근거 링크를 기록한다" 는 이 이슈의 완료 기준에는 걸리지 않는다. 이 이슈는 #1427 을 blocking 하고 있다.답이 오면 대조할 계약 기준선
완료 기준의 "결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다" 를 위해 지금 시점의 계약을 떠 둔다.
BE
main의UserController.java에는@PostMapping("/receivers")가 없다. 남아 있는 것은@GetMapping("/receivers")(201행),@GetMapping("/receivers/{receiverId}")(214행),@PatchMapping3종,@DeleteMapping("/receivers/{receiverId}")다. 대체 경로는ReceiverInvitationController.java의/api/v1/receiver-invitations(17행)이고, 생성은 27행@PostMapping, 수락은 47행@PostMapping("/{token}/accept")다. 앞 코멘트가 적은 대로receiverId는 수락 시점에야 생긴다.FE
origin/develop은 아직core/network/.../UserApiService.kt39행에서@POST("users/receivers")를 선언하고 있고,receiver-invitations를 부르는 코드는 0건이다. 이 간극을 메우는 것은 #944 이고 #1586 이 같은 전환의 영향을 받는다. 이 이슈의 완료 기준에 포함되지 않는다.이번에 확인하지 못한 것
Figma 접근이 이 세션에서 인증되지 않아 시안 노드는 다시 열지 못했다. 시안 미확인이고, 위 근거 링크와 인용은 앞 코멘트와 본문에 이미 기록된 것을 그대로 쓴다.
OnlyReadOneBook commentedon Sep 18, 2026
PM 결정 대기 항목은 깃허브 이슈로 두지 않고 피그마 질문 한 자리에만 둔다(2026-09-18 결정). 이 이슈의 질문은 피그마 스레드에 걸려 있다: https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=4327-68739#1932501388 답이 오면 그 답을 근거로 구현 이슈를 새로 만든다.