Files
cma-management/docs/verification/budget-decompose-400-hint-20260831.md

3.0 KiB
Raw Permalink Blame History

验收记录:年度分解400错误提示优化(budget-decompose-400-hint)

  • 任务: budget-decompose-400-hint-20260831.md
  • 执行人: wecom-fullstack(全栈Bot)
  • 完成时间: 2026-08-31 20:0x CST(本会话补齐验收)
  • Commit: 9cccaa6cfc6ad309c11c4f7f68009b2a43c92800(fix(budget): 年度分解400提示优化——含可用年份+双路径引导)
  • 状态: ✅ 通过(代码修改由 18:28 会话提交推送,本会话完成独立验收)

输出物证据

输出物1:budget.py 400提示优化(可用年份+双路径)

grep 命中:

  • 行225: avail_years = [r[0] for r in db.query(distinct(BudgetPlan.budget_year)).filter(...)(entity_id + period LIKE %-00 + status active)
  • 行231-232: if avail_years: → hint += f";现有年度数据年份:{', '.join(...)}"
  • 行233: hint += "。请先在预算录入中填写该年度预算总额,或改用战略预算编制按地图录入;如需按已有月度数据反向生成请咨询管理员。"

输出物2:单KPI缺参400提示

  • 行307: raise HTTPException(400, "缺少必要参数: annual_budget(单KPI分解需传年度预算值)")

输出物3:后端重启

  • systemd cma-backend ActiveState=active,ActiveEnterTimestamp=2026-08-31 18:28:25(commit 9cccaa6 提交 18:28:11 后由 CI deploy hook 自动重启)
  • GET http://127.0.0.1:8010/health → {"status":"ok","version":"1.0.0"} (200)

输出物4:实测提示(API 真实调用)

  • entity_id=1 + year=2025 → 400: 该年度(2025)没有年度预算总额(period=YYYY-00);现有年度数据年份:2026。请先在预算录入中填写该年度预算总额,或改用战略预算编制按地图录入;如需按已有月度数据反向生成请咨询管理员。 ✅ 含可用年份(2026) + 双路径引导
  • entity_id=2(陕西博海)+ year=2026 → 400: 该年度(2026)没有年度预算总额(period=YYYY-00)。请先在预算录入中填写该年度预算总额,或改用战略预算编制按地图录入;如需按已有月度数据反向生成请咨询管理员。 ✅ 含双路径引导(博海无年度行,avail_years 为空 → 无年份列表,符合预期)
  • entity_id=1 + year=2026 → 200:批量分解完成:4个KPI(成功路径未受影响)
  • 单KPI缺参(kpi_id=5 不传 annual_budget)→ 400:缺少必要参数: annual_budget(单KPI分解需传年度预算值) ✅

输出物5:pytest 全量回归

  • venv/bin/python3 -m pytest tests/ -q → 711 passed, 1 xfailed(基线 711 passed / 1 xfailed,全绿)

输出物6(可选):前端错误提示样式

  • 本期未做(任务建议本期只做后端提示,前端 doDecompose catch 已显示 e.detail 自动受益)

风险点核对

  • 成功路径(200)未改动:entity_id=1 year=2026 实测 200 正常 ✓
  • git commit 只含本次文件:9cccaa6 仅改 backend/app/api/budget.py(13 insertions, 2 deletions)✓
  • HEAD == origin/main,无未推送提交 ✓