6c72b7d048
- Add docs/DATA_SOURCE_FLOW.md: end-to-end source -> NotebookLM -> storage -> App flow, source list with publish frequency, institution intro status, ingestion artifact structure, and known cadence gaps - Link the new doc from README and PROJECT_OVERVIEW indexes - Localize top-level and subproject READMEs to Chinese for handoff (pre-existing working-tree changes) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
研听 / report-notebooklm
研听 是一个第一阶段(Phase 1)的应用和后端,用来把全球机构研报转化成结构化的中文阅读与收听体验。
这个仓库被整理成单个 Gitea 交接仓库,供产品和工程团队接手使用。
仓库里有什么
| 区域 | 路径 | 说明 |
|---|---|---|
| 后端 API | report-notebooklm-api/ |
FastAPI 服务、MySQL 模型、Alembic 迁移、种子数据导入、对外只读 API。 |
| Flutter 应用 | report-notebooklm-app/ |
Flutter 客户端,包含五个主标签页、研报详情模块、Android/Web 脚手架。 |
| 仓库文档 | docs/ |
项目级概览、决策记录、开发历程和交接指南。 |
| 后端文档 | report-notebooklm-api/docs/ |
API、数据、内容流水线、运维手册的细节。 |
| 应用文档 | report-notebooklm-app/docs/ |
应用运维手册、项目地图、API 调用说明。 |
产品速览
研听 帮助中文用户读懂全球机构研报,覆盖宏观、贵金属、大宗商品、能源、央行、跨资产等主题。
第一阶段聚焦在:
- 推荐:精选 / 最新的研报解读。
- 研报:研报列表和基础筛选。
- 机构:机构列表和机构详情。
- 听单:带音频的研报。
- 我的:游客 / 登录状态,以及浅层的个人状态入口。
第一阶段明确不包含:评论、UGC、付费解锁、会员、广告、交易信号、投资建议、研报解读下载。
先读这些
给人类读者:
docs/PROJECT_OVERVIEW.mddocs/DECISIONS.mddocs/DATA_SOURCE_FLOW.mddocs/DEVELOPMENT_HISTORY.mdreport-notebooklm-api/docs/HANDOFF.mdreport-notebooklm-app/docs/HANDOFF.md
给 AI agent:
AGENTS.mddocs/DECISIONS.md- 对应子系统的 README 和运维手册。
当前实现状态
后端已实现:
- 挂在
/api/report-notebooklm/v1下的 FastAPI 应用。 - 第一阶段数据表的 SQLAlchemy 模型层。
- Alembic 初始迁移。
- 种子数据导入脚本。
- 健康检查、信息流、研报、研报模块、机构、听单的对外只读接口。
- 针对种子数据和对外 API 行为的测试。
应用已实现:
- 五个底部标签页:推荐、研报、机构、听单、我的。
- 基于
RNB_API_BASE的列表 / 详情视图。 - 研报详情的模块渲染器注册表。
- 登录、收藏、外链跳转确认、播放进度的本地占位实现。
- Android 和 Web 构建脚手架。
尚未达到生产可用:
- 鉴权和个人状态。
- 真实的音频流签名。
- 外链事件写入。
- 内部内容管理 API。
- 生产环境对象存储和缓存失效。
- 生产 API 域名、发布签名、最终应用图标、应用商店元信息。
后端快速上手
cd report-notebooklm-api
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
# 按你的 MySQL 和 Redis 编辑 .env
alembic upgrade head
python scripts/import_seed_content.py
uvicorn app.main:app --reload --host <bind-host> --port <port>
冒烟检查:
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"
应用快速上手
cd report-notebooklm-app
flutter analyze
flutter test
flutter run -d chrome --dart-define=RNB_API_BASE=<api-base-url>
Android 模拟器:
flutter run -d <emulator-id> --dart-define=RNB_API_BASE=<emulator-api-base-url>
验证
后端:
cd report-notebooklm-api
source .venv/bin/activate
pytest -q
应用:
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>
文档边界
这个仓库是一份代码交接快照,不能替代产品的唯一真源(SSOT)。
产品 SSOT:mall-docs 里的 report-notebooklm 文档,快照日期:2026-06-03。
仅限本机的笔记、私有路径、原始会话指针、个人 agent 工作流,都应放在被忽略的 docs.jimme.local/ 和 AGENTS.local.md 里。