100 lines
4.6 KiB
Markdown
100 lines
4.6 KiB
Markdown
## 2025-11-03 开发日志
|
||
|
||
**比较基线**
|
||
- 上一次提交: b982cd5(2025-10-31 22:14 +0800,“更新前端配置、文档和脚本”)
|
||
|
||
**今日概览**
|
||
- 共修改 20 个文件:新增约 1047 行,删除约 616 行
|
||
- 关键主题:
|
||
- 后端数据源抽象与路由重构(引入 DataManager 与多 Provider)
|
||
- AI 分析模块的编排、依赖解析与流式输出接口
|
||
- 前端接入 Prisma(PostgreSQL)并新增报告存储 API 与页面
|
||
- 移除旧 Tushare 客户端实现,统一到新 Provider 架构
|
||
- 配置、依赖与开发脚本同步更新
|
||
|
||
---
|
||
|
||
### 后端(FastAPI)
|
||
|
||
**数据源抽象与管理**
|
||
- 新增 `backend/app/data_manager.py`:集中加载 `config/data_sources.yaml`,根据市场(CN/US/HK/JP)优先级选择 Provider;提供统一的 `get_stock_basic`、`get_financial_statements`、`get_daily_price` 等方法。
|
||
- 新增 Provider 抽象与实现:
|
||
- 抽象基类:`backend/app/data_providers/base.py`
|
||
- 实现:`backend/app/data_providers/tushare.py`、`.../yfinance.py`、`.../finnhub.py`、`.../ifind.py`
|
||
- Token 优先从环境变量读取,次选 `config/config.json`。
|
||
- 新增配置 `config/data_sources.yaml`:定义各数据源的 `api_key_env` 和各市场的优先顺序。
|
||
- 移除旧实现 `backend/app/services/tushare_client.py`。
|
||
|
||
**路由与业务逻辑重构**
|
||
- `backend/app/routers/financial.py` 大幅重写:
|
||
- `GET /data-sources`:返回需要密钥的数据源列表(用于前端指引)。
|
||
- 分析编排接口:
|
||
- `POST /china/{ts_code}/analysis`:读取分析模块配置,拓扑排序按依赖顺序执行,汇总结果。
|
||
- `GET /china/{ts_code}/analysis/{analysis_type}`:单模块分析,自动解析依赖并注入上下文。
|
||
- `GET /china/{ts_code}/analysis/{analysis_type}/stream`:流式输出纯文本分析内容。
|
||
- `GET /analysis-config` 与 `PUT /analysis-config`:读取/更新 `config/analysis-config.json`。
|
||
- `GET /china/{ts_code}`:通过 `DataManager` 批量拉取多年度报表,聚合为前端所需的 `series` 结构。
|
||
- `GET /china/{ts_code}/company-profile`:使用 LLM 生成公司画像(非流式)。
|
||
|
||
**分析客户端**
|
||
- `backend/app/services/analysis_client.py`:统一的 OpenAI 兼容客户端,支持:
|
||
- 非流式生成:`generate_analysis(...)`
|
||
- 流式生成:`generate_analysis_stream(...)`
|
||
- 安全模板占位符替换与上下文合并;读写 `config/analysis-config.json`。
|
||
|
||
**应用入口与依赖**
|
||
- `backend/app/main.py`:
|
||
- 增强日志输出(自定义 Handler,开发期强制输出到 stdout)。
|
||
- 保持 CORS 全开与路由注册(`/api/v1/config/*`、`/api/v1/financials/*`)。
|
||
- `backend/requirements.txt`:补充 `yfinance`、`finnhub-python`、`pandas`、`PyYAML`、`asyncpg`、`greenlet` 等依赖。
|
||
|
||
---
|
||
|
||
### 配置与文档
|
||
- `config/analysis-config.json`:更新分析模块配置(依赖、模型、模板)。
|
||
- `docs/user-guide.md`:小幅补充。
|
||
|
||
---
|
||
|
||
### 前端(Next.js 15 / React 19)
|
||
|
||
**Prisma 集成与报告 API**
|
||
- 新增 Prisma:
|
||
- `frontend/prisma/schema.prisma` 定义 `Report { id, symbol, content(Json), createdAt }`。
|
||
- `frontend/src/lib/prisma.ts` 提供 PrismaClient 单例。
|
||
- 依赖更新:`@prisma/client`、`prisma` 等;`package-lock.json` 同步。
|
||
- 新增 API:
|
||
- `GET/POST /api/reports`:分页查询与创建报告(基本校验)。
|
||
- `GET /api/reports/[id]`:按 ID 获取报告。
|
||
|
||
**页面与其他改动**
|
||
- `frontend/src/app/reports/page.tsx`:渲染报告列表并跳转至详情页 `reports/[id]`。
|
||
- 新增 `frontend/src/app/reports/[id]/page.tsx`:报告详情页。
|
||
- `frontend/src/app/report/[symbol]/page.tsx`:较大调整(生成/展示逻辑整合)。
|
||
- 其他微调:`layout.tsx`、`api/financials/[...slug]/route.ts`、`.gitignore`、`next.config.mjs`。
|
||
- 运行脚本端口:`npm run dev` 默认 3001。
|
||
|
||
---
|
||
|
||
### 脚本
|
||
- `scripts/dev.sh`:增强启动/开发流程。
|
||
- 若干测试脚本小改:`scripts/test-*.py`。
|
||
- 新增过渡脚本 `scripts/tushare_legacy_client.py`(旧 Tushare 逻辑备份/兼容)。
|
||
|
||
---
|
||
|
||
### 删除/新增(关键)
|
||
- 删除:`backend/app/services/tushare_client.py`。
|
||
- 新增(尚未提交的工作副本):
|
||
- 后端:`backend/app/data_manager.py`、`backend/app/data_providers/*`
|
||
- 配置:`config/data_sources.yaml`
|
||
- 前端:`frontend/prisma/schema.prisma`、`frontend/src/lib/prisma.ts`、`frontend/src/app/api/reports/*`、`frontend/src/app/reports/[id]/page.tsx`
|
||
|
||
---
|
||
|
||
### 备注
|
||
- 需确保各数据源的密钥通过环境变量或 `config/config.json` 正确配置。
|
||
- 分析模块配置(依赖与模板)变更需同步前后端约定。
|
||
|
||
|