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

4.6 KiB
Raw Blame History

2025-11-06 开发日志

今日概览

  • 多市场“昨日快照”接口落地CN/US/HK/JP并在报告页新增快照卡片
  • 美股数据链路增强Finnhub 支持 SDK+HTTP 兜底与标准化映射YFinance 兼容CN代码规则
  • 财务报表聚合与 period 统一YYYYMMDD去重并按年限裁剪日度行情/估值按报告期对齐
  • 分析执行体验优化:顺序流式、可停止/继续、单模块重试、耗时/进度统计
  • 配置与文档Prisma 读取 config/config.json 数据库URL补充“财务数据字典”和项目状态说明

后端FastAPI

DataManager 与数据源策略

  • backend/app/data_manager.py
    • 只从 config/config.json 读取各 Provider 的 api_key(不再读取环境变量),初始化受控更清晰
    • 依据 config/data_sources.yaml 的市场优先级,按序尝试 tushareyfinancefinnhub 等 Provider
    • 统一 get_data 成功判定与异常兜底支持多返回类型list/dict/标量)
    • get_financial_statements:将扁平报表数据规范化为 series 结构,确保数值可序列化

Finnhub Provider美股重点

  • backend/app/data_providers/finnhub.py
    • 初始化增加 Token 掩码日志SDK 失败时自动回退到 HTTP 接口(profile2financials-reported
    • get_stock_basic 标准化公司基本信息;get_daily_price 输出 {trade_date, open, high, low, close, vol}
    • get_financial_statementsfinancials-reported 年度数据映射为内部字段,计算派生比率:grossprofit_marginnetprofit_marginroaroe,并直接输出 series

YFinance Provider兼容与映射

  • backend/app/data_providers/yfinance.py
    • 适配中国代码:.SH -> .SS.SZ 优先尝试无后缀
    • 规范化 stock_basic、日线行情与年度财务(合并利润表/资产负债表/现金流),提供基础字段重命名

财务与分析路由

  • backend/app/routers/financial.py
    • 新增“昨日快照”接口:
      • GET /api/financials/china/{ts_code}/snapshot:优先 daily_basic,兜底 daily
      • GET /api/financials/{market}/{stock_code}/snapshotCN 复用上式其他市场用日线在近10日内回看最近交易日
    • GET /api/financials/{market}/{stock_code}
      • 一次性拉取并聚合年度财报 series;识别当年最新报告期,将估值/股价按报告期映射
      • 统一 period(优先 YYYYMMDD缺失则由 year 映射为 YYYY1231),去重、排序并按 years 裁剪
    • 保持分析编排/单模块/流式接口与分析配置读写接口,便于前端顺序流式展示

前端Next.js 15 / React 19

报告页体验

  • frontend/src/app/report/[symbol]/page.tsx
    • 新增“昨日快照”卡片日期、股价、PE、PB、股息率、总市值亿元
    • 分析执行:顺序流式、可停止/继续、总进度与耗时、单模块“重新生成分析”
    • 财务表格:统一 period,扩充指标(人均效率、费用率、资产占比、周转能力、市场表现等)并突出关键阈值

数据获取 Hooks

  • frontend/src/hooks/useApi.ts
    • 新增 useChinaSnapshotuseSnapshot统一市场参数china/us/hk/jp与 SWR 策略
    • fetcher 强化:兼容非标准 JSON 的错误返回,统一抛出可读错误

Prisma 适配

  • frontend/src/lib/prisma.ts
    • config/config.json 动态解析数据库URLpostgresql+asyncpg:// 转换为 Prisma 需要的 postgresql://,默认追加 schema=public
    • 开发环境下复用单例,减少连接开销

文档

  • 新增:docs/financial_data_dictionary.md(统一字段口径与来源映射)
  • 更新:docs/project-status.md(现状、限制与后续计划);docs/user-guide.md(报告页、快照与分析流程)
  • 清理:删除 docs/tasks.md

风险与注意事项

  • Provider 密钥现仅从 config/config.json 读取;未配置将跳过需密钥的数据源(日志有警告)
  • 美股字段映射存在口径差异,个别指标为近似计算,需结合“财务数据字典”持续校验
  • 单模块分析尝试附带最近年度财报上下文,边界与稳定性需结合真实数据回归

验收建议

  • 快照:
    • CN: GET /api/financials/china/600519.SH/snapshot
    • US: GET /api/financials/us/AAPL/snapshot
  • 报告页:访问 /report/600519?market=china 验证快照卡片、顺序流式与保存按钮
  • 多源融合:调整 config/data_sources.yaml 优先级,观察回退与成功率日志
  • 数据库:在无 .env 的场景下,确认 Prisma 能从 config/config.json 正确加载连接串