4.6 KiB
4.6 KiB
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正确配置。 - 分析模块配置(依赖与模板)变更需同步前后端约定。