48 Commits
Author SHA1 Message Date
chengqian 4297739e23 feat(relay):新增阿里wan 3.0视频模型支持 2026-09-22 20:58:01 +08:00
qian 718a5fbf17 feat(log):优化请求记录日志 2026-09-19 10:25:01 +08:00
qian c7ed4f6e55 fix(model):修复获取模型列表接口间歇性返回空的问题 2026-09-18 23:17:13 +08:00
qian 5ce16daa46 feat(model):新增MiniMax-H3视频支持 2026-09-13 22:14:21 +08:00
qian e6293c4c7c feat(model):模型计费功能改造,支持按秒计费的方式 2026-09-12 20:42:26 +08:00
qian 97da0a70aa feat(relay):添加OpenAI标准视频端点 2026-09-12 17:04:36 +08:00
chengqian 755868a331 feat(relay):新增token估算接口 2026-09-09 14:33:59 +08:00
qian cd019cf817 feat(billing):新增本位币设置,初始化时可选择全局货币单位,一旦设置就不能修改 2026-08-29 10:22:47 +08:00
qian 40e91d9450 feat(channel):新增渠道调试日志功能 2026-08-20 10:34:15 +08:00
qian 1f5b1635d4 fix(log):修复日志记录非utf-8字符串报错问题 2026-08-17 07:59:11 +08:00
qian f482cadac9 fix(log):修复各个协议转换时缓存token数丢失的问题 2026-08-16 23:24:19 +08:00
qian 5d25673c06 feat(relay):完善responses协议 2026-08-16 19:58:20 +08:00
qian 95a6bce0b1 feat:开发环境下给后端一个落地页引导 2026-08-08 10:23:32 +08:00
qian d622237048 improve(playground):根据key的能力显示可用模型 2026-08-08 10:05:24 +08:00
chengqian 4f749930d6 fix(setup):修复系统初始化故障问题 2026-08-07 17:56:13 +08:00
chengqian 3256d84c30 fix(apikey):修复api key异步模型越权调用问题 2026-08-07 17:43:22 +08:00
Qian 2ef5a40c26 新的调度方式 (#14)
重构模型渠道调度系统
2026-08-01 22:55:08 +08:00
chengqian 17d8fadad7 fix:修复异步图像可能导致的panic异常 2026-07-27 17:11:29 +08:00
martin a6ed67d841 fix: 完成 P3 细节优化项
依据《代码分析结果.md》P3 章节,逐条修复 20 项细节问题:

正确性修复:
- P3-1 锁定剩余分钟改用 math.Ceil,避免「0.9 分钟」显示为「0 分钟」
- P3-12 移除 CheckAndUpgradeLevel 中恒真的 hasUpdate 标志
- P3-14 移除 CheckTrialExpiry 中恒真表达式(count > 0 || true)调试残留,改用 RowsAffected
- P3-2 成员不存在统一返回 NewNotFoundError(404),与其它方法语义一致

安全加固:
- P3-6 X-Request-Id 加格式校验 ^[A-Za-z0-9-]{1,64}$,防日志注入
- P3-7 新增公共 EscapeLikePattern,转义 admin LIKE 搜索的 %/_ 通配符
- P3-8 Encrypt 输出加 v1: 版本前缀,Decrypt 兼容无前缀历史密文
- P3-9 turnstile 响应体读取加 64KB 上限,防内存耗尽
- P3-11 backup codes 熵由 48-bit 提升到 64-bit
- P3-15 recordAudit 对 multipart/二进制体跳过 Unmarshal 与原文落库
- P3-17 错误日志按 Content-Type 跳过 multipart/二进制体读取
- P3-16 HandleRealtime 加 panic recover 与连接生命周期日志

可维护性/一致性:
- P3-3 oauth.go 时间格式统一为 time.RFC3339
- P3-5 MsgSuccess 统一为 ok,response.go 改用常量引用
- P3-4 错误码分段策略加注释,说明空洞与跳跃的成因
- P3-13 ModelMultiplier 占位语义加注释(计费公式设计位 + 快照列)
- P3-19 抽取 registerCronJobs,主启动流程清爽

重构:
- P3-18 删除死代码 BuildBillingSummary/SummaryParams(仅测试引用),保留共用 helper
- P3-20 抽取 relay.InvalidateMemberModelScopeCache 单一失效入口,
  消除三处 member_model 前缀字面量重复(原为有意跨包失效,原建议改名会破坏)

经核实保留 + 文档化:
- P3-10 TOTP 暂保留 SHA-1:totp.Validate 硬编码 SHA-1 且存储不保存算法元信息,
  直接切 SHA-256 会导致校验恒失败,需配合 schema 改动,超出 P3 范围
2026-07-26 12:16:33 +08:00
martin 0f87322f49 fix: 修复 P1 功能正确性问题 2026-07-26 11:03:22 +08:00
martin 6665b1e113 refactor:重构渠道调度功能 2026-07-25 20:48:15 +08:00
martin e9b5592666 fix:修复租户数据导出功能 2026-07-25 19:57:50 +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 5c19806752 fix:修复任务日志中平台信息错误 2026-07-18 01:31:44 +08:00
fa053529af 图片请求统一异步处理 (#11)
* fix:未导入unicode包

* feat:图片异步转换

* feat:添加R2支持

* feat:新增文件管理

* fix:修复错误信息双写导致响应异常

* chore:渠道列表中添加快捷启用停止按钮

* fix:修复模型异常终端导致报错的问题

* improve:优化无可用渠道的日志打印,减少日志污染

* fix:在线体验出错缺少提示信息

* fix:修复日志库问题,只有请求日志保存到独立的库中

* feat:新增阿里图片模型说明文档

* fix:阿里千问图片生成

* fix:修复图片异步控制无效问题

* improve:优化文件展示,支持缩略图查看

* feat:实时监控中添加图片异步转换池状态信息

* improve:优化在线体验页面布局

* fix:修复异步任务状态显示异常问题

* feat:图片异步任务停止时等待任务完成后再退出程序

* chore:调整存储路径

---------

Co-authored-by: qian <wuchengqian5@163.com>
Co-authored-by: chengqian <wuchengqian@kkidc.com>
2026-07-18 00:26:13 +08:00
22ee0aa112 修复安全问题 (#9)
* fix:修复权限问题

* fix:修复项目key类型错误问题

* fix:修复rbac权限问题

* fix:修复api密钥未及时失效的问题

* improve:优化渠道调度稳定性

* improve:优化路由

* fix:修复项目预算控制缺陷

* fix:加强限流等安全措施

* feat:添加限流相关字段的前端展示及接口字段

* improve:优化注册时密码要求,只需要字母和数字即可

* feat(setting):添加注册限流设置

* improve:优化前端数字类型转换

* chore:rbac权限放行

---------

Co-authored-by: chengqian <wuchengqian@kkidc.com>
Co-authored-by: qian <wuchengqian5@163.com>
2026-06-23 22:47:54 +08:00
qian 6712ec88df fix(pay):修复订单回调和超时未关闭问题 2026-06-13 20:15:48 +08:00
chengqian 1d4d9836da fix:修复钱包功能相关问题 2026-06-11 12:28:44 +08:00
qian cd47f55ded improve:优化超时时间,最多10分钟超时 2026-06-10 01:10:12 +08:00
qian 747b6e1f9b fix(model):修复在线体验功能不记录审计日志的问题 2026-06-06 10:18:57 +08:00
chengqian ccf457592b fix(relay):修复多个并发问题 2026-06-03 17:03:09 +08:00
qian a59b8850f0 fi:中间件和数据库 2026-06-03 15:34:38 +08:00
qian 7c281743ff fix(model):成员只能看见自己能调用的模型 2026-05-29 07:50:09 +08:00
qian 5d48dbcdc2 refactor(plan):移除套餐相关的所有修改 2026-05-25 22:26:32 +08:00
qian cbe1317f7c refactor(pay):重构套餐和支付功能 2026-05-24 11:42:33 +08:00
qian 891c9abb4e improve(model):优化openai图像生成功能 2026-05-23 11:51:09 +08:00
qian 555bddf5c3 refactor(payment):重构支付功能 2026-05-21 23:06:01 +08:00
qian 0f76ed36b2 fix(monitor):修复实时监控只能监控对话模型的问题 2026-05-20 12:51:46 +08:00
qian e4ec55ccf2 refactor(wallet):重构钱包功能,支持查看冻结信息 2026-05-20 12:42:13 +08:00
qian b04e656667 Merge branch 'feat/video' into dev 2026-05-20 00:40:51 +08:00
qian 5084406687 feat(model):添加对火山视频模型的支持 2026-05-19 23:28:54 +08:00
qian 1b6134a890 feat(model):视频大模型添加请求审计和用量记录 2026-05-19 00:45:02 +08:00
qian ef2845af3a feat(model):新增视频类型的大模型支持 2026-05-19 00:33:02 +08:00
qian 42f2b2e1c0 feat(model):阿里模型添加异步支持 2026-05-17 15:59:08 +08:00
qian dc55125f6e refactor(notify):重构站内信功能 2026-05-16 21:37:53 +08:00
qian 3405280224 后端功能首次提交 2026-05-10 12:21:27 +08:00