feat(release): prepare 1.1.0 candidate

This commit is contained in:
Yun Chan 2026-08-29 18:33:45 +09:00
parent 5a34f66981
commit 5205dcdfa9
736 changed files with 115667 additions and 12203 deletions

62
docs/v3/play/README.md Normal file
View file

@ -0,0 +1,62 @@
# D3RO Voice Google Play 제출 패키지
- 기준일: 2026-08-25
- 대상 패키지: `com.d3ro.voice`
- 기본 언어: `ko-KR`
- 보조 언어: `en-US`
이 디렉터리는 Google Play Console에 입력할 후보 문구와 제출 전 검증 게이트를 모은다. **초안은 콘솔에서 자동으로 제출해도 된다는 승인이 아니다.** 실제 release AAB, Play가 서명한 설치본, 운영 provider 설정과 콘솔 질문을 다시 대조한 뒤 사람이 최종 선언해야 한다.
## 문서
1. [`01-store-listing.md`](01-store-listing.md): 한국어·영어 스토어 등록정보와 지원 정보
2. [`02-data-safety-draft.md`](02-data-safety-draft.md): Data safety 데이터 유형별 초안과 검증 항목
3. [`03-app-content-draft.md`](03-app-content-draft.md): 광고, 앱 액세스, 등급, 금융 기능, 계정 삭제, AI·UGC, FGS 답변
4. [`04-release-checklist.md`](04-release-checklist.md): 앱 생성부터 internal/closed/production까지의 출시 게이트
5. [`05-content-reporting-operations.md`](05-content-reporting-operations.md): AI 신고 검토·종결·보관·purge 운영 절차
6. [`assets/feature-graphic/README.md`](assets/feature-graphic/README.md): 1024×500 후보, 원본, 재현 절차와 해시
7. [`../e2e/RED_E2E_500_CONTENT_REPORT.md`](../e2e/RED_E2E_500_CONTENT_REPORT.md): local Gateway→Edge→DB 650개 AI 신고 Red-path E2E
## 상태 표기
- **확정**: 현재 코드·정적 설정 또는 공개 운영 URL로 근거가 확인됐다.
- **후보**: 현재 구현과 맞는 콘솔 입력안이지만 실제 질문 문구와 다시 대조해야 한다.
- **검증 필요**: release AAB, provider 계약·설정, 실제 계정 또는 실기기 증거가 필요하다.
- **차단**: 해결 전에는 해당 선언이나 트랙 제출을 진행하면 안 된다.
- `<PLACEHOLDER_...>`: 실제 계정·인증서·URL·영상 값으로 교체해야 한다. 그대로 제출하면 안 된다.
## 현재 사실 경계
- Play Console 앱은 `YUN CHAN` 개인 개발자 계정에서 생성됐다: app ID `4976102237698469110`, `D3RO Voice`, `com.d3ro.voice`, `ko-KR`, 앱·무료. 정책·수출법 선언은 사용자 action-time 확인 후 처리됐다. 앱 생성은 제출·internal track·production 승인과 다르다.
- Android 소스는 API 36을 target/compile하고 microphone foreground service, Google Mobile Ads, Firebase Cloud Messaging, Google Play Billing을 포함한다.
- 공개 개인정보처리방침, 이용약관, 계정 삭제 페이지는 아래 canonical URL을 사용한다. 제출 직전 익명 브라우저에서 다시 확인한다.
- `https://d3ro.chanpaca.net/privacy/`
- `https://d3ro.chanpaca.net/terms/`
- `https://d3ro.chanpaca.net/delete-account/`
- 현재 작업공간에는 **Play 제출용 production AAB가 없다**. debug/E2E APK 또는 과거 self-hosted APK는 Play release 증거가 아니다.
- D3RO legacy/adaptive/monochrome launcher resource와 512×512 Play icon source는 반영됐다. JDK 17 양 ABI debug build, 기존 데이터 보존 update install과 Pixel Launcher emulator의 adaptive circle mask는 GREEN이다. proof는 `docs/v3/play/assets/proof/d3ro-icon-pixel-launcher-20260824.png`(SHA-256 `7A2DA876FBFD54089B783A7FD45C2472476ED47DCEABA08AB305B7B01A18D430`)다. Play-signed release와 실제 Pixel/Samsung/OEM mask·scale 증거는 아직 남았다.
- Play App Signing의 app-signing certificate와 개발자가 보관하는 upload certificate는 서로 다른 신뢰 경계다. Firebase OAuth/App Links에는 Play app-signing fingerprint를 등록하고, AAB 업로드 검증에는 upload fingerprint를 사용한다.
- AI 신고 source는 generation receipt, authenticated `content-report` Edge Function, service-only moderation 원장과 purge RPC까지 구현됐고 local SQL/HTTP/Deno 검증이 GREEN이다. receipt는 30일 유효하며 해결된 신고 증거는 180일 후 purge 대상이다. 운영 runbook 초안도 준비됐지만 production 배포, 자동 purge scheduler, 실제 담당 지정과 Play 설치본 E2E는 아직 남았다.
- local disposable Supabase에서 AI 신고 Red-path E2E 650개가 GREEN이다. malformed body·권한 우회·source ownership·idempotency·rate limit·manager moderation 전이를 실제 Gateway→Edge→DB로 검증하며 production endpoint는 실행기에서 fail-closed한다.
## 주요 코드 근거
- 패키지·release 설정: `apps/mobile-rn/android/app/build.gradle`
- target API: `apps/mobile-rn/android/build.gradle`
- 권한·FGS·AdMob·App Links: `apps/mobile-rn/android/app/src/main/AndroidManifest.xml`
- 광고와 UMP: `apps/mobile-rn/src/lib/mobile-ads-context.tsx`, `apps/mobile-rn/src/components/FreeTierBanner.tsx`
- Play Billing: `apps/mobile-rn/src/lib/billing-context.tsx`, `apps/mobile-rn/src/screens/ProPaywallScreen.tsx`
- 계정 삭제: `apps/mobile-rn/src/screens/AccountScreen.tsx`, `apps/mobile-rn/src/lib/account-local-data.ts`
- AI 신고: `apps/mobile-rn/src/components/ContentReportSheet.tsx`, `apps/mobile-rn/src/features/reporting/content-report-service.ts`, `server/supabase/functions/content-report/`, `server/supabase/migrations/20260824000029_content_reporting.sql`, `server/supabase/migrations/20260824000030_profile_managed_field_acl.sql`, `server/supabase/migrations/20260825000031_audit_log_actor_unlink.sql`
- 법적 링크: `apps/mobile-rn/src/screens/SignUpScreen.tsx`, `apps/mobile-rn/src/screens/SettingsScreen.tsx`
- 공개 법적 문서: `site/public/privacy/index.html`, `site/public/terms/index.html`, `site/public/delete-account/index.html`
## Google 공식 기준
- [Create and set up your app](https://support.google.com/googleplay/android-developer/answer/9859152?hl=en)
- [Provide information for the Data safety section](https://support.google.com/googleplay/android-developer/answer/10787469?hl=en)
- [Prepare your app for review](https://support.google.com/googleplay/android-developer/answer/9859455?hl=en)
- [Use Play App Signing](https://support.google.com/googleplay/android-developer/answer/9842756?hl=en)
- [Target API level requirements](https://support.google.com/googleplay/android-developer/answer/11926878?hl=en)
- [App testing requirements for new personal developer accounts](https://support.google.com/googleplay/android-developer/answer/14151465?hl=en)
- [Support 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes)