yml
|
3ff8c1de88
|
支持微信支付宝独立支付渠道
|
2026-06-14 23:38:03 +08:00 |
|
yml
|
8fef037be3
|
AES 字段加密迁配置并兼容旧密文
移除字段加密硬编码主密钥,改为 FIELD_ENCRYPTION_KEY 注入。
保留 FIELD_ENCRYPTION_LEGACY_KEY 透明回退旧密文,新写入统一使用主密钥;生产环境校验主密钥和 legacy 密钥长度、占位符及相等关系,并统一生产环境判断口径。
补充配置与旧密文兼容回归测试。
|
2026-06-14 17:53:24 +08:00 |
|
yml
|
ae4297fec7
|
仲裁退款失败补偿: refundretry 自动补建仲裁孤儿退款单
问题: dispute/arbitration.go 事务提交后 startRefundBestEffort 失败只 log.Printf 吞错, 号主收入已入账但租客退款单未建, 订单卡在 refund_status=pending 的孤儿状态。原 refundretry 的 warnMissingRefundOrders 只告警不补建, 导致资金口径不平需人工兜底。
修复: 升级 warnMissingRefundOrders, 对 settlement_status="arbitrated" 的孤儿订单自动调 StartRefund 补建 (biz_type 固定 arbitration_refund, 金额用 order.RefundAmountCent)。
幂等保证: 复用 StartRefund 内部 prepareRefundOrder 的 (order_id, biz_type) 查重作为天然幂等闸, 重复触发走 existing 分支只同步状态不重复建单。渠道失败 → markRefundFailed 留记录 + 订单 refund_status=failed → 下一轮不再视为孤儿。
范围限定: 仅仲裁孤儿自动补建 (biz_type 无歧义)。非仲裁孤儿 (取消/客服关闭/结账) biz_type 无法从订单状态可靠区分, 维持只告警。
新增测试:
- TestAutoRebuildArbitrationOrphan: 仲裁孤儿补建成功
- TestNoRebuildForNonArbitrationOrphan: 非仲裁孤儿不补建
- TestRebuildArbitrationOrphanIdempotent: 连续扫描幂等
防御: payments==nil 时跳过补建并告警, 避免单测/未来构造 Job 时 panic。
go build / vet / test 通过。
|
2026-06-14 16:17:19 +08:00 |
|
yml
|
6ff7692f3e
|
支付确认强一致化: 订单推进与标 paid 合并为单事务
confirmPaid 原为「先 ConfirmPaidFromChannel 独立事务推进订单, 再 Updates 标 paid」两步非原子, 崩溃在中间会出现订单已 pending_handoff 但 payment 仍 paying 的不一致窗口, 恢复依赖渠道回调重发而非事务闭环。
改造:
- 新增 ConfirmPaidFromChannelTx(tx, orderID) 让 order 模块共享 payment 模块的外部事务, 订单推进与 payment 标 paid 落进同一事务, 崩溃一致性窗口消除
- NotifyNewConversation 提到事务提交后触发, 避免事务回滚后误发会话通知
- payment_orders 加行锁后 Updates, 防并发回调覆盖写
- 删除未使用的 providerBizNo 死参数
锁顺序全局一致 (order→listing→account→payment), 与 payment_start/refund/Cancel 路径无反向加锁, 无死锁风险。
新增集成测试:
- 正向: 验证 confirmPaid 后 order/listing/account/payment 全部正确推进
- 回滚: payment 更新失败时 order 不残留 pending_handoff, 验证事务原子性
go build/vet/test 通过。
|
2026-06-14 09:42:26 +08:00 |
|
yml2213
|
c6ff7c1f3a
|
修复退款迁移格式
|
2026-06-14 07:58:31 +08:00 |
|
yml2213
|
fec8e37181
|
修复退款幂等与补偿重试
|
2026-06-14 07:55:02 +08:00 |
|
yml2213
|
607d2415a1
|
超时任务多实例优化
|
2026-06-14 03:14:43 +08:00 |
|
yml2213
|
c255c142c5
|
优化提现问题
|
2026-06-14 03:13:11 +08:00 |
|
 yml2213andClaude Opus 4.8
