|
|
8ab5ebc3af
|
feat: 在 IoT 卡和设备列表响应中添加套餐系列名称字段
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m2s
主要变更:
- 在 StandaloneIotCardResponse 和 DeviceResponse 中添加 series_name 字段
- 在 iot_card 和 device service 中添加 loadSeriesNames 方法批量加载系列名称
- 更新相关方法以支持 series_name 的填充
其他变更:
- 新增 OpenSpec 测试生成和共识锁定 skill
- 新增 MCP 配置文件
- 更新 CLAUDE.md 项目规范文档
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-04 15:28:41 +08:00 |
|
|
|
dc84cef2ce
|
fix(package-series): 将 enable_one_time_commission 字段提升到创建/更新请求顶层
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m5s
- DTO: CreatePackageSeriesRequest 和 UpdatePackageSeriesRequest 添加 EnableOneTimeCommission 字段
- Service: Create/Update 方法处理顶层字段并同步到 JSON config 的 Enable 字段
- 确保顶层字段与 JSON config 内的 enable 保持一致,避免业务逻辑判断出错
|
2026-02-04 14:38:10 +08:00 |
|
|
|
b18ecfeb55
|
refactor: 一次性佣金配置从套餐级别提升到系列级别
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m29s
主要变更:
- 新增 tb_shop_series_allocation 表,存储系列级别的一次性佣金配置
- ShopPackageAllocation 移除 one_time_commission_amount 字段
- PackageSeries 新增 enable_one_time_commission 字段控制是否启用一次性佣金
- 新增 /api/admin/shop-series-allocations CRUD 接口
- 佣金计算逻辑改为从 ShopSeriesAllocation 获取一次性佣金金额
- 删除废弃的 ShopSeriesOneTimeCommissionTier 模型
- OpenAPI Tag '系列分配' 和 '单套餐分配' 合并为 '套餐分配'
迁移脚本:
- 000042: 重构佣金套餐模型
- 000043: 简化佣金分配
- 000044: 一次性佣金分配重构
- 000045: PackageSeries 添加 enable_one_time_commission 字段
测试:
- 新增验收测试 (shop_series_allocation, commission_calculation)
- 新增流程测试 (one_time_commission_chain)
- 删除过时的单元测试(已被验收测试覆盖)
|
2026-02-04 14:28:44 +08:00 |
|
|
|
fba8e9e76b
|
refactor(account): 移除卡类型字段、优化账号列表查询和权限检查
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m18s
- 移除 IoT 卡和号卡的 card_type 字段(数据库迁移)
- 优化账号列表查询,支持按店铺和企业筛选
- 账号响应增加店铺名称和企业名称字段
- 实现批量加载店铺和企业名称,避免 N+1 查询
- 更新权限检查中间件,完善权限验证逻辑
- 更新相关测试用例,确保功能正确性
|
2026-02-03 10:59:44 +08:00 |
|
|
|
5a90caa619
|
feat(shop-role): 实现店铺角色继承功能和权限检查优化
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m39s
- 新增店铺角色管理 API 和数据模型
- 实现角色继承和权限检查逻辑
- 添加流程测试框架和集成测试
- 更新权限服务和账号管理逻辑
- 添加数据库迁移脚本
- 归档 OpenSpec 变更文档
Ultraworked with Sisyphus
|
2026-02-03 10:06:13 +08:00 |
|
|
|
bc7e5d6f6d
|
修复go的验证库把int的0当作无值的情况
|
2026-02-03 09:57:53 +08:00 |
|
|
|
543c454f16
|
feat(routes): 注册 7 个设备 Gateway 路由
|
2026-02-02 17:33:39 +08:00 |
|
|
|
80f560df33
|
refactor(account): 统一账号管理API、完善权限检查和操作审计
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m17s
- 合并 customer_account 和 shop_account 路由到统一的 account 接口
- 新增统一认证接口 (auth handler)
- 实现越权防护中间件和权限检查工具函数
- 新增操作审计日志模型和服务
- 更新数据库迁移 (版本 39: account_operation_log 表)
- 补充集成测试覆盖权限检查和审计日志场景
|
2026-02-02 17:23:20 +08:00 |
|
|
|
5851cc6403
|
feat(permission): 为权限树接口添加状态查询参数和返回值
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m22s
- 新增 PermissionTreeRequest DTO 支持 status 查询参数
- PermissionTreeNode 返回值新增 status 字段
- Store 层 GetAll 方法支持状态过滤
- Handler 层使用 QueryParser 解析请求参数
|
2026-02-02 17:12:14 +08:00 |
|
|
|
37f43d2e2d
|
重构: 将卡/设备的套餐系列绑定从分配ID改为系列ID
- 数据库: 重命名 series_allocation_id → series_id
- Model: IotCard 和 Device 字段重命名
- DTO: 所有请求/响应字段统一为 series_id
- Store: 方法重命名,新增 GetByShopAndSeries 查询
- Service: 业务逻辑优化,系列验证和权限验证分离
- 测试: 更新所有测试用例,新增 shop_series_allocation_store_test.go
- 文档: 更新 API 文档说明参数变更
BREAKING CHANGE: API 参数从 series_allocation_id 改为 series_id
|
2026-02-02 12:09:53 +08:00 |
|
|
|
d81bd242a4
|
fix(force-recharge): 补充强充配置缺失的接口和数据库字段
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m19s
- 订单管理:增加 payment_method 字段支持,合并代购订单逻辑
- 套餐系列分配:增加强充配置字段(enable_force_recharge、force_recharge_amount、force_recharge_trigger_type)
- 数据库迁移:添加 force_recharge_trigger_type 字段
- 测试:更新订单服务测试用例
- OpenSpec:归档 fix-force-recharge-missing-interfaces 变更
|
2026-01-31 15:34:32 +08:00 |
|
|
|
760b3db1df
|
feat(h5): 新增充值订单处理器和 DTO
- 实现 RechargeHandler 处理充值订单创建、预检、查询等接口
- 添加充值相关 DTO(CreateRechargeRequest、RechargeCheckRequest 等)
- 支持充值预检(强充检查、金额限制等)
- 支持充值订单列表和详情查询
|
2026-01-31 12:14:59 +08:00 |
|
|
|
113b3edd69
|
feat(order): 支持代购订单和强充要求检查
- OrderService 新增代购订单支持
- 强充要求检查(首次购买最低充值)
- 代购订单支付限制(无需支付)
- 强充金额验证
- 新增 OrderDTO 请求/响应结构
- PurchaseCheckRequest/Response(购买预检)
- CreatePurchaseOnBehalfRequest(代购订单创建)
- Order 模型新增支付方式
- PaymentMethodOffline(线下支付,仅平台代购使用)
- OrderService 依赖注入扩展
- 新增 SeriesAllocationStore、IotCardStore、DeviceStore
- 支持强充要求检查逻辑
- 完整的集成测试覆盖(534 行)
- 代购订单创建、强充验证、支付限制等场景
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-01-31 12:01:33 +08:00 |
|
|
|
22f19377a5
|
feat(recharge): 新增充值服务和 DTO
- 实现 RechargeService 完整充值业务逻辑
- 创建充值订单、预检强充要求
- 支付回调处理、幂等性检查
- 累计充值更新、一次性佣金触发
- 新增 RechargeDTO 请求/响应结构
- CreateRechargeRequest、RechargeResponse
- RechargeListRequest/Response、RechargeCheckRequest/Response
- 完整的单元测试覆盖(1488 行)
- 强充要求检查、支付回调、佣金发放等场景
- 事务处理、幂等性验证
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-01-31 12:01:26 +08:00 |
|
|
|
116355835a
|
feat(model): 添加代购和强充配置字段
|
2026-01-31 11:31:57 +08:00 |
|
|
|
65b4127b84
|
Merge branch 'emdash/wechat-official-account-payment-integration-30g'
# Conflicts:
# README.md
# cmd/api/main.go
# internal/bootstrap/dependencies.go
# pkg/config/config.go
# pkg/config/defaults/config.yaml
|
2026-01-30 17:32:33 +08:00 |
|
|
|
bf591095a2
|
微信相关能力
|
2026-01-30 17:25:30 +08:00 |
|
|
|
ffeb0417c0
|
登录权限返回修改
|
2026-01-30 17:22:38 +08:00 |
|
|
|
1cf17e8f14
|
清理冗余的梯度返佣(TierCommission)配置
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m46s
- 移除 Model 层:删除 ShopSeriesCommissionTier 模型及相关字段
- 更新 DTO:删除 TierCommissionConfig、TierEntry 类型及相关请求/响应字段
- 删除 Store 层:移除 ShopSeriesCommissionTierStore 及相关查询逻辑
- 简化 Service 层:删除梯度返佣处理逻辑,统计查询移除 tier_bonus 字段
- 数据库迁移:创建 000034_remove_tier_commission 移除相关表和字段
- 更新测试:移除梯度返佣相关测试用例,更新集成测试
- OpenAPI 文档:删除梯度返佣相关 schema 和枚举值
- 归档变更:归档 remove-tier-commission-redundancy 到 archive/2026-01-30-
- 同步规范:更新 4 个主 specs,标记废弃功能并添加迁移指引
原因:梯度返佣功能与一次性梯度佣金功能重复,且从未实现实际计算逻辑
迁移:使用一次性佣金的梯度模式 (OneTimeCommissionConfig.type = "tiered") 替代
|
2026-01-30 14:57:24 +08:00 |
|
|
|
b02175271a
|
feat: 实现企业设备授权功能并归档 OpenSpec 变更
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m39s
- 新增企业设备授权模块(Model、DTO、Service、Handler、Store)
- 实现设备授权的创建、查询、更新、删除等完整业务逻辑
- 添加企业卡授权与设备授权的关联关系
- 新增 2 个数据库迁移脚本
- 同步 OpenSpec delta specs 到 main specs
- 归档 add-enterprise-device-authorization 变更
- 更新 API 文档和路由配置
- 新增完整的集成测试和单元测试覆盖
|
2026-01-29 13:18:49 +08:00 |
|
|
|
e87513541b
|
feat: 实现一次性佣金功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s
- 新增佣金计算服务,支持一次性佣金和返佣计算
- 新增 ShopSeriesOneTimeCommissionTier 模型和存储层
- 新增两个数据库迁移:一次性佣金表和订单佣金字段
- 更新 Commission 模型,新增佣金来源和关联字段
- 更新 CommissionRecord 存储层,支持一次性佣金查询
- 更新 MyCommission 服务,集成一次性佣金计算逻辑
- 更新 ShopCommission 服务,支持一次性佣金统计
- 新增佣金计算异步任务处理器
- 更新 API 路由,新增一次性佣金相关端点
- 归档 OpenSpec 变更文档,同步规范到主规范库
|
2026-01-29 09:36:12 +08:00 |
|
|
|
dfcf16f548
|
feat: 实现订单支付功能模块
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m36s
- 新增订单管理、支付回调、购买验证等核心服务
- 实现订单、订单项目的数据存储层和 API 接口
- 添加订单数据库迁移和 DTO 定义
- 更新 API 文档和路由配置
- 同步 3 个新规范到主规范库(订单管理、订单支付、套餐购买验证)
- 完成 OpenSpec 变更归档
Ultraworked with Sisyphus
|
2026-01-28 22:12:15 +08:00 |
|
|
|
a945a4f554
|
feat: 实现卡和设备的套餐系列绑定功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m37s
- 添加 Device 和 IotCard 模型的 SeriesID 字段
- 实现 DeviceService 和 IotCardService 的套餐系列绑定逻辑
- 添加 DeviceStore 和 IotCardStore 的数据库操作方法
- 更新 API 接口和路由支持套餐系列绑定
- 创建数据库迁移脚本(000027_add_series_binding_fields)
- 添加完整的单元测试和集成测试
- 更新 OpenAPI 文档
- 归档 OpenSpec 变更文档
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-01-28 19:49:45 +08:00 |
|
|
|
1da680a790
|
重构: 店铺套餐分配系统从加价模式改为返佣模式
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m18s
主要变更:
- 重构分配模型:从加价模式(pricing_mode/pricing_value)改为返佣模式(base_commission + tier_commission)
- 删除独立的 my_package 接口,统一到 /api/admin/packages(通过数据权限自动过滤)
- 新增批量分配和批量调价功能,支持事务和性能优化
- 新增配置版本管理,订单创建时锁定返佣配置
- 新增成本价历史记录,支持审计和纠纷处理
- 新增统计缓存系统(Redis + 异步任务),优化梯度返佣计算性能
- 删除冗余的梯度佣金独立 CRUD 接口(合并到分配配置中)
- 归档 3 个已完成的 OpenSpec changes 并同步 8 个新 capabilities 到 main specs
技术细节:
- 数据库迁移:000026_refactor_shop_package_allocation
- 新增 Store:AllocationConfigStore, PriceHistoryStore, CommissionStatsStore
- 新增 Service:BatchAllocationService, BatchPricingService, CommissionStatsService
- 新增异步任务:统计更新、定时同步、周期归档
- 测试覆盖:批量操作集成测试、梯度佣金 CRUD 清理验证
影响:
- API 变更:删除 4 个梯度 CRUD 接口(POST/GET/PUT/DELETE /:id/tiers)
- API 新增:批量分配、批量调价接口
- 数据模型:重构 shop_series_allocation 表结构
- 性能优化:批量操作使用 CreateInBatches,统计使用 Redis 缓存
相关文档:
- openspec/changes/archive/2026-01-28-refactor-shop-package-allocation/
- openspec/specs/agent-available-packages/
- openspec/specs/allocation-config-versioning/
- 等 8 个新 capability specs
|
2026-01-28 17:11:55 +08:00 |
|
|
|
23eb0307bb
|
feat: 实现门店套餐分配功能并统一测试基础设施
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m30s
新增功能:
- 门店套餐分配管理(shop_package_allocation):支持门店套餐库存管理
- 门店套餐系列分配管理(shop_series_allocation):支持套餐系列分配和佣金层级设置
- 我的套餐查询(my_package):支持门店查询自己的套餐分配情况
测试改进:
- 统一集成测试基础设施,新增 testutils.NewIntegrationTestEnv
- 重构所有集成测试使用新的测试环境设置
- 移除旧的测试辅助函数和冗余测试文件
- 新增 test_helpers_test.go 统一任务测试辅助
技术细节:
- 新增数据库迁移 000025_create_shop_allocation_tables
- 新增 3 个 Handler、Service、Store 和对应的单元测试
- 更新 OpenAPI 文档和文档生成器
- 测试覆盖率:Service 层 > 90%
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-28 10:45:16 +08:00 |
|
|
|
79c061b6fa
|
feat: 实现套餐管理模块,包含套餐系列、双状态管理、废弃模型清理
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m24s
- 新增套餐系列管理 (CRUD + 状态切换)
- 新增套餐管理 (CRUD + 启用/禁用 + 上架/下架双状态)
- 清理 8 个废弃分佣模型及对应数据库表
- Package 模型新增建议成本价、建议售价、上架状态字段
- 完整的 Store/Service/Handler 三层实现
- 包含单元测试和集成测试
- 归档 add-package-module change
- 新增多个 OpenSpec changes (订单支付、店铺套餐分配、一次性分佣、卡设备系列绑定)
|
2026-01-27 19:55:47 +08:00 |
|
|
|
d104d297ca
|
feat: 实现运营商模块重构,添加冗余字段优化查询性能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m16s
主要变更:
- 新增 Carrier CRUD API(创建、列表、详情、更新、删除、状态更新)
- IotCard/IotCardImportTask 添加 carrier_type/carrier_name 冗余字段
- 移除 Carrier 表的 channel_name/channel_code 字段
- 查询时直接使用冗余字段,避免 JOIN Carrier 表
- 添加数据库迁移脚本(000021-000023)
- 添加单元测试和集成测试
- 同步更新 OpenAPI 文档和 specs
|
2026-01-27 12:18:19 +08:00 |
|
|
|
477a9fc98d
|
feat: 添加设备IMEI和单卡ICCID查询接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 新增 GET /api/admin/devices/by-imei/:imei 接口,支持通过设备号查询设备详情
- 新增 GET /api/admin/iot-cards/by-iccid/:iccid 接口,支持通过ICCID查询单卡详情
- 添加对应的 Service 层方法和 Handler
- 更新 OpenAPI 文档
- 添加集成测试并修复测试环境配置(使用环境变量)
- 归档已完成的 OpenSpec 变更记录
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-27 09:59:54 +08:00 |
|
|
|
ce0783f96e
|
feat: 实现设备管理和设备导入功能,修复测试问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m30s
主要变更:
- 实现设备管理模块(创建、查询、列表、更新状态、删除)
- 实现设备批量导入功能(CSV 解析、ICCID 绑定、异步任务处理)
- 添加设备-SIM 卡绑定约束(部分唯一索引防止并发问题)
- 修复 fee_rate 数据库字段类型(numeric -> bigint)
- 修复测试数据隔离问题(基于增量断言)
- 修复集成测试中间件顺序问题
- 清理无用测试文件(PersonalCustomer、Email 相关)
- 归档 enterprise-card-authorization 变更
|
2026-01-26 18:05:12 +08:00 |
|
|
|
fdcff33058
|
feat: 实现企业卡授权和授权记录管理功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m9s
主要功能:
- 添加企业卡授权/回收接口 (POST /enterprises/:id/allocate-cards, recall-cards)
- 添加授权记录管理接口 (GET/PUT /authorizations)
- 实现代理用户数据权限过滤(只能查看自己店铺下企业的授权记录)
- 添加 GORM callback 支持授权记录表的数据权限过滤
技术改进:
- 原生 SQL 查询手动添加数据权限过滤(ListWithJoin, GetByIDWithJoin)
- 移除卡授权预检接口(allocate-cards/preview),保留内部方法
- 完善单元测试和集成测试覆盖
|
2026-01-26 15:07:03 +08:00 |
|
|
|
45aa7deb87
|
feat: 添加环境变量管理工具和部署配置改版
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
主要改动:
- 新增交互式环境配置脚本 (scripts/setup-env.sh)
- 新增本地启动快捷脚本 (scripts/run-local.sh)
- 新增环境变量模板文件 (.env.example)
- 部署模式改版:使用嵌入式配置 + 环境变量覆盖
- 添加对象存储功能支持
- 改进 IoT 卡片导入任务
- 优化 OpenAPI 文档生成
- 删除旧的配置文件,改用嵌入式默认配置
|
2026-01-26 10:28:29 +08:00 |
|
|
|
194078674a
|
feat: 实现单卡资产分配与回收功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m45s
- 新增单卡分配/回收 API(支持 ICCID 列表、号段范围、筛选条件三种选卡方式)
- 新增资产分配记录查询 API(支持多条件筛选和分页)
- 新增 AssetAllocationRecord 模型、Store、Service、Handler 完整实现
- 扩展 IotCardStore 新增批量更新、号段查询、筛选查询等方法
- 修复 GORM Callback 处理 slice 类型(BatchCreate)的问题
- 新增完整的单元测试和集成测试
- 同步 OpenSpec 规范并归档 change
|
2026-01-24 15:46:15 +08:00 |
|
|
|
a924e63e68
|
feat: 实现物联网卡独立管理和批量导入功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m42s
新增物联网卡独立管理模块,支持单卡查询、批量导入和状态管理。主要变更包括:
功能特性:
- 新增物联网卡 CRUD 接口(查询、分页列表、删除)
- 支持 CSV/Excel 批量导入物联网卡
- 实现异步导入任务处理和进度跟踪
- 新增 ICCID 号码格式校验器(支持 Luhn 算法)
- 新增 CSV 文件解析工具(支持编码检测和错误处理)
数据库变更:
- 移除 iot_card 和 device 表的 owner_id/owner_type 字段
- 新增 iot_card_import_task 导入任务表
- 为导入任务添加运营商类型字段
测试覆盖:
- 新增 IoT 卡 Store 层单元测试
- 新增 IoT 卡导入任务单元测试
- 新增 IoT 卡集成测试(包含导入流程测试)
- 新增 CSV 工具和 ICCID 校验器测试
文档更新:
- 更新 OpenAPI 文档(新增 7 个 IoT 卡接口)
- 归档 OpenSpec 变更提案
- 更新 API 文档规范和生成器指南
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-24 11:03:43 +08:00 |
|
|
|
46e4e5f4f1
|
refactor: 将 DTO 文件从 internal/model 移动到 internal/model/dto 目录
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m22s
- 移动 17 个 DTO 文件到 internal/model/dto/ 目录
- 更新所有 DTO 文件的 package 声明从 model 改为 dto
- 更新所有引用文件的 import 和类型引用
- Handler 层:admin 和 h5 所有处理器
- Service 层:所有业务服务
- Routes 层:所有路由定义
- Tests 层:单元测试和集成测试
- 清理未使用的 import 语句
- 验证:项目构建成功,测试编译通过,LSP 无错误
|
2026-01-22 10:15:04 +08:00 |
|
|
|
23be0a7d3e
|
fix: 修复 OpenAPI 路径参数 path 标签缺失导致启动 panic 的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m17s
- 为 enterprise_card_authorization_dto.go 中的 DTO 添加 path 标签
- 为 customer_account_dto.go 中的 DTO 添加 path 标签并重构结构
- 为 enterprise_dto.go 中的 DTO 添加 path 标签并重构结构
- 更新 handler 和 service 层使用正确的请求体类型
|
2026-01-21 18:42:29 +08:00 |
|
|
|
91c9bbfeb8
|
feat: 实现账号与佣金管理模块
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m35s
新增功能:
- 店铺佣金查询:店铺佣金统计、店铺佣金记录列表、店铺提现记录
- 佣金提现审批:提现申请列表、审批通过、审批拒绝
- 提现配置管理:配置列表、新增配置、获取当前生效配置
- 企业管理:企业列表、创建、更新、删除、获取详情
- 企业卡授权:授权列表、批量授权、批量取消授权、统计
- 客户账号管理:账号列表、创建、更新状态、重置密码
- 我的佣金:佣金统计、佣金记录、提现申请、提现记录
数据库变更:
- 扩展 tb_commission_withdrawal_request 新增提现单号等字段
- 扩展 tb_account 新增 is_primary 字段
- 扩展 tb_commission_record 新增 shop_id、balance_after
- 扩展 tb_commission_withdrawal_setting 新增每日提现次数限制
- 扩展 tb_iot_card、tb_device 新增 shop_id 冗余字段
- 新建 tb_enterprise_card_authorization 企业卡授权表
- 新建 tb_asset_allocation_record 资产分配记录表
- 数据迁移:owner_type 枚举值 agent 统一为 shop
测试:
- 新增 7 个单元测试文件覆盖各服务
- 修复集成测试 Redis 依赖问题
|
2026-01-21 18:20:44 +08:00 |
|
|
|
573ef28237
|
完善 API 文档生成规范:统一路由注册和 OpenAPI 文档自动生成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m32s
主要改进:
1. 新增 docs/api-documentation-guide.md 详细文档指南
2. 在 AGENTS.md 中添加路由注册规范章节
3. 更新 README.md 文档目录结构
路由注册改进:
- 统一使用 Register() 函数注册路由并自动生成文档
- 所有接口必须指定 RouteSpec(Summary, Tags, Input, Output, Auth)
- 修复 docs.go 和 gendocs/main.go 使用 RegisterRoutesWithDoc 统一注册
DTO 规范更新:
- shop_dto.go 和 shop_account_dto.go 补充完整的 description 标签
- 所有枚举字段必须列出可能值和中文说明
文档生成优化:
- admin-openapi.yaml 自动生成更新
- 健康检查和任务管理接口加入文档
- H5 认证接口完整文档化
规范文档管理:
- 添加规范文档管理流程说明
- 详细文档放在 docs/ 目录
- AGENTS.md 只保留核心规则和引导链接
|
2026-01-21 10:20:52 +08:00 |
|
|
|
4abbf558e4
|
完善 DTO 规范:统一 description 标签并添加 AI 助手自动检查指引
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m28s
- 修复所有 DTO 文件的 description 标签(10 个文件)
- 枚举字段统一使用中文说明(用户类型、角色类型、权限类型等)
- 状态字段明确说明 0/1 含义
- validate 标签与 OpenAPI 标签保持一致
- 在 AGENTS.md 和 CLAUDE.md 添加 DTO 规范章节
- AI 助手必须执行的 7 项检查清单
- 常见枚举字段标准值参考
- 确保未来 AI 助手自动遵循规范
- 创建规范文档
- docs/code-review-checklist.md(Code Review 检查清单)
- docs/dto-improvement-summary.md(DTO 改进总结)
- docs/ai-dto-guidelines-update.md(AI 指引更新说明)
- 重新生成 OpenAPI 文档(375 个 description 标签)
影响:所有 API 字段现在都有清晰的中文说明,前端开发更友好
|
2026-01-20 15:10:11 +08:00 |
|
|
|
18f35f3ef4
|
feat: 完成B端认证系统和商户管理模块测试补全
主要变更:
- 新增B端认证系统(后台+H5):登录、登出、Token刷新、密码修改
- 完善商户管理和商户账号管理功能
- 补全单元测试(ShopService: 72.5%, ShopAccountService: 79.8%)
- 新增集成测试(商户管理+商户账号管理)
- 归档OpenSpec提案(add-shop-account-management, implement-b-end-auth-system)
- 完善文档(使用指南、API文档、认证架构说明)
测试统计:
- 13个测试套件,37个测试用例,100%通过率
- 平均覆盖率76.2%,达标
OpenSpec验证:通过(strict模式)
|
2026-01-15 18:15:17 +08:00 |
|
|
|
2857175266
|
refactor(account): 优化账号管理模块结构
|
2026-01-14 17:10:07 +08:00 |
|
|
|
b1195c16df
|
feat(account): 实现平台账号管理功能
- 新增平台账号列表查询接口(自动筛选超级管理员和平台用户)
- 新增密码修改和状态切换专用接口
- 增强角色分配功能,支持空数组清空所有角色
- 新增超级管理员保护机制,禁止分配角色
- 新增完整的集成测试和OpenSpec规范文档
|
2026-01-14 17:00:30 +08:00 |
|
|
|
5556b1028c
|
feat(role): 新增平台角色管理功能增强
- 权限表增加 available_for_role_types 字段,支持标记权限可用角色类型
- 权限列表和权限树接口支持按 available_for_role_type 过滤
- 新增角色状态切换接口 PUT /api/admin/roles/:id/status
- 角色分配权限时验证权限的可用角色类型
- 完善数据库迁移脚本和单元测试
- 补充数据库迁移相关开发规范文档
|
2026-01-14 12:15:57 +08:00 |
|
|
|
2570269c8d
|
feat(wallet,tag): 钱包和标签系统多租户改造
核心变更:
- 钱包表:删除 user_id,添加 resource_type/resource_id(绑定资源而非用户)
- 标签表:添加 enterprise_id/shop_id(实现三级隔离:全局/企业/店铺)
- GORM Callback:自动数据权限过滤
- 迁移脚本:可重复执行,已验证回滚功能
钱包归属重构原因:
- 旧设计:钱包绑定用户账号,个人客户卡/设备转手后新用户无法使用余额
- 新设计:钱包绑定资源(卡/设备/店铺),余额随资源流转
标签三级隔离:
- 平台全局标签:所有用户可见
- 企业标签:仅该企业可见(企业内唯一)
- 店铺标签:该店铺及下级可见(店铺内唯一)
测试覆盖:
- 9 个单元测试验证标签多租户过滤(全部通过)
- 迁移和回滚功能测试通过(测试环境)
- OpenSpec 验证通过
变更 ID: fix-wallet-tag-multi-tenant
迁移版本: 000008
参考: openspec/changes/archive/2026-01-13-fix-wallet-tag-multi-tenant/
|
2026-01-13 16:52:37 +08:00 |
|
|
|
6e2dc325d7
|
新增钱包、换卡、标签系统的数据模型和规范
本次提交完成 add-wallet-transfer-tag-models 提案的实施和归档:
## 新增功能模块
- 钱包系统:用户/代理钱包管理,支持充值、扣款、退款、乐观锁防并发
- 换卡记录:物联卡更换历史追溯,包含套餐快照(JSONB)
- 标签系统:设备/IoT卡/号卡的统一标签管理
- 运营商渠道:四大运营商(CMCC/CUCC/CTCC/CBN)的渠道管理
## 数据库变更
- 新增 6 张表:tb_wallet, tb_wallet_transaction, tb_recharge_record, tb_card_replacement_record, tb_tag, tb_resource_tag
- 修改 2 张表:tb_carrier(新增渠道字段), tb_order(新增混合支付字段)
- 迁移版本:v6 → v7(执行时间 282.5ms)
## 代码变更
- 新增 8 个 Go 模型(符合统一规范:gorm.Model + BaseModel)
- 新增 40+ 个常量定义(含完整中文注释)
- 新增 7 个 Redis Key 生成函数
- 修复模型规范:移除重复字段,统一使用 gorm.Model 嵌入
## 文档变更
- 新增 3 个业务文档:数据模型设计、字段说明、迁移验证报告
- 更新 AGENTS.md:新增 Model 模型规范和常量注释规范
- 新增 4 个 OpenSpec 规范:wallet, carrier, card-replacement, tag
- 更新 1 个 OpenSpec 规范:iot-order(支持混合支付)
## 验证通过
- ✅ LSP 诊断:所有模型和常量文件无错误
- ✅ OpenSpec 验证:openspec validate --strict 通过
- ✅ 迁移执行:表结构创建成功,索引正确
- ✅ 提案归档:2026-01-13-add-wallet-transfer-tag-models
变更文件统计:29 个文件,新增 3682 行
|
2026-01-13 15:47:32 +08:00 |
|
|
|
2150fb6ab9
|
重构:完善 IoT 模型架构规范和数据库设计
- 完善 GORM 模型规范:货币字段使用 int64(分为单位)、JSONB 字段规范、模型结构规范
- 修复所有 IoT 模型的架构违规问题
- 更新 CLAUDE.md 开发指南,补充完整的数据库设计规范和模型示例
- 添加数据库迁移脚本(000006)用于架构重构
- 归档 OpenSpec 变更文档(2026-01-12-fix-iot-models-violations)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 17:43:12 +08:00 |
|
|
|
4507de577b
|
代码质量改进:修复架构违规、完善文档注释和清理冗余代码
- 修复 health.go handler 直接操作响应的架构违规问题
- 为 model 字段添加 GORM comment 标签(account_role、base、role_permission)
- 为 handler、service、store 包添加包级文档注释
- 清理 customer service 和 personal_customer handler 中注释掉的代码
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 16:28:48 +08:00 |
|
|
|
867e97af11
|
重构:统一 IoT 模型到 internal/model/ 目录
将所有 IoT 相关的数据模型从 internal/iot/model/ 迁移到 internal/model/,
实现全局统一的模型层架构,符合项目横向分层设计原则。
变更内容:
- 迁移 11 个 IoT 模型文件(carrier, iot_card, device, order, package 等)
- 删除 internal/iot/model/ 目录
- 更新文档中的模型路径引用(25 处)
- 创建重构总结文档
- 归档 OpenSpec 变更为 2026-01-12-refactor-iot-model-location
- 创建 model-organization 规格文档
验证结果:
- 编译通过(go build 成功)
- 静态分析通过(go vet 无错误)
- 代码格式通过(go fmt 无变更)
- 无 Go 代码引用旧路径
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-12 16:01:53 +08:00 |
|
|
|
9c6d4a3bd4
|
实现个人客户微信认证和短信验证功能
- 添加个人客户微信登录和手机验证码登录接口
- 实现个人客户设备、ICCID、手机号关联管理
- 添加短信发送服务(HTTP 客户端)
- 添加微信认证服务(含 mock 实现)
- 添加 JWT Token 生成和验证工具
- 创建数据库迁移脚本(personal_customer 关联表)
- 修复测试文件中的路由注册参数错误
- 重构 scripts 目录结构(分离独立脚本到子目录)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-10 11:42:38 +08:00 |
|
|
|
1b9080e3ab
|
实现角色权限体系重构
本次提交完成了角色权限体系的重构,主要包括:
1. 数据库迁移
- 添加 tb_permission.platform 字段(all/web/h5)
- 更新 tb_role.role_type 注释(1=平台角色,2=客户角色)
2. GORM 模型更新
- Permission 模型添加 Platform 字段
- Role 模型更新 RoleType 注释
3. 常量定义
- 新增角色类型常量(RoleTypePlatform, RoleTypeCustomer)
- 新增权限端口常量(PlatformAll, PlatformWeb, PlatformH5)
- 添加角色类型与用户类型匹配规则函数
4. Store 层实现
- Permission Store 支持按 platform 过滤
- Account Role Store 添加 CountByAccountID 方法
5. Service 层实现
- 角色分配支持类型匹配校验
- 角色分配支持数量限制(超级管理员0个,平台用户无限制,代理/企业1个)
- Permission Service 支持 platform 过滤
6. 权限校验中间件
- 实现 RequirePermission、RequireAnyPermission、RequireAllPermissions
- 支持 platform 字段过滤
- 支持跳过超级管理员检查
7. 测试用例
- 角色类型匹配规则单元测试
- 角色分配数量限制单元测试
- 权限 platform 过滤单元测试
- 权限校验中间件集成测试(占位)
8. 代码清理
- 删除过时的 subordinate 测试文件
- 移除 Account.ParentID 相关引用
- 更新 DTO 验证规则
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-10 09:51:52 +08:00 |
|
|
|
a36e4a79c0
|
实现用户和组织模型(店铺、企业、个人客户)
核心功能:
- 实现 7 级店铺层级体系(Shop 模型 + 层级校验)
- 实现企业管理模型(Enterprise 模型)
- 实现个人客户管理模型(PersonalCustomer 模型)
- 重构 Account 模型关联关系(基于 EnterpriseID 而非 ParentID)
- 完整的 Store 层和 Service 层实现
- 递归查询下级店铺功能(含 Redis 缓存)
- 全面的单元测试覆盖(Shop/Enterprise/PersonalCustomer Store + Shop Service)
技术要点:
- 显式指定所有 GORM 模型的数据库字段名(column: 标签)
- 统一的字段命名规范(数据库用 snake_case,Go 用 PascalCase)
- 完整的中文字段注释和业务逻辑说明
- 100% 测试覆盖(20+ 测试用例全部通过)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-01-09 18:02:46 +08:00 |
|