Fundamental_Analysis/docs/logs/2025-11-03.md

100 lines
4.6 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.

## 2025-11-03 开发日志
**比较基线**
- 上一次提交: b982cd52025-10-31 22:14 +0800“更新前端配置、文档和脚本”
**今日概览**
- 共修改 20 个文件:新增约 1047 行,删除约 616 行
- 关键主题:
- 后端数据源抽象与路由重构(引入 DataManager 与多 Provider
- AI 分析模块的编排、依赖解析与流式输出接口
- 前端接入 PrismaPostgreSQL并新增报告存储 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` 正确配置。
- 分析模块配置(依赖与模板)变更需同步前后端约定。