80 lines
3.3 KiB
Markdown
80 lines
3.3 KiB
Markdown
# App Handoff
|
|
|
|
This is a handoff snapshot, not the product SSOT.
|
|
|
|
Product SSOT: mall-docs report-notebooklm docs, snapshot date: 2026-06-03.
|
|
|
|
## Current State
|
|
|
|
The App is a runnable Phase 1 Flutter shell connected to the backend public seed API. It is not production-ready yet.
|
|
|
|
Implemented:
|
|
|
|
- Five bottom tabs: 推荐, 研报, 机构, 听单, 我的.
|
|
- API client configured by `RNB_API_BASE`.
|
|
- API-backed recommended feed, report list, institution list, institution detail, listen list, report detail, and module detail.
|
|
- Report detail module renderer registry.
|
|
- Inline module rendering and card-plus-page module preview/detail flow.
|
|
- Local mini-player UI and player controls.
|
|
- Login, favorite, outbound, and playback placeholders that make blocked Phase 1 flows visible without pretending they are complete.
|
|
- Android platform scaffold and debug/release build compatibility.
|
|
|
|
Not implemented:
|
|
|
|
- Auth and real login state.
|
|
- Server-synced favorites, reading history, saved listens, and playback progress.
|
|
- Real audio stream from `/audio/{audio_id}/stream`.
|
|
- Outbound event write before external navigation.
|
|
- Production API domain.
|
|
- Release signing.
|
|
- Final app icon, final brand visuals, privacy copy, and store metadata.
|
|
|
|
## Important Product Decisions Reflected in App
|
|
|
|
- User-facing product name is `研听`.
|
|
- Technical identifiers stay `report-notebooklm` / `rnb`.
|
|
- Phase 1 has no download feature for report interpretation content, audio packages, or PDFs.
|
|
- Source access is through source/compliance or outbound surfaces, not in-product downloads.
|
|
- Guest users can browse public content and listen; login is only required for synchronized personal state.
|
|
- App must not call NotebookLM or any LLM to generate report content.
|
|
|
|
## Source Tree Map
|
|
|
|
| Path | Purpose |
|
|
|---|---|
|
|
| `lib/main.dart` | App entry point and API data source construction. |
|
|
| `lib/app.dart` | Material app and theme hookup. |
|
|
| `lib/data/api/` | Backend API client. |
|
|
| `lib/data/models/` | Typed response models. |
|
|
| `lib/features/shell_page.dart` | Bottom-tab shell and mini-player state. |
|
|
| `lib/features/feed/` | Recommended feed. |
|
|
| `lib/features/reports/` | Report list. |
|
|
| `lib/features/institutions/` | Institution list and detail. |
|
|
| `lib/features/listen/` | Listen list. |
|
|
| `lib/features/profile/` | Guest/login placeholder and personal-state entry points. |
|
|
| `lib/features/detail/` | Report detail. |
|
|
| `lib/features/detail/modules/` | Module renderer registry and module detail page. |
|
|
| `lib/widgets/` | Reusable UI components. |
|
|
| `lib/theme/` | Design tokens and Flutter theme. |
|
|
| `android/` | Android platform scaffold. |
|
|
| `test/` | Widget tests. |
|
|
|
|
## Suggested Handoff Order
|
|
|
|
1. Read `docs/PROJECT_BRIEF.md`.
|
|
2. Run the backend seed API from `report-notebooklm-api/`.
|
|
3. Read `docs/API_CONTRACT_NOTES.md`.
|
|
4. Run `flutter analyze` and `flutter test`.
|
|
5. Run the App against the backend with `RNB_API_BASE`.
|
|
6. Choose the next App/API integration item from the open gaps.
|
|
|
|
## Next App Work
|
|
|
|
- Wire real auth once backend auth exists.
|
|
- Replace favorite/history/saved-listen placeholders with API-backed state.
|
|
- Use backend audio stream endpoint for actual playback URL.
|
|
- Persist playback progress for logged-in users.
|
|
- Write outbound event before external navigation.
|
|
- Add production API config and release signing.
|
|
- Finalize app icon, privacy wording, store copy, and risk-disclaimer surfaces.
|