Files
WorthPath/docs/update-inclusion-metals-2026-10-03.md
T

54 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 账户转账、计入总览与贵金属估价
> 历史验收记录:2026-10-04 起所有旧备份兼容与单文件 JSON 支持已删除,当前仅接受 ZIP v9;本文旧版本测试记录不代表现行功能。现行 MCP 权限与工具范围见 [本次更新](update-agent-backup-2026-10-04.md)。
完成与验收:2026-10-03 18:56(UTC+8)。
## 账户转账
普通转账、快速转账与计划转账均可选择银行、现金、投资、信用卡和贷款等启用账户。仍须属于当前用户、使用两个不同账户,隐藏账户先解锁。借入/借出本金操作与计划支出沿用原有校验。
信用卡等负债账户在数据库中以正数表示欠款,网页以负数显示;转出增加欠款,转入抵扣欠款,超过欠款后显示溢缴存款。手续费计入转出账户。双方余额在同一事务中更新,修改、删除、重放及备份校验使用相同方向。
## 是否计入资产总览
- 设置 → 显示与菜单 → 独立资产计入总览:全局控制独立资产是否参与总额。
- 新建或编辑账户、独立资产与债务 → 计入资产总览:逐项控制是否参与资产、负债、净资产及轨迹。默认开启;独立资产须同时开启全局与逐项开关。
- 取消计入不会删除项目、历史、关联或计划,也不限制转账。列表和详情显示“不计入总览”;变化记录、最近变化和收支日历继续保留实际记录。
- 当前开关作用于整个轨迹;它不是历史日期生效的配置。排除项目所缺少的汇率不会让总览变为不完整。
## 贵金属估价
独立资产选择“贵金属”,保存后进入详情,设置黄金或白银、克数、纯度比例(例如 0.999)。黄金与白银价格来自 [Gold API](https://gold-api.com/docs),美元报价按每金衡盎司 31.1034768 克换算,并通过现有 [Frankfurter](https://frankfurter.dev/) 公共日汇率转为资产原币。所有实际第三方接口及图标素材来源均已在 [README](../README.md#第三方接口与外部素材来源) 单独列明。
更新机制与汇率一致:进程运行时每小时检查、每日尝试一次,打开总览或估价区域也会按需触发;新配置会重新触发检查,支持手动刷新。固定请求不发送用户、账户、重量、金额或登录 Cookie。响应异常、超时或报价过期时保留已有报价与估值,并显示失败原因。休市日价格与日汇率日期可能不同。
默认关闭自动记录估值。点击“应用估价”记录当前时间的估值;开启“随参考价自动记录估值”后,更新价格自动新增估值历史,相同估值不重复记录,已有历史不改写。报价比最新余额观察日期更早时,自动更新不会覆盖该观察值。可手动录入原币每克纯金属价格;同日手动价格优先于公共报价。已开启自动估值且有可用报价时,保存估价设置或录价会同步更新余额、总览及历史;否则由“应用估价”记录。
估价使用 Decimal 精确计算,重量和金额最多 8 位小数、参考价最多 12 位小数。参考价不含工费、回收折价或买卖价差;其他金属仍可使用普通手动估值,不会被当作黄金自动计价。
## 数据库与备份
新增两项迁移:
- `20261003000300_inclusion_metals`:用户独立资产计入设置、逐项目计入设置、贵金属配置及 MetalPrice 表。
- `20261003000400_metal_source_comment`:将最终使用的价格源写入字段注释。
本机已应用,共 17 项迁移;10 张业务表、106 个字段注释均通过核验。已有项目默认计入总览,不改写原有余额符号。ZIP 导出为 v8,保留计入设置、重量、纯度、自动估值配置、参考价及估值历史,继续兼容旧 ZIP v3–v7 和 JSON v1/v2。价格与已有同日数据冲突时回滚导入。清空流程的备份摘要包含价格,价格发生变化后须重新下载备份。
其他环境更新:
```powershell
pnpm db:generate
pnpm db:migrate
pnpm build
```
## 验证
35 项单元检查、17 项真实 MySQL 集成检查、前后端类型检查与生产构建通过。最终估值去重和首次配置触发更新另通过 4 项计算、失败保留及数据库专项回归。黄金、白银与固定币种公共汇率地址均实测返回 HTTP 200;集成测试验证同日手动价格不会被自动覆盖。
浏览器使用隔离模拟账号,验证信用卡快速转出 500 后显示欠款 -2500,日常账户变为 10500;贵金属应用估值生成历史;取消计入后总览净资产立即变为 8000;全局开关保存后状态持续保留。测试账号和模拟数据已清理,独立测试 API 已关闭。
本轮只更新本地代码和数据库并创建本地 Git 提交,不 push;前端已有的 Vite 配置修改保留。