d3ro-voice/docs/v3/play/README.md

62 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 A-D 역사 후보와 imagegen canonical E의 원본·prompt·재현 절차·해시
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)