qian
|
cd019cf817
|
feat(billing):新增本位币设置,初始化时可选择全局货币单位,一旦设置就不能修改
|
2026-08-29 10:22:47 +08:00 |
|
qian
|
99cb57dcd2
|
refactor(wallet):预扣冻结金额完全走redis,提升数据库并发能力
|
2026-08-05 23:38:15 +08:00 |
|
Qian
|
2ef5a40c26
|
新的调度方式 (#14)
重构模型渠道调度系统
|
2026-08-01 22:55:08 +08:00 |
|
martin
|
35a20cffeb
|
fix: 修复 P1-Resource 资源/SSRF 类问题
- P1-R1 rehostFromURL SSRF:syncImageDownloadClient 改用 SSRF 加固的
DialContext,dial 阶段拒绝 loopback/link-local/私网/multicast/unspecified,
用已校验 IP 直拨号杜绝 DNS rebinding;入口加 validateSSRFURL 预检(仅
http/https、字面量内网 IP 直接拒)。新增 isForbiddenIP/validateSSRFURL 单测。
- P1-R2 payment LockOrder 竞态:sync.Map + 手工引用计数改为 256 分片
sharded mutex(FNV-1a),同订单恒命中同分片,无引用计数/Delete,内存恒定。
公共 API 不变;同步更新 callback_test.go,-race 通过。
- P1-R4 OAuth 无超时:新增 oauthHTTPClient(10s 超时),替换全部 5 处
http.DefaultClient.Do / http.Post 出站请求。
- P1-R5 告警派发 goroutine 无上限:新增 goDispatchAlertNotifications,
阻塞式信号量(容量 16)封顶并发 + WithTimeout(30s) 兜底,不丢通知仅排队。
|
2026-07-26 12:54:41 +08:00 |
|
martin
|
4cc6ff307e
|
fix: 修复 P1 事务边界问题
- P1-T1 SetTenantGroups/SetGroupModels 删-插包进事务,避免插入失败清空关联
- P1-T2 ApiKeyUpdate 主表与 scope 更新同事务,缓存失效移到提交后
- P1-T3 InvalidateWallet 移到 FulfillOrder 事务提交后,避免缓存污染窗口
- P1-T4 handleDeletionRequest 跨 4 表删改包进事务,杜绝中间态
- P1-T5 subscribePlanTx 加事务级 advisory lock,串行化同租户订阅
|
2026-07-26 12:41:28 +08:00 |
|
martin
|
a7177cc6f5
|
fix: 修复 P2 可维护性与性能问题
- P2-3 ExportModelsJson N+1 改批量 WhereIn 查询定价
- P2-4 dashboard 聚合 Count 不再静默吞错,改 Warning 日志
- P2-5 promo_code/notification 的 map[string]any 返回值改 struct
- P2-6 CleanExpiredPreDeducts 改先 claim 再 release,避免多实例重复释放
- P2-7 trackPreDeduct 已由 P1-C 同步化+回滚覆盖,文档注明
- P2-8 支付金额容差比较改 decimal,消除 0.01 边界二进制误差
- P2-9 GetEnabledChannels 加 60s 进程内缓存,配置变更主动失效
- P2-10 OAuth callback 路径限定 provider 白名单 (github/google)
- P2-12 evaluateCondition eq 改浮点容差比较
- P2-13 api_metrics 加平台域调用方校验,防租户域误用泄露
- P2-14 删除 listProjectApiKeys 死代码
|
2026-07-26 12:31:41 +08:00 |
|
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 |
|
chengqian
|
8a68f6a501
|
fix: 修复代码分析报告中的中等优先级问题
修复 docs/claude代码分析.md 中等优先级的 8 项确认问题:
- tenant/project.go:ProjectUpdate/Archive/Unarchive 的 UPDATE 补上
tenant_id 过滤,恢复写操作租户隔离约定
- taskchannel(ali/sora/suno/volcengine/midjourney):裸 http.Client 改为
common.NewPooledClient(走连接池 + 尊重渠道 UseProxy),不再丢弃
BuildRequestHeader 的错误
- handler/public/payment.go:支付回调失败补日志,伪造/篡改尝试可追溯
- billing/wallet.go + payment/fulfill.go:新增导出 InvalidateWallet
同时清进程内 walletCache 与 Redis,消除充值后读到旧余额
- logic/task/task.go:ExecuteTask 领取任务改为原子 CAS,多副本不再重复执行
- middleware/rbac.go:matchPermission 后缀匹配改为按路径分段边界,
修复 /test 规则误命中 .../latest
- admin/channel.go + channel_oauth.go:渠道→密钥跨表写入包进事务,
杜绝孤儿渠道
- admin/promo_code.go:CreatePromoCode 增加字段白名单,对齐 UpdatePromoCode
另有 6 项经评估暂不修改(配额非原子/补扣负数/无 jti token/setup 竞态/
crypto AAD/turnstile 校验),原因见分析报告说明。
|
2026-07-22 18:43:38 +08:00 |
|
 Qianandchengqian
|
be9e707bfd
|
修复异步图片导致的多个问题 (#12)
* fix:修复响应污染问题
* fix:修改存储相关文件为中文注释
* fix:修复二次退款问题
* fix:修复多个考虑不全面问题
1.误删用户数据
2.R2存储默认区域
3.删除失败导致孤儿记录
4.网络抖动事变时重试
5.前端无限次请求获取图片
6.文件管理权限
* fix:修复字符串截断异常问题和文件下载超时问题
* fix:修复多图问题
* fix:异步生成图片时未配置oss提示错误信息
* fix:修复关闭异步后同步生成出错问题
* feat:新增文件存储测试功能,防止设置后不生效
* fix:修复同步图片转异步后计费错误
* fix:修复无下限扣款问题
* fix:修复结算重复扣款问题
* fix:修复计费出错导致的0费用结算
* fix:修复回调双重履约
* fix:修复预扣事务
* fix:修复费用字段类型问题
* fix:修复缓存问题
* fix:修复安全问题
* fix:修复数据库操作事务问题
* refactor:重构事务使用方式,改为官方推荐的dao形式
* fix:修复余额更新隐患
* fix:修复N+1查询问题
* fix:修复密钥安全问题
* fix:结算失败时打印错误日志
* improve:优化扣款
* fix:修复用户接口越权
---------
Co-authored-by: chengqian <wuchengqian@kkidc.com>
|
2026-07-22 17:53:18 +08:00 |
|
qian
|
6712ec88df
|
fix(pay):修复订单回调和超时未关闭问题
|
2026-06-13 20:15:48 +08:00 |
|
qian
|
2797760844
|
fix(pay):易支付功能改为post请求
|
2026-06-13 20:06:42 +08:00 |
|
chengqian
|
1d4d9836da
|
fix:修复钱包功能相关问题
|
2026-06-11 12:28:44 +08:00 |
|
qian
|
24a1c1e3cc
|
fix(open):修复钱包余额不足时webhook告警功能问题
|
2026-06-07 13:23:19 +08:00 |
|
qian
|
a59b8850f0
|
fi:中间件和数据库
|
2026-06-03 15:34:38 +08:00 |
|
qian
|
2793a6467c
|
improve(style):按照goframe推荐方式优化代码
|
2026-05-30 09:31:40 +08:00 |
|
chengqian
|
f3c98f2315
|
feat(test):添加核心组件的单元测试
|
2026-05-28 20:36:21 +08:00 |
|
qian
|
f3e87866c4
|
feat(tenant):新增用户等级功能
|
2026-05-26 08:01:41 +08:00 |
|
qian
|
5d48dbcdc2
|
refactor(plan):移除套餐相关的所有修改
|
2026-05-25 22:26:32 +08:00 |
|
qian
|
8480d06d21
|
fix(pay):修复 new-api 同款支付漏洞
|
2026-05-24 13:13:51 +08:00 |
|
qian
|
cbe1317f7c
|
refactor(pay):重构套餐和支付功能
|
2026-05-24 11:42:33 +08:00 |
|
qian
|
0d56f7d292
|
refactor:统一价格显示为6位小数
|
2026-05-22 00:08:11 +08:00 |
|
qian
|
555bddf5c3
|
refactor(payment):重构支付功能
|
2026-05-21 23:06:01 +08:00 |
|
qian
|
e4ec55ccf2
|
refactor(wallet):重构钱包功能,支持查看冻结信息
|
2026-05-20 12:42:13 +08:00 |
|
qian
|
5796973f0c
|
fix(db):修复数据库查询没有记录时报错
|
2026-05-14 08:06:58 +08:00 |
|
qian
|
3405280224
|
后端功能首次提交
|
2026-05-10 12:21:27 +08:00 |
|