Files
chengqian 108078614d fix: 金额 float64 → decimal 全链路迁移,消除浮点累积漂移
将全库资金金额从 float64 迁移到 shopspring/decimal,落定边界架构:
入口 NewFromFloat → 内部多步运算全程 decimal → 出口 InexactFloat64;
DB NUMERIC(20,10) 走 driver.Valuer 精确直传,Redis 钱包用整数 micro-USD,
CNY→USD 换汇仅在 payment.FulfillOrder recharge 分支。

- money.go 重写为 decimal 原生(运算/收敛/比较/边界/micro 工具)
- billing/tenant/admin/payment/open/task 各层金额运算 decimal 化
- entity/do 资金列重生成为 decimal.Decimal(可空列 *decimal.Decimal)
- 000013 迁移:非金额 NUMERIC 列 → double precision(5 表 13 列)
- Res 出口 .InexactFloat64() 收敛,JSONB 快照缝隙显式转 float64
- CLAUDE.md 新增 decimal 强约束;补充迁移基线/完成总结文档
2026-07-23 22:08:54 +08:00

24 lines
2.0 KiB
Go

// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package entity
import (
"github.com/gogf/gf/v2/os/gtime"
"github.com/shopspring/decimal"
)
// TntProjects is the golang structure for table tnt_projects.
type TntProjects struct {
Id int64 `json:"id" orm:"id" description:"主键ID"` // 主键ID
TenantId int64 `json:"tenant_id" orm:"tenant_id" description:"所属租户ID"` // 所属租户ID
Name string `json:"name" orm:"name" description:"项目名称"` // 项目名称
Description string `json:"description" orm:"description" description:"项目描述"` // 项目描述
Status string `json:"status" orm:"status" description:"状态:active(活跃)/ archived(归档)/ budget_exhausted(预算耗尽)"` // 状态:active(活跃)/ archived(归档)/ budget_exhausted(预算耗尽)
Budget *decimal.Decimal `json:"budget" orm:"budget" description:"项目预算上限(NUMERIC(20,10) 金额,NULL 表示不限制)"` // 项目预算上限(NUMERIC(20,10) 金额,NULL 表示不限制)
CreatedBy int64 `json:"created_by" orm:"created_by" description:"创建者用户ID"` // 创建者用户ID
CreatedAt *gtime.Time `json:"created_at" orm:"created_at" description:"创建时间"` // 创建时间
UpdatedAt *gtime.Time `json:"updated_at" orm:"updated_at" description:"更新时间"` // 更新时间
}