# 变更审计记录:board-finance 双重格式化修复 | 字段 | 值 | |------|-----| | 日期 | 2026-03-27 19:07:51 | | Prompt-ID | P20260327-190751 | ## 操作摘要 修复 board-finance.ts 中的双重格式化 bug:TS 层 `_loadData()` 用 `formatMoney()` 把数字格式化为字符串(如 `"¥543,047"`),WXML 中 WXS `fmt.money()` 再处理该字符串得到 NaN。移除 TS 层所有 `formatMoney()` 调用,金额字段直接传原始数字(`?? 0`),格式化统一由 WXS 完成。同时包含权限守卫添加、区域筛选扩展、AI 洞察字段、预估规则等多项集成改动。 ## 改动方案 TS 层 `_loadData()` 中移除所有 `formatMoney()` 调用,金额字段直接传原始数字(`?? 0`)。百分比字段(`discountRate`、`balanceRate`)也直接传原始小数。助教时薪字段不再拼接 `'¥' + val + '/h'`,直接传数字。格式化统一由 WXML 中的 WXS 函数完成。 移除了 `import { formatMoney }` 导入(文件内不再使用)。 ## 文件清单 | 文件 | 改动类型 | |------|----------| | `apps/miniprogram/miniprogram/pages/board-finance/board-finance.ts` | 逻辑修复 | ## 本次对话文件变更 新增文件: - `docs/audit/changes/2026-03-27__board-finance-double-format-fix.md` - `docs/audit/prompt_logs/prompt_log_20260327_190751.md` - `docs/audit/session_logs/2026-03/27/16_ecccf230_185956/main_01_ec27502d.md` - `docs/audit/session_logs/2026-03/27/16_ecccf230_185956/sub_01_9802833d.md` ## 改动注解 ### `apps/miniprogram/miniprogram/pages/board-finance/board-finance.ts` - 变更类型:修改 - 原始原因:财务看板全部 6 个板块金额显示为 NaN,根因是 TS 层 `formatMoney()` 预格式化后 WXS 再次调用数值方法导致双重格式化 - 思路分析:遵循「TS 与 WXS 格式化互斥」原则,TS 层只传原始数字(`?? 0` 防 null),所有格式化交给 WXML 中的 WXS 函数。同时本次集成了多项之前的改动:添加 `checkPageAccess` 权限守卫、`getVisibleBoardTabs` 动态看板 tab、区域筛选从 7 项扩展到 9 项(对齐后端 `AreaFilterEnum`)、新增 `isCurrentMonth` 预估标记和 `aiInsights` AI 洞察字段、overview/assistant/gift 等板块数据从 mock 替换为真实 API 绑定 - 修改结果:财务看板 6 个板块金额/百分比正常显示,筛选联动正常,权限守卫生效,区域筛选完整覆盖所有区域类型 ## 风险评估 - 低风险:仅移除 TS 层格式化,WXS 层格式化逻辑不变 - 前提:WXML 中所有金额字段已使用 `fmt.money()` 等 WXS 函数,百分比/时薪字段有对应 WXS 处理 ## 回滚 恢复 `formatMoney` 导入,将所有 `?? 0` 改回 `formatMoney(...)` 调用,百分比字段恢复 `* 100 + '%'`,时薪恢复 `'¥' + val + '/h'`。 ## 验证 1. 打开财务看板页,确认 6 个板块金额显示正常(非 NaN) 2. 切换时间/区域筛选,确认数据刷新后金额仍正常 3. 开启环比开关,确认对比数据显示正常