140 lines
4.1 KiB
Markdown
140 lines
4.1 KiB
Markdown
# Yanting / report-notebooklm
|
|
|
|
`研听` is a Phase 1 app and backend for turning global institutional research reports into structured Chinese reading and listening experiences.
|
|
|
|
This repository is prepared as a single Gitea handoff repository for product and engineering teams.
|
|
|
|
## What Is In This Repository
|
|
|
|
| Area | Path | Description |
|
|
|---|---|---|
|
|
| Backend API | `report-notebooklm-api/` | FastAPI service, MySQL models, Alembic migration, seed importer, public read API. |
|
|
| Flutter App | `report-notebooklm-app/` | Flutter client with five main tabs, report detail modules, Android/web scaffolds. |
|
|
| Repo docs | `docs/` | Project-level overview, decisions, development history, and handoff guidance. |
|
|
| Backend docs | `report-notebooklm-api/docs/` | API/data/content-pipeline/runbook details. |
|
|
| App docs | `report-notebooklm-app/docs/` | App runbook, project map, and API consumption notes. |
|
|
|
|
## Product Snapshot
|
|
|
|
`研听` helps Chinese users understand global institutional research reports across macro, precious metals, commodities, energy, central banks, and cross-asset topics.
|
|
|
|
Phase 1 focuses on:
|
|
|
|
- 推荐: curated/latest report interpretations.
|
|
- 研报: report list and basic filtering.
|
|
- 机构: institution list and institution detail.
|
|
- 听单: reports that have audio.
|
|
- 我的: guest/login state and shallow personal-state entries.
|
|
|
|
Phase 1 explicitly does not include comments, UGC, paid unlocks, membership, ads, trading signals, investment advice, or report-interpretation downloads.
|
|
|
|
## Read First
|
|
|
|
For human readers:
|
|
|
|
1. `docs/PROJECT_OVERVIEW.md`
|
|
2. `docs/DECISIONS.md`
|
|
3. `docs/DEVELOPMENT_HISTORY.md`
|
|
4. `report-notebooklm-api/docs/HANDOFF.md`
|
|
5. `report-notebooklm-app/docs/HANDOFF.md`
|
|
|
|
For agents:
|
|
|
|
1. `AGENTS.md`
|
|
2. `docs/DECISIONS.md`
|
|
3. Target subsystem README and runbook.
|
|
|
|
## Current Implementation Status
|
|
|
|
Backend implemented:
|
|
|
|
- FastAPI app under `/api/report-notebooklm/v1`.
|
|
- SQLAlchemy model layer for Phase 1 tables.
|
|
- Alembic initial migration.
|
|
- Seed import script.
|
|
- Public read endpoints for health, feed, reports, report modules, institutions, and listen list.
|
|
- Tests for seed and public API behavior.
|
|
|
|
App implemented:
|
|
|
|
- Five bottom tabs: 推荐, 研报, 机构, 听单, 我的.
|
|
- API-backed list/detail views using `RNB_API_BASE`.
|
|
- Report detail module renderer registry.
|
|
- Local placeholders for login, favorites, outbound confirmation, and playback progress.
|
|
- Android and web build scaffolds.
|
|
|
|
Not production-ready yet:
|
|
|
|
- Auth and personal state.
|
|
- Real audio stream signing.
|
|
- Outbound event writing.
|
|
- Internal content management API.
|
|
- Production object storage and cache invalidation.
|
|
- Production API domain, release signing, final app icon, and store metadata.
|
|
|
|
## Backend Quick Start
|
|
|
|
```bash
|
|
cd report-notebooklm-api
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -e ".[dev]"
|
|
cp .env.example .env
|
|
# edit .env for your MySQL and Redis
|
|
alembic upgrade head
|
|
python scripts/import_seed_content.py
|
|
uvicorn app.main:app --reload --host <bind-host> --port <port>
|
|
```
|
|
|
|
Smoke checks:
|
|
|
|
```bash
|
|
API_BASE_URL=http://<api-host>:<port>/api/report-notebooklm/v1
|
|
curl "$API_BASE_URL/health"
|
|
curl "$API_BASE_URL/feed/recommended"
|
|
curl "$API_BASE_URL/reports/rep_ssga_gold"
|
|
```
|
|
|
|
## App Quick Start
|
|
|
|
```bash
|
|
cd report-notebooklm-app
|
|
flutter analyze
|
|
flutter test
|
|
flutter run -d chrome --dart-define=RNB_API_BASE=<api-base-url>
|
|
```
|
|
|
|
Android emulator:
|
|
|
|
```bash
|
|
flutter run -d <emulator-id> --dart-define=RNB_API_BASE=<emulator-api-base-url>
|
|
```
|
|
|
|
## Verification
|
|
|
|
Backend:
|
|
|
|
```bash
|
|
cd report-notebooklm-api
|
|
source .venv/bin/activate
|
|
pytest -q
|
|
```
|
|
|
|
App:
|
|
|
|
```bash
|
|
cd report-notebooklm-app
|
|
flutter analyze
|
|
flutter test
|
|
flutter build web --dart-define=RNB_API_BASE=<api-base-url>
|
|
flutter build apk --debug --dart-define=RNB_API_BASE=<emulator-api-base-url>
|
|
```
|
|
|
|
## Documentation Boundary
|
|
|
|
This repository contains a code handoff snapshot. It does not replace the product source of truth.
|
|
|
|
Product SSOT: mall-docs report-notebooklm docs, snapshot date: 2026-06-03.
|
|
|
|
Local-only notes, private paths, raw session pointers, and personal agent workflow belong in ignored `docs.jimme.local/` and `AGENTS.local.md`.
|