Commit Graph
4 Commits
Author SHA1 Message Date
shy3130 11a972a980 feat(financials): AI 财务分析 — 流式生成 + 全局胶囊 + 历史报告持久化
后端:
- 新增 financial_analyzer 服务(CFA 级九维分析提示词 + LLM 流式调用)
- 新增 ai_reports 持久化存储(保留前 20 条)
- 新增 /analyze 流式接口 + 报告 CRUD 接口
- 同步时间持久化到 preferences.json,重启不丢失

前端:
- 全局 AI 分析对话框(store 驱动,支持最小化/历史模式)
- 全局可拖拽任务胶囊(玻璃拟态,三态配色,60fps 拖拽)
- 历史报告列表面板(财务页底部)
- 轻量 Markdown 渲染器(表格折行/列表/引用)
- 同标的历史二次确认 + 财务菜单改名「财务分析」

同步版本号至 v0.1.45
2026-06-25 22:39:34 +08:00
shy3130 f1b41ca342 fix(financials): 全部同步改后台异步,修复点击无反应
根因:sync 路由同步阻塞调用 run_now(),全量同步 4 表 × 5500 标的需 ~2 分钟,
HTTP 请求长时间 pending 被浏览器/代理超时掐断,UI 表现为点击无反应。

后端:
- 抽出 _run_body() 同步逻辑本体;新增 trigger() 在后台线程执行,
  并在持锁状态下立即置 _is_syncing=True(消除竞态窗口 + 防重复点击启动多线程)
- sync 路由改调 trigger(),立即返回 {started: bool},前端轮询 /status.syncing 看进度

前端:
- api.ts financialSync 返回类型改为 {started; reason?}
- Financials.tsx 同步状态以 status.syncing 为真值、isPending 兜底乐观态;
  收尾时机改为监听 syncing 变 false(不再依赖瞬间触发的 onSettled);
  被防并发跳过时弹 toast 提示
2026-06-25 15:53:31 +08:00
shy3130 a5a04b4dd8 fix: 端点套餐门控/探测重试/分钟K月单位 + 财务页新功能 + localStorage 残留自愈
## Bug 修复
- 端点测速:Expert+ 用户现可选用专线端点(premium),非 Expert 仍锁定(EndpointTestDialog)
- 能力探测:try_call 对瞬时错误(429/5xx/超时)重试,避免抖动误丢 capability(导致"需 Free"误导徽章)
- 数据画像 CapBadge:tierReq='Free' 时不显示无意义的"需 Free"徽章
- 财务同步:用服务端 is_syncing 标志驱动 UI,刷新后仍正确显示"同步中",防重复点击 + 进度提示

## 新功能
- 财务页重设计:中间模糊搜索框(代码/名称),选股后展示 4 标签页详情
  (核心指标/利润表/资负表/现金流),字段格式化(百分点/金额转亿/每股)
- 分钟K向前扩展:Expert+ 新增「月」单位(1~6 月,180 天),Pro 仍只「天」(15 天)

## localStorage 残留自愈(拉新代码后不再显示本地开发残留)
- 策略池:加载后自动清除失效的自定义策略 ID
- 回测页:校验 selectedStrategy 是否存在,失效则重置;result 不跨会话恢复

## 重构
- 提取共享 tier 工具到 capability-labels.ts(TIER_RANK/isExpertOrAbove)
2026-06-19 00:10:01 +08:00
shy3130 7369358d08 Initial release v0.1.19 2026-06-18 17:18:23 +08:00