18 lines
2.0 KiB
Markdown
18 lines
2.0 KiB
Markdown
# WorthPath 首版设计
|
||
|
||
NestJS API、React/Vite 前端和 MySQL;同源 /api,开发环境由 Vite 代理。
|
||
|
||
用户拥有持有项目 Position(account/asset/debt)、汇率及登录会话。账户独立保留 asset/liability 属性;信用卡与贷款固定为负债。债务可链接到多个同用户项目,链接不参与求和。每个金额均为非负原币余额,负债按 side 减去。
|
||
|
||
Revision 保存按业务日期生效的绝对金额,每对象每日一条记录;同日更正须明确调用更正接口。历史前值和变化额按业务日期重新计算,避免更正早期记录后余额与趋势不一致。未来日期不允许。初始余额也写入历史。金额 DECIMAL(24,8),汇率 DECIMAL(24,12),API 使用十进制字符串;计算使用 Decimal,前端仅图形坐标使用 Number。
|
||
|
||
趋势按日期重放金额和当时可用汇率。汇率导致的变化和余额导致的变化分别归因;没有可用汇率时总额标记不完整,绝不默认为 1。归档项目仍参与统计,归档仅停止编辑,避免归档导致财富凭空消失。
|
||
|
||
认证采用 bcrypt 密码哈希和 HttpOnly 随机会话 Cookie;数据库只保存会话令牌 SHA-256 摘要。所有资源查询由会话用户范围限定。写入要求同源 Origin,登录限速;生产必须 HTTPS 并启用安全 Cookie。
|
||
|
||
备份采用 version=1 JSON,包含项目、历史、关系、汇率、本位币,不包含用户认证数据。首版导入只追加完整的新项目并重映射 ID;完全相同的重复导入拒绝;汇率冲突拒绝;已有本位币不自动更改。完整验证后事务写入,不修改已有项目。
|
||
|
||
页面:注册登录、总览、账户/资产/债务列表及详情与编辑、历史、本位币/汇率设置、备份与导入。空数据无演示金额。
|
||
|
||
数据库使用 Prisma 可追踪 SQL 迁移,部署仅 migrate deploy,禁止 db push/reset。扩展家庭共享时可以引入空间和成员权限,现阶段严格按用户隔离。
|