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 |
|
yml
|
5cd3ead4bd
|
统一金额分制重构
|
2026-06-09 19:04:11 +08:00 |
|
yml
|
87673288ef
|
chore: finalize amount migration fixes
|
2026-06-09 17:45:29 +08:00 |
|
yml
|
62b898d7cc
|
[Snow Team] backend-fixer: auto-commit work
|
2026-06-09 17:04:40 +08:00 |
|
yml
|
2185cd152a
|
Listing模块:完成分字段重构
核心改造:
1. ListingDTO改为使用PriceCent和DepositAmountCent字段
2. toDTO函数使用listing.PriceCent和listing.DepositAmountCent
3. 筛选函数matchPublicQuery转换为元进行比较
4. 排序函数sortPublicListings使用PriceCent比较
5. 价格视图函数sanitizePriceForOwner使用PriceCent
6. toAdminDTO函数使用*Cent字段
技术细节:
- 筛选时将分转为元:price := float64(item.PriceCent) / 100
- 排序直接比较分:a.PriceCent < b.PriceCent
- 价格调整时转换:item.PriceCent = int64(math.Round(sellerPrice * 100))
- 编译验证通过 ✅
|
2026-06-09 13:59:53 +08:00 |
|
yml
|
4f3be229bd
|
Dispute模块:修复wallet.Entry调用
修复内容:
- 将仲裁释放冻结金额的wallet.Entry从Amount改为AmountCent
- 将号主收入的wallet.Entry从Amount改为AmountCent
- 使用int64(math.Round(amount * 100))将元转为分
编译验证通过 ✅
|
2026-06-09 13:54:54 +08:00 |
|
yml
|
d803089890
|
Order模块:完成分字段重构
核心改造:
1. DTO层全部改为*Cent int64字段(OrderDTO/CheckoutDTO/RefundStatusDTO)
2. 内部结构体orderPricing和checkoutSettlement改为分字段
3. calculateCheckoutSettlement函数改为返回分单位
4. 所有wallet.AppendEntries调用改为AmountCent
5. toAdminDTO/toCheckoutAdminDTO转换函数使用*Cent字段
6. applyOrderPriceView/applyCheckoutPriceView使用分字段
7. buildOrderPricing返回分单位
8. 订单取消/关闭/退款使用分字段计算
技术细节:
- 删除了3处float64金额相加后转分的逻辑
- calculateCheckoutSettlement内部仍用元计算保持兼容性,最后转为分
- 新增effectiveDepositOriginalAmountCent辅助函数
- buildRefundStatusDTO使用TotalAmountCent
- 编译验证通过 ✅
|
2026-06-09 13:54:04 +08:00 |
|
 ymlandClaude Opus 4.8
|
01909ee7e5
|
Wallet与Withdrawal模块:完成分字段重构
核心改造:
1. Wallet模块DTO层全部改为*Cent int64字段
2. Wallet.Entry结构从Amount float64改为AmountCent int64
3. Repository层applyEntry函数使用整数加减,无需浮点运算
4. Withdrawal模块DTO/Request全部改为*Cent字段
5. 所有wallet.AppendEntries调用点改为AmountCent
6. 提现手续费计算改为分单位
技术细节:
- 删除了roundWalletMoney函数(不再需要)
- toAccountDTO/toLedgerDTO使用*Cent字段
- 最小提现金额:10元=1000分
- 最大提现金额:5000元=500000分
- 编译验证通过 ✅
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 13:44:20 +08:00 |
|
 ymlandClaude Opus 4.8
|
e2780ffb86
|
Money工具包:实现分↔角转换和格式化函数
核心函数:
- ToCent(jiao) -> cent:将角转换为分(存储)
- ToJiao(cent) -> jiao:将分转换为角(展示)
- Format(cent) -> string:格式化分为角字符串
- FormatWithSymbol(cent) -> string:格式化为带¥符号的字符串
兼容性:
- 保留 Min/Max(float64) 用于兼容旧代码
- 新增 MinCent/MaxCent(int64) 用于分计算
测试覆盖:
- 双向转换精度测试
- 边界值测试
- 格式化输出测试
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 13:34:09 +08:00 |
|
 ymlandClaude Opus 4.8
|
b80719d538
|
Model层:新增金额分字段定义
- 所有 Model 添加对应的 *Cent int64 字段
- 旧的 float64 字段保留但不输出到 JSON (json:"-")
- 涉及文件:user.go, listing.go, order.go, order_checkout.go, wallet.go, withdrawal.go
- 目标:为后续业务逻辑切换到分存储做准备
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 13:31:29 +08:00 |
|
 ymlandClaude Opus 4.8