|
e8621728fd
|
删除钱包充值功能并消除重复入账风险
钱包充值为开发态测试功能(生产环境本就禁用),且支付回调存在重复入账风险:入账与标记 paid 两步非原子、wallet_ledger 去重无唯一索引、幂等键使用了可变的 ProviderOrderID。直接删除该功能从根本上消除风险。
后端:
- payment 移除 StartWalletRecharge/QueryWalletRecharge 及相关 handler/DTO/常量;confirmPaid 增加 OrderID 守卫;解除对 wallet 仓库的依赖
- wallet 移除 Recharge/ConfirmRechargeFromChannel 及相关定义
- 移除三条充值路由;adminfinance 财务统计口径只统计 order_pay
- 清理充值相关测试用例
前端:
- 移除充值 API、WalletView 充值面板/弹窗、admin 充值标签与筛选
- 保留钱包余额、流水、提现等核心能力
go build/vet 与 vue-tsc typecheck 均通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 02:45:46 +08:00 |
|
yml2213
|
3ef7705776
|
优化申诉仲裁流程和证据展示
|
2026-06-13 21:26:38 +08:00 |
|
yml2213
|
9d7184ecde
|
优化了消息数量,筛选和顶部部分
|
2026-06-13 19:03:29 +08:00 |
|
yml2213
|
f1ae72cc7a
|
二次编辑商品
|
2026-06-12 21:43:02 +08:00 |
|
yml2213
|
7c2f5e34c3
|
详情页面kd 展示,发布时间必填
|
2026-06-12 21:24:13 +08:00 |
|
yml2213
|
f6ea3e29a6
|
移动端和 PC 端登录页都加了“图形验证码
|
2026-06-12 21:16:08 +08:00 |
|
yml2213
|
8cfb63a3e7
|
修复短信登录限流处理
|
2026-06-12 20:30:43 +08:00 |
|
yml2213
|
4344b1d07c
|
测试修复文件上传 bug
|
2026-06-12 19:48:38 +08:00 |
|
yml2213
|
a615100730
|
修复文件上传和下单支付流程
|
2026-06-12 19:42:24 +08:00 |
|
yml2213
|
8d9d00beb6
|
合并后台安全字段初始化迁移
|
2026-06-11 08:24:04 +08:00 |
|
yml2213
|
6d61a336d6
|
支持配置后台页面入口
|
2026-06-11 08:00:13 +08:00 |
|
yml2213
|
7130135e23
|
兼容开放导入未签名请求
|
2026-06-11 07:32:11 +08:00 |
|
yml2213
|
88b1df64e7
|
加固后台管理安全
|
2026-06-11 07:23:00 +08:00 |
|
yml2213
|
5255b21141
|
修复docker 无法下载 bug
|
2026-06-11 04:49:44 +08:00 |
|
yml2213
|
c0403fc1ea
|
negiix 更换成 caddy
|
2026-06-11 04:17:36 +08:00 |
|
yml2213
|
4b9ac0598f
|
修复拉卡拉退款成功状态识别
|
2026-06-10 21:03:41 +08:00 |
|
yml2213
|
3e0a1a2d4b
|
整理初始化迁移并优化订单和用户菜单
|
2026-06-10 16:21:01 +08:00 |
|
yml2213
|
df7d6a2675
|
添加 API 限流和支付渠道熔断
|
2026-06-10 15:48:04 +08:00 |
|
yml2213
|
0fbe30b377
|
补充财务查询索引和慢 SQL 日志
|
2026-06-10 15:43:36 +08:00 |
|
yml2213
|
28c4efc669
|
解耦订单和申诉模块外部依赖
|
2026-06-10 15:41:31 +08:00 |
|
yml2213
|
ca50b103ec
|
拆分系统配置 Service 文件职责
|
2026-06-10 15:10:13 +08:00 |
|
yml2213
|
5ecb1e1469
|
拆分后台财务 Repository 文件职责
|
2026-06-10 15:08:19 +08:00 |
|
yml2213
|
b8b7221df8
|
拆分聊天 Handler 文件职责
|
2026-06-10 15:03:58 +08:00 |
|
yml2213
|
70a4d8e9ff
|
拆分订单 Handler 文件职责
|
2026-06-10 15:02:23 +08:00 |
|
yml2213
|
8221544aca
|
拆分提现 Repository 文件职责
|
2026-06-10 14:54:39 +08:00 |
|
yml2213
|
f75174b1cf
|
拆分申诉 Repository 文件职责
|
2026-06-10 14:53:02 +08:00 |
|
yml2213
|
14d9601ef2
|
拆分商品模块服务和处理器职责
|
2026-06-10 14:50:25 +08:00 |
|
yml2213
|
78cb681bec
|
拆分支付配置 Repository 文件职责
|
2026-06-10 14:31:05 +08:00 |
|
yml2213
|
60ff513463
|
拆分大型 Repository 文件职责
|
2026-06-10 14:28:16 +08:00 |
|
yml2213
|
6ae8f0e830
|
完成剩余模块 Context 超时控制改造
|
2026-06-10 12:58:59 +08:00 |
|
yml2213
|
d2858c529d
|
继续补齐核心模块 Context 超时控制
|
2026-06-10 11:50:27 +08:00 |
|
yml2213
|
334436f381
|
修复 Context 改造后的编译问题
|
2026-06-10 09:43:49 +08:00 |
|
yml2213
|
b377f8350b
|
为 9 个模块添加 Context 超时控制
完成模块:
- auth: 3 个 Repository 方法 + Service + Handler + Middleware
- wallet: 已有 context 支持,修复依赖调用
- payment: 已有 context 支持,修复 wallet 调用
- adminaudit: 1 个方法
- notification: 2 个方法
- realname: 2 个方法
- systemconfig: 4 个方法
- adminauth: 7 个方法
- adminuser: 6 个方法
所有数据库调用已改为 r.db.WithContext(ctx),完整传递 context 链路。
待完成模块: order, listing, chat 等 12 个模块(约 157 个方法)
|
2026-06-10 09:12:27 +08:00 |
|
yml
|
c517349db6
|
优化
|
2026-06-10 02:12:02 +08:00 |
|
 ymlandClaude Opus 4.8
