From 98f511eae5c5e7947e5178cf2ece655efa49ca63 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 3 Aug 2026 08:27:08 +0000 Subject: [PATCH] =?UTF-8?q?docs(N4-15):=20roadmap=20[~]/[=20]=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EB=A5=BC=20=EC=8B=A4=EC=A0=9C=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EC=99=80=20=EB=8F=99=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy-checklist.md N4-15 작업. 낡거나 모순된 기록 몇 개를 발견해 정정: - §2.1 "푸시 알림 서비스 연동" [ ] — FCM 작업이 이미 §B/N4-1~4에서 상세 추적 중인데 남아있던 중복 표기였음. 교차참조로 정리하고 [~]로 변경(서버 쪽은 완료, 남은 건 Master의 Firebase 시크릿 배치·실기기 수신 확인뿐) - §4 "앞으로의 개발 계획" 4번 — "남은 것"에 이미 완료된 "C 배포 준비"가 그대로 남아있어서 제거 - §2.3 온보딩 뼈대 [~] — 관계 티어 선택 스텝(2.7-B)이 이미 추가된 걸 반영 - §2.5 "수동 QA" [ ] — N4-5~10(api-done, 화면 탭만 남음)과 N4-C6b/N4-11 (이 세션엔 실기기가 없어 순수 로직만 검증됨)로 교차참조 추가 실제로 아직 Master 액션이나 Q9 확정을 기다리는 [~]/[ ] 항목(FCM 푸시, 멀티디바이스 동기화, 데이터 프라이버시, L2 카피/수신트리거)은 그대로 유지 — 진행 안 된 걸 완료로 바꾸지 않음. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014YSB5PqF38raTxP5ABgr9m --- docs/deploy-checklist.md | 2 +- docs/roadmap.md | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/deploy-checklist.md b/docs/deploy-checklist.md index 00e7c80..fc416d8 100644 --- a/docs/deploy-checklist.md +++ b/docs/deploy-checklist.md @@ -235,7 +235,7 @@ API 계층은 프로덕션에서 검증됨 (`CORE_API_BASE=https://msn.iykyka.co | **N4-12** | 자연스러움 피드백 UI | **done (계측만)** (2026-08-03) | vision 지표. **PoC 실행/결론이 아니라 캡처 장치** — 실제 %는 N5 이후 실 사용 데이터로. 암묵 신호: `core-backend/models.go` `Message.DraftEdited`(nullable — 사람 메시지/구버전 클라는 nil, 트윈 승인-발송 경로에서 클라이언트가 `original_draft_text`를 같이 보내면 서버가 diff해 true/false) + `mobile/lib/screens/chat_screen.dart` `_sendTwinApproved`가 `_pendingDraft.text`(편집 전 원본)를 함께 전송. 명시 신호: `Message.NaturalnessRating`(nullable bool) + `POST /messages/:id/feedback`(트윈 메시지만, 400 아니면 재제출은 덮어씀 — 409 아님) + `chat_screen.dart`/`message_bubble.dart`의 "이 답장 나답아요?" 원탭 👍/👎(한 번 탭하면 그 세션에서 다시 안 보여줌, `_ratedMessageIds` + `message_sync.dart`의 `ratedMessageIdsFrom()`). `/admin/metrics`에 `draft_unedited_rate`/`naturalness_positive_rate`(둘 다 분모 0일 때 0으로 zero-guard, `peer_veto_rate`와 동일 패턴) 추가, `adminDashboardHTML`에 카드 2개 추가. 백엔드 테스트 8개(`core-backend/main_test.go`) + 모바일 테스트 5개(`mobile/test/`) 추가, 전부 통과 | | **N4-13** | `prototype.md` `SHARE_URL` | todo | Master 기입 | | **N4-14** | 내부 release APK | todo | `docs/android-release.md` | -| **N4-15** | roadmap/`[~]` 동기화 | todo | 완료 시 체크 | +| **N4-15** | roadmap/`[~]` 동기화 | **done** (2026-08-03) | `roadmap.md` §2.1 "푸시 알림 서비스 연동"(낡은 중복 표기 → §B/N4-1~4로 교차참조), §4-4번 "남은 것"(완료된 "C 배포 준비" 제거), §2.3 온보딩 뼈대(관계 티어 스텝 추가 반영), §2.5 수동 QA 항목(N4-5~10/N4-C6b/N4-11 교차참조)을 실제 코드 상태와 맞춤. 나머지 `[~]`(FCM 푸시, 멀티디바이스 동기화, 데이터 프라이버시, L2 카피/수신트리거)는 실제로 아직 Master 액션·Q9 확정 대기 중이라 그대로 유지 — 허위로 채우지 않음 | --- diff --git a/docs/roadmap.md b/docs/roadmap.md index 927ffda..4ef3d96 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -42,7 +42,10 @@ - [x] DB 스키마: users, invite_codes, contacts, conversations, messages, twin_settings, escalation_logs, whitelist_rules — `core-backend/models.go` (GORM), `backend/app/models.py` (Python 프로토타입)와 동일 스키마(+ invite_codes는 여기서 새로 추가) -- [ ] 푸시 알림 서비스 연동 +- [~] 푸시 알림 서비스 연동 — **2026-08-03 동기화**: 이 항목은 오래 전에 적힌 뒤 갱신 안 된 + 중복 표기였음. 실제 진행 상황은 §B "FCM 푸시 연동"과 `deploy-checklist.md` N4-1~4에서 추적 + 중 — 서버 쪽(`notifyUser`, `/admin/push-test`, 토큰 등록)은 구현·테스트 완료, 남은 건 Master의 + Firebase 시크릿 배치(N4-1/3)와 그 이후 실기기 수신 확인(N4-4)뿐 `backend/`(Python 프로토타입)는 그대로 참고용으로 남겨둔다 — `core-backend/`(Go)가 실제로 쓰는 것. @@ -75,7 +78,8 @@ - [x] 기본 채팅 UI (대화 목록, 대화방) — `GET`/`POST /conversations`, 히스토리 로드, WebSocket 수신·인간 메시지 전송. 연락처 화면에서 DM 시작 - [~] 온보딩 플로우(5분 온보딩) 뼈대 — 가입 + 말투 샘플 입력 UI(`OnboardingToneScreen`, - 기기 로컬). 말투 학습 UX 디테일·카피는 **사람 PoC #1 결과를 맨 마지막에 반영** + 기기 로컬) + 관계 티어 기본값 선택(2.7-B, 2026-08-03 추가). 말투 학습 UX 디테일·카피는 + **사람 PoC #1 결과를 맨 마지막에 반영** — 이 부분만 여전히 열려 있음 - [x] 와카뷰 뱃지·거부권 UX — 점선+뱃지 말풍선, 대화방 거부권 버튼. 실시간 본인확인 응답 문구는 서버/AI 프롬프트 측과 이어서 다듬을 것 - [x] 자율성 설정 화면(L0~L2, 화이트리스트) — `AutonomySettingsScreen`. 상대별 예외는 @@ -112,7 +116,10 @@ 구현과 함께: L0 차단, L1 미승인 차단/승인 시 발송, L2 화이트리스트 매칭 자동발송/비매칭 시 승인 필요, 에스컬레이션이 레벨·화이트리스트·승인 여부와 무관하게 항상 우선한다는 것까지 6개 케이스 전부 실제 테스트로 확인함 -- [ ] 온보딩·채팅·설정 수동 QA — `mobile/` 골격 위에 실기기/에뮬레이터로 진행 (후속) +- [ ] 온보딩·채팅·설정 수동 QA — `mobile/` 골격 위에 실기기/에뮬레이터로 진행 (후속). API 계층은 + 이미 검증됨(`deploy-checklist.md` N4-5~10 "api-done") — 남은 건 화면 탭뿐. 그중 N4-C6b(스누즈 + 로컬 알림)·N4-11(오프라인 재연결)은 이 세션 도구엔 실기기/에뮬레이터가 없어 순수 로직만 + 단위테스트로 확인했고 실제 동작 확인은 이 수동 QA 라운드에서 처음 이뤄짐 **2.6 베타 배포 준비** - [x] 초대 기반 베타 가입 플로우 — **발견**: 기존 가입은 "아무 문자열이나 처음 쓰면 통과"라 @@ -302,7 +309,9 @@ PoC 데이터 없이 기본값을 추측해 채우지 않는다. 3. [x] 2.2 AI 서비스 — `ai-service/`(Python) 완료. Go 코어→AI 서비스 연동·자율성 오케스트레이션· 되돌리기 API 완료. 온디바이스 말투 이력 저장은 클라이언트와 이어서 4. [~] 2.3 Flutter 클라이언트 — A3 + B(drift/SQLCipher·데이터흐름·세션) 완료 + API E2E. - 남은 것: 실제 Firebase FCM 토큰, Android UI 탭(`mobile/README.md`), C 배포 준비 + **2026-08-03 동기화**: "C 배포 준비"는 6번에서 이미 완료됐으므로 여기 "남은 것"에서 제거. + 실제로 남은 건 Master의 Firebase FCM 시크릿 배치(N4-1/3)와 Android UI 탭(N4-5~10, + `mobile/README.md`)뿐 5. [x] 2.4/2.5 안전장치·QA (서버 쪽) — 하드게이트·거부권·삭제·pytest·L0~L2 통합 테스트 완료. 클라이언트 쪽 온디바이스 암호화·데이터 흐름 대시보드·수동 QA는 B/A3 나머지와 함께 - 5-1. [x] 2.6 베타 배포 준비(서버 쪽) — 초대 코드·`/admin/metrics`. **실제 베타 오픈은