|
eaa10d839c
|
数据库迁移:新增金额分字段并迁移历史数据
- 为所有金额字段新增对应的 _cent 字段(BIGINT)
- 涉及表:users, rental_listings, rental_orders, order_checkouts, wallet_accounts, wallet_ledger, withdrawal_requests
- 自动迁移历史数据:DECIMAL(12,2) * 100 -> BIGINT
- 使用 goose 格式,支持 Up/Down 迁移
- 目标:全链路使用整数分存储,避免浮点精度问题
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-09 13:28:51 +08:00 |
|
yml
|
2dfa2611fd
|
新增财务仪表盘并统一金额到角
|
2026-06-09 00:13:03 +08:00 |
|
yml
|
a2a0489158
|
优化订单支付
|
2026-06-08 23:56:25 +08:00 |
|
yml
|
0b419f5084
|
修复仲裁退款并新增免押额度
|
2026-06-08 21:00:39 +08:00 |
|
yml
|
830cfcf33d
|
合并商品编号迁移
|
2026-06-08 20:12:18 +08:00 |
|
yml
|
494b2c068a
|
贯通商品编号全流程
|
2026-06-08 20:00:07 +08:00 |
|
yml
|
38d7469965
|
新增商品编号搜索
|
2026-06-08 19:44:07 +08:00 |
|
yml2213
|
9d6b1d945c
|
修正默认客服分配逻辑
|
2026-06-08 06:35:56 +08:00 |
|
yml2213
|
ebf9b95f5a
|
修复用户发布下架后审核还有的bug
|
2026-06-07 22:07:54 +08:00 |
|
yml2213
|
a8b3d3813b
|
优化发布截图上传与押金提示
|
2026-06-07 21:40:36 +08:00 |
|
yml2213
|
eebd2d3b04
|
增加发布协议确认配置
|
2026-06-07 21:14:49 +08:00 |
|
yml2213
|
954c3d6be3
|
修复拉卡拉支付时间偏差
|
2026-06-07 20:42:57 +08:00 |
|
yml2213
|
44747e7bae
|
新增支付配置备份导入
|
2026-06-07 20:17:58 +08:00 |
|
yml2213
|
a5e55bc045
|
测试修复15分钟bug
|
2026-06-07 20:05:56 +08:00 |
|
yml2213
|
9740ff8799
|
新增支付配置备份导出功能
|
2026-06-07 14:11:16 +08:00 |
|
yml
|
8ae76036a8
|
优化支付配置启用规则
|
2026-06-06 23:43:57 +08:00 |
|
yml
|
bb624acae7
|
拉卡拉增加不限制支付方式
|
2026-06-06 23:21:59 +08:00 |
|
yml
|
ba4c56c0cc
|
支持拉卡拉多渠道支付和测试充值
|
2026-06-06 21:46:41 +08:00 |
|
yml
|
4d40883da6
|
支持后台支付配置管理
|
2026-06-06 17:49:22 +08:00 |
|
yml
|
13543b3dcb
|
修复资金流水和数据库初始化
|
2026-06-06 14:40:03 +08:00 |
|
 ymlandClaude Opus 4.8
|
3640111b8b
|
合并数据库迁移文件,解决 --reset-db 数据不一致问题
- 将 000002_add_withdrawal_tables.sql 和 000003_add_encrypted_realname_fields.sql 合并到 000001_init.sql
- 在 user_realname 表创建时就包含 encrypted_name 和 encrypted_id_no 字段
- 在初始化脚本中直接创建提现相关表和权限
- 更新 dev.sh 和 deploy-prod.sh 的旧迁移清理逻辑
- 现在 --reset-db 可以一次性创建完整的数据库结构,避免字段缺失问题
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-06 13:26:34 +08:00 |
|
yml
|
5c830fe1f4
|
增加提现相关的与打款相关逻辑
|
2026-06-06 13:16:44 +08:00 |
|
yml
|
8a2d2f2a18
|
后端提现增加
|
2026-06-06 10:08:39 +08:00 |
|
 ymlandClaude Opus 4.8
|
082fd908e9
|
完成压力测试工具优化和文档整理
主要改进:
- 优化压测工具:支持真实认证、智能商品ID预加载、详细统计指标
- 修复Token生成问题:支持固定验证码和自动重试机制
- 修复商品404问题:启动时预加载可用商品ID列表
- 新增测试场景:realistic(真实业务)、admin(管理后台)、listing_only(商品查询)
- 新增梯度压测:逐步加压找到系统性能极限
- 优化数据生成脚本:批量INSERT提升50-100倍性能
- 整理文档:删除5个过时文档,保留2个最新文档
- 新增快速上手指南:docs/压力测试使用指南.md
性能基线(10并发):
- QPS: 2,600+
- P50/P95/P99延迟: 3ms/7ms/10ms
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-06 01:10:07 +08:00 |
|
 ymlandClaude Opus 4.8
|
ec9baada67
|
统一管理后台分页样式
- 新建 AdminTablePagination 组件,统一分页 UI
- 改造 6 个前端页面使用统一分页组件:
- 管理员管理
- 用户管理
- 申诉管理
- 审计日志
- 公告管理
- 钱包流水
- 订单管理前后端完整改造:
- 后端:添加 PaginatedResult 结构,支持 page/page_size 参数
- 前端:API 支持分页参数,页面使用统一分页组件
- 所有列表页分页样式统一为商品管理的 .table-pagination 设计
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-06 00:13:59 +08:00 |
|
yml
|
cb79395226
|
优化出数据库
|
2026-06-05 21:38:01 +08:00 |
|