|
992d4ed234
|
完成 Week 1-2:为 Order 和 Payment 模块补充 Repository 层测试
## 新增测试文件
### Order 模块(11 个新测试用例)
- repository_integration_test.go:订单 Repository 层集成测试
- 订单创建验证(商品状态、不能租自己的商品)
- 订单定价计算测试
- 结账结算计算测试(全额租用、扣押金、额外消耗)
- 订单状态常量验证
- 交接状态常量验证
- 结账状态常量验证
- 订单时长计算测试
### Payment 模块(18 个新测试用例)
- repository_integration_test.go:支付 Repository 层集成测试
- 支付单复用逻辑测试(相同/不同渠道)
- 支付状态转换验证
- 退款业务类型覆盖测试
- 支付金额验证测试
- 支付渠道验证测试
- Mock 模式判断测试
- 渠道来源验证测试
- 支付单字段完整性测试
- 退款金额验证测试
- 钱包充值开关测试(开发/生产/测试环境)
## 测试覆盖率提升
| 模块 | 原覆盖率 | 新覆盖率 | 提升 |
|------|---------|---------|------|
| wallet | 11.0% | **36.1%** | +25.0% ✨ |
| order | 7.7% | **10.2%** | +2.5% |
| payment | 8.9% | **8.9%** | 保持 |
## 测试统计(累计)
- **测试文件总数**: 16 个
- **测试用例总数**: ~103 个
- wallet: 34 个(Service 8 + 逻辑 14 + 集成 9 + 原有 3)
- order: 28 个(Service 11 + 集成 11 + 原有 6)
- payment: 41 个(Service 10 + 逻辑 19 + 集成 18 + 原有 6 - 重复 12)
- **所有测试通过率**: 100%
## 测试亮点
### Order 模块
- ✅ 订单创建时的商品状态验证(未发布、已下架、待审核、交易中)
- ✅ 防止租自己的商品
- ✅ 订单定价计算(租金、号主实得、平台手续费)
- ✅ 结账结算计算(全额租用、部分押金扣除、额外消耗品)
- ✅ 状态常量完整性验证
### Payment 模块
- ✅ 支付单复用逻辑(相同商户可复用、不同商户不可复用)
- ✅ 支付状态转换验证
- ✅ 退款业务类型覆盖(7 种类型)
- ✅ 支付金额验证(正数、零、负数)
- ✅ 环境相关配置测试(钱包充值在生产环境禁用)
## Week 1-2 任务完成情况
- ✅ 为 Order Repository 层补充测试
- ✅ 为 Payment Repository 层补充测试
- ✅ 所有测试通过验证
- ✅ 更新改进计划文档
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-10 01:36:52 +08:00 |
|
 ymlandClaude Opus 4.8
