Fundamental_Analysis/docs/3_project_management/logs/20251103_[Archived]_log.md
2025-11-17 00:58:43 +08:00

4.6 KiB
Raw Permalink Blame History

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_basicget_financial_statementsget_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-configPUT /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:补充 yfinancefinnhub-pythonpandasPyYAMLasyncpggreenlet 等依赖。

配置与文档

  • 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/clientprisma 等;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.tsxapi/financials/[...slug]/route.ts.gitignorenext.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.pybackend/app/data_providers/*
    • 配置:config/data_sources.yaml
    • 前端:frontend/prisma/schema.prismafrontend/src/lib/prisma.tsfrontend/src/app/api/reports/*frontend/src/app/reports/[id]/page.tsx

备注

  • 需确保各数据源的密钥通过环境变量或 config/config.json 正确配置。
  • 分析模块配置(依赖与模板)变更需同步前后端约定。