Skip to content

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:18
· 11 commits to main since this release

定位升级:从"会记账的助手"变成"能管仓位的财务部门"。
三条主线都是确定性计算 + 可复核输出,没有一处让模型自己算数。

新增:投资策略引擎(app/calculations/{portfolio_risk,strategy,valuation}.py)

纯标准库实现,零新增依赖。所有指标口径写进 docstring,样本不足时返回
null 并标注原因,绝不返回看起来合理的假数值。

能力 内容
组合风险 年化波动率、夏普、索提诺、最大回撤、Calmar、Beta/Alpha、历史模拟法 VaR(95%)、上涨天数占比、单日最佳/最差
基准对比 沪深300/上证/深成/创业板四条基准,净值曲线双线归一化对比,超额收益
再平衡 目标配置 + 容忍带(3/5/8/10%),输出买/卖金额与整手股数;A 股卖出可零股、买入必须整手
估值温度计 当前价在近 750 个交易日区间中的位置分位,五档分区(低位区/偏低/中枢/偏高/高位区)
定投 月/周计划、累计投入、份额、成本线、当前盈亏、下一期扣款日;数据覆盖前的定投日不补记
FIRE 目标本金(年支出/提取率)、完成度、储蓄率、复利年限;不可达时返回 reachable=false 而不是一个假年限

新增 6 个 REST 端点(/api/strategy/*)、5 个 agent 工具、5 个 MCP 工具
(外部 AI 也能调用),以及前端「投资策略」页(风险指标条 + 净值曲线 +
再平衡表 + 估值色阶 + 定投表 + FIRE 进度)。

新增:审计底稿导出(M6.1)

GET /api/audit-report 把 provenance 链路渲染成可归档 HTML:每条记录带
来源徽标、操作人、before/after 只列变化字段的差异表。浏览器内一键
打印为 PDF。输出 HTML 而不是 PDF 是为了不引入几十 MB 的渲染依赖;
所有动态内容经 html.escape,并附 CSP 头禁用外部资源。

新增:模型评测题库与判分器(M6.3)

app/eval_bank.py 50 道题,覆盖记账解析/预算/负债/持仓/策略/口径推理六类。
app/model_eval.py 用确定性判据打分(数值按容差、文本按关键结论),
不让 LLM 给自己打分。端点:/api/eval/{questions,run,score,leaderboard}。
未配置模型时明确返回未评分,不生成假成绩。

性能:后端预聚合(M5.3)

/api/dashboard 本月现金流改走 SQL GROUP BY(db.month_cashflow),
流水明细限 500 条 + 独立总数;加 10 秒 TTL 缓存(键含 DB 路径与租户),
所有写路径(记账/持仓/负债/订阅/目标/预算/设置/确认执行/对话记账)
统一失效。账本十万行时不再把整库搬进内存。

修复:界面口径与真实缺陷(截图审查发现,全部有回归测试)

  • 持仓编辑成本价放大 100 倍:positions[].cost 是总成本,编辑框要每股成本;
    新增 cost_per_share 字段,前端与"追加持仓"都改用它。
  • 占比双口径打架:by_asset 同时给 pct(相对总市值,合计 100%,
    供饼图与占比列)与 investable_pct(相对非现金,供集中度判定);
    此前现金行也用非现金分母,导致占比列合计 126%、风险提示 50.4% 与
    集中度 63.6% 同屏并存。
  • 今日盈亏恒为 +0.00%:分母把已是总额的 cost 又乘了一次股数。
  • 健康评分两套值(51 vs 50):/api/calculations/health 改走
    analysis.health_check 单一实现。
  • 亏损写成"浮盈":文案按盈亏正负切换浮盈/浮亏。
  • 总资产两个值(282,540 vs 264,884):/api/calculations/net-worth
    与健康评分都改用实时行情,与总览同源。
  • 手机端:设置项 Row 改上下堆叠(供应商选择器不再横向溢出);
    对话上下文条改 sticky top-0(不再被顶栏裁切)。
  • 饼图中心文字被扇区覆盖:环孔从 0% 改为 48%。
  • 命令面板补「去投资策略」入口。
  • 表格/统计格:占比列合计归 100%;平板宽度下大数字不再断行。

仓库与文档

  • 删除入库的 frontend/coverage/(48 个产物文件)与零引用的 docs/demo/(980KB 旧图)。
  • scripts/push-all.sh 重写:5 目标真实可用,支持 --dry-run/--only,
    凭据只从环境读取、打码输出。
  • README 补 Release/CI/Docker badge、30 秒上手、Why Xiaoman 对比、策略页截图;
    测试数统一为真实值。
  • PROGRESS 同步到 3.0.0;ROADMAP-v3 标注为历史快照;三份旧审计文档加
    「历史快照,不代表当前状态」声明并归入「质量与审计(历史)」分组。

验证

  • 后端 906 passed(原 791 + 新增 115);ruff check app tests 全过。
  • 前端 111 单测 + tsc + vite build 全过。
  • 截图审查 15 张(桌面/手机/平板/暗色/空库/降级),逐张人工核对,无
    undefined/NaN/空白/裁切。

说明

组合风险曲线是按当前持仓回溯的模拟净值,不是实盘历史成交净值;
接口用 basis: "backtest" 与 basis_note 明确标注,前端在卡片上展示该提示。