|
cb07fce5fd
|
为核心金融模块补充单元测试和集成测试
## 新增测试文件
### Wallet 模块(34 个测试用例)
- service_test.go:8 个 Service 层测试
- repository_logic_test.go:14 个纯逻辑测试(applyEntry 核心逻辑)
- repository_integration_test.go:9 个集成测试(数据库完整流程)
- 测试覆盖率:11.0% → 36.1%(提升 25%)
### Order 模块(11 个测试用例)
- service_test.go:11 个 Service 层测试
- 覆盖所有 Service 方法的依赖检查和参数验证
### Payment 模块(29 个测试用例)
- service_test.go:10 个 Service 层测试
- repository_logic_test.go:19 个逻辑测试(状态判断、常量验证)
- 覆盖支付单复用、退款逻辑、输入验证
## 测试基础设施
- database/test_helper.go:提供内存 SQLite 数据库创建函数
- 支持快速、隔离的测试环境
## 测试策略
- 分层测试:Service 层(参数验证)→ Repository 逻辑层(纯函数)→ Repository 集成层(数据库)
- 覆盖核心业务:余额变更、支付单复用、订单状态转换
- 边界条件:余额刚好够扣、差1分不够扣、零金额、并发场景
- 幂等性保证:渠道充值幂等、支付单复用
## 文档
- docs/代码质量改进计划.md:详细的问题分析和改进计划(16周路线图)
- docs/Repository层测试补充总结.md:测试工作总结和运行指南
## 测试结果
- 所有测试通过(74 个测试用例)
- Wallet 模块覆盖率提升至 36.1%
- 为后续测试工作建立了完整的框架和规范
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-10 01:26:06 +08:00 |
|
yml
|
3bbe356c3f
|
拆分订单详情结账逻辑
|
2026-06-09 22:07:55 +08:00 |
|
yml
|
684e30862d
|
修复前端金额展示并整理依赖
|
2026-06-09 20:32:17 +08:00 |
|
yml
|
4c2199df58
|
统一订单资产状态变更
|
2026-06-09 20:11:28 +08:00 |
|
yml
|
0990652f8b
|
集中订单状态常量
|
2026-06-09 20:01:37 +08:00 |
|
yml
|
609b49f92b
|
拆分订单仓储模块
|
2026-06-09 19:56:32 +08:00 |
|
yml
|
ca6ad1e65c
|
补充租号链路测试并修复仲裁归档
|
2026-06-09 19:48:08 +08:00 |
|