From 7b281e728849f9fd8ab25dd308e353d261099b4f Mon Sep 17 00:00:00 2001 From: toki Date: Fri, 29 May 2026 21:11:00 +0900 Subject: [PATCH] update roadmap: current phase and product foundation milestones --- agent-roadmap/current.md | 2 +- .../phase/product-foundation/PHASE.md | 4 +-- .../milestones/client-validation.md | 33 ++++++++++--------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/agent-roadmap/current.md b/agent-roadmap/current.md index e9a303a9..9e9da6d7 100644 --- a/agent-roadmap/current.md +++ b/agent-roadmap/current.md @@ -7,7 +7,7 @@ ## 활성 Milestone -- [진행중] 클라이언트 검증 기준선 +- [검토중] 클라이언트 검증 기준선 - Phase: `agent-roadmap/phase/product-foundation/PHASE.md` - 경로: `agent-roadmap/phase/product-foundation/milestones/client-validation.md` diff --git a/agent-roadmap/phase/product-foundation/PHASE.md b/agent-roadmap/phase/product-foundation/PHASE.md index 53c07c7d..ea5cac58 100644 --- a/agent-roadmap/phase/product-foundation/PHASE.md +++ b/agent-roadmap/phase/product-foundation/PHASE.md @@ -24,9 +24,9 @@ nexo를 Mattermost 기반 서버/front/push-proxy 런타임과 nexo-owned Flutte - [완료] 이미지 기반 런타임 검증 - 경로: `agent-roadmap/archive/phase/product-foundation/milestones/runtime-image-validation.md` - 요약: nexo-owned Mattermost/push-proxy image build, 배포/수신 방식, 원격 Mac runtime 전환, 현 repo와 소비 프로젝트 smoke/e2e 검증 기준선을 만들고 잔여 Detox app-readiness 실패를 후속으로 분리했다. -- [진행중] 클라이언트 검증 기준선 +- [검토중] 클라이언트 검증 기준선 - 경로: `agent-roadmap/phase/product-foundation/milestones/client-validation.md` - - 요약: `apps/flutter-test`가 플러그인 소비 앱이자 테스트 호스트로 반복 검증을 제공하도록 고정한다. + - 요약: `apps/flutter-test` 기반 통합/Native/FCM ACK/inline reply smoke 검증 기준선을 닫고 사용자 완료 확인을 기다린다. ## Phase 경계 diff --git a/agent-roadmap/phase/product-foundation/milestones/client-validation.md b/agent-roadmap/phase/product-foundation/milestones/client-validation.md index ff753278..fe37ca3b 100644 --- a/agent-roadmap/phase/product-foundation/milestones/client-validation.md +++ b/agent-roadmap/phase/product-foundation/milestones/client-validation.md @@ -12,7 +12,7 @@ ## 상태 -[진행중] +[검토중] ## 승격 조건 @@ -20,9 +20,9 @@ ## 구현 잠금 -- 상태: 잠금 +- 상태: 해제 - 결정 필요: - - valid signed payload를 제공해 `04+03_fcm_ack_smoke`를 끝까지 진행할지, 이번 loop는 FCM receipt + ACK까지로 축소하고 notification UI 계열은 후속으로 분리할지 결정한다. + - 없음 ## 범위 @@ -39,26 +39,29 @@ `apps/flutter-test` 앱을 플러그인 통합 검증에 필요한 만큼만 유지한다. - [x] [thin-client] `apps/flutter-test`가 제품 UI가 아니라 plugin integration host 역할을 유지하도록 README와 테스트가 같은 기준을 따른다. -- [ ] [integration-path] plugin method channel, event channel, opened-routing 통합 테스트 경로를 유지한다. 검증: `cd apps/flutter-test && flutter test integration_test`가 지원 환경에서 성공한다. -- [ ] [native-test] Android native unit test 실행 절차를 유지한다. 검증: `cd apps/flutter-test/android && ./gradlew testDebugUnitTest`가 Android SDK 환경에서 성공한다. +- [x] [integration-path] plugin method channel, event channel, opened-routing 통합 테스트 경로를 유지한다. 검증: `cd apps/flutter-test && flutter test integration_test`가 지원 환경에서 성공한다. 근거: `agent-task/archive/2026/05/m-client-validation/01_integration_path/complete.log` +- [x] [native-test] Android native unit test 실행 절차를 유지한다. 검증: `cd apps/flutter-test/android && ./gradlew testDebugUnitTest`가 Android SDK 환경에서 성공한다. 근거: `agent-task/archive/2026/05/m-client-validation/02_native_test/complete.log` - [x] [sdk-boundary] Flutter SDK Android 구현은 Mattermost mobile code를 팔로잉하지 않고 server/push contract와 Android/FCM platform 변화만 추적한다는 기준을 문서화한다. ### Epic: [manual-smoke] 외부 인프라 smoke 자동화하기 어려운 FCM과 서버 ACK 검증을 수동 체크로 분리한다. -- [ ] [fcm-manual] 실제 Firebase FCM delivery와 서버 ACK 검증 절차를 문서화한다. 진행: `04+03_fcm_ack_smoke`에서 remote FCM receipt와 ACK POST evidence까지 확인했다. 남은 검증: valid signed payload, notification display, opened-routing, inline reply, dismiss. -- [ ] [remote-guide] 로컬 Android SDK가 없을 때 원격 테스트 환경 문서가 client README와 연결되도록 유지한다. +- [x] [fcm-manual] 실제 Firebase FCM delivery와 서버 ACK 검증 절차를 문서화한다. 검증: `04+03_fcm_ack_smoke`에서 remote FCM receipt, ACK POST, valid signed payload, notification display, opened-routing, inline reply native POST, dismiss evidence를 확인했다. 근거: `agent-task/archive/2026/05/m-client-validation/04+03_fcm_ack_smoke/complete.log` +- [x] [remote-guide] 로컬 Android SDK가 없을 때 원격 테스트 환경 문서가 client README와 연결되도록 유지한다. 근거: `agent-task/archive/2026/05/m-client-validation/01_docs_boundary/complete.log`, `agent-task/archive/2026/05/m-client-validation/03_smoke_preflight/complete.log` ## 완료 리뷰 -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 없음 +- 상태: 요청됨 +- 요청일: 2026-05-29 +- 완료 근거: + - `01_integration_path`에서 Android emulator 기반 plugin registration, method channel, EventChannel, opened-routing integration test가 PASS됐다. + - `02_native_test`에서 Android SDK 환경의 `testDebugUnitTest`가 PASS됐고, 로컬 SDK 부재는 환경 fallback으로 정리됐다. + - `04+03_fcm_ack_smoke`에서 FCM receipt, ACK, signed notification, opened/dismiss, inline reply `/api/v4/posts?set_online=false` POST와 `Reply SUCCESS` evidence가 PASS됐다. - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 -- 리뷰 코멘트: 없음 +- 리뷰 코멘트: 모든 기능 Task와 Task 안의 검증이 evidence와 함께 완료된 것으로 보이며, 사용자 최종 확인 후 Milestone을 `[완료]`로 전환하고 archive할 수 있다. ## 범위 제외 @@ -70,8 +73,8 @@ - 관련 경로: `apps/flutter-test/`, `packages/messaging_flutter/`, `packages/messaging_flutter/docs/android-test-environment.md` - 표준선(선택): client는 실제 소비 앱 모양의 검증 호스트이며 별도 `/example`이나 `/sandbox`를 두지 않는다. Flutter SDK는 nexo-owned embedded SDK로 유지한다 -- 진행 메모: `thin-client`는 `apps/flutter-test/README.md`와 `apps/flutter-test/test/widget_test.dart` 기준을 맞췄다. `sdk-boundary`는 `packages/messaging_flutter/README.md`의 SDK ownership/test strategy 기준을 보강했다. `04+03_fcm_ack_smoke`는 archived `03_smoke_preflight` 완료를 승계해 `apps/flutter-test`의 Firebase/plugin 초기화 누락을 보정했고, local/remote `flutter analyze`와 `flutter test` PASS, remote FCM token 저장, push-proxy send OK, device FCM receipt와 ACK POST까지 확인했다. valid signed payload가 없어 notification display/opened-routing/inline reply/dismiss evidence는 아직 BLOCKED다. -- 활성 계획: `agent-task/m-client-validation/01_integration_path/`, `agent-task/m-client-validation/02_native_test/`, `agent-task/m-client-validation/04+03_fcm_ack_smoke/` +- 진행 메모: `thin-client`와 `sdk-boundary` 문서/테스트 기준을 맞췄고, `integration-path`와 `native-test`는 원격 Android 지원 환경에서 PASS됐다. `04+03_fcm_ack_smoke`는 archived `03_smoke_preflight` 완료를 승계해 Firebase/plugin 초기화, FCM token 저장, signed push, ACK POST, notification display/opened/dismiss, inline reply native POST success까지 확인했다. +- 활성 계획: 없음 - 선행 작업: client migration과 1차 테스트 -- 후속 작업: valid server-generated signed push trigger 확보 후 notification display, opened-routing, inline reply, dismiss evidence 수집. 이후 메시징 계약 표준화, 알림 파이프라인 고도화 -- 확인 필요: valid signed payload를 제공해 현재 smoke를 끝까지 진행할지, 이번 loop는 FCM receipt + ACK까지로 축소하고 notification UI 계열은 후속으로 분리할지 결정 필요 +- 후속 작업: 사용자 완료 승인 후 archive. 이후 메시징 계약 표준화, 알림 파이프라인 고도화 +- 확인 필요: 사용자 완료 결과 확인 및 archive 승인