Break
|
1f634eb465
|
init
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m3s
|
2026-06-16 15:15:50 +08:00 |
|
Break
|
1ee554daec
|
钱包流水新增资产信息
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m59s
|
2026-05-29 10:52:12 +08:00 |
|
Break
|
58863e8ec5
|
数据迁移脚本
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 54s
|
2026-05-27 11:10:56 +08:00 |
|
Break
|
e131d6ba77
|
imei
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 21m51s
|
2026-05-26 16:55:35 +08:00 |
|
|
|
20b5d70af9
|
1. 清理预充值SQL
2. 查日志的脚本
|
2026-05-25 14:30:09 +08:00 |
|
|
|
2768deb0b6
|
设备新增搜索条件
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m8s
|
2026-05-20 10:27:30 +08:00 |
|
|
|
e2301d5f3b
|
chore(集成验证): gofmt 修复 DTO 格式并重新生成 OpenAPI 文档
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m3s
- 修复 ListStandaloneIotCardRequest 和 ListDeviceRequest 字段对齐格式
- 重新生成 docs/admin-openapi.yaml,两个列表接口均新增 has_active_package 参数
- go build ./cmd/api、go build ./cmd/worker 均通过验证
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-19 12:15:06 +08:00 |
|
|
|
631c5392b6
|
1
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m56s
|
2026-05-18 10:47:10 +08:00 |
|
|
|
ed071918ed
|
钱包订单退款时应当正确退回,充值时允许最低充值1分
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m7s
|
2026-05-18 09:51:59 +08:00 |
|
|
|
8f3a68a673
|
新增上游的停机原因
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m5s
|
2026-05-12 11:13:04 +08:00 |
|
|
|
95fc0b0a1b
|
修复一些问题,主要是生效套餐
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m16s
|
2026-05-12 10:32:38 +08:00 |
|
|
|
eb74dd7849
|
补回是否启用虚流量
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m58s
|
2026-05-06 16:07:59 +08:00 |
|
|
|
001f8caf35
|
修复当前卡不对的问题
|
2026-05-06 10:19:21 +08:00 |
|
|
|
948243b13d
|
修改
|
2026-04-30 15:49:40 +08:00 |
|
|
|
9674e0d0d9
|
文档更新
|
2026-04-30 10:54:29 +08:00 |
|
|
|
66e12e9629
|
订单相关以及佣金相关修复
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m57s
|
2026-04-30 09:52:39 +08:00 |
|
|
|
37b4483183
|
赠送套餐逻辑
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
|
2026-04-28 17:40:06 +08:00 |
|
|
|
fe4c545308
|
修正数据
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
|
2026-04-27 18:10:08 +08:00 |
|
|
|
c3ae7fcfbc
|
修复设备WiFi上游请求参数
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m40s
|
2026-04-27 15:19:23 +08:00 |
|
|
|
1f1f31a7cb
|
退款列表快照订单号
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m30s
|
2026-04-23 10:59:34 +08:00 |
|
|
|
6b1fbf4a92
|
修复金额的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m30s
|
2026-04-23 10:09:23 +08:00 |
|
|
|
fd795d8742
|
feat: 新增设备切卡模式接口 SetSwitchMode
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m32s
|
2026-04-18 16:22:30 +08:00 |
|
|
|
4b8784d5e7
|
docs: 更新 OpenAPI 文档,新增批量下载 URL 接口文档
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m15s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-18 10:08:53 +08:00 |
|
|
|
6caf0f6141
|
feat: 新增全局操作密码功能,将线下充值验证从登录密码改为统一操作密码
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 新增 RedisSystemOperationPasswordKey 常量函数(pkg/constants/redis.go)
- 新增 operation_password Service(Set/IsSet/Verify,bcrypt 哈希存 Redis)
- 新增 SuperAdminHandler 及两个接口:
- POST /api/admin/super-admin/operation-password(设置/重置,仅超级管理员)
- GET /api/admin/super-admin/operation-password/status(查询是否已设置)
- AgentRecharge.OfflinePay 操作密码验证从"查当前用户登录密码"改为"全局操作密码 Verify"
- Bootstrap/路由/文档生成器同步注册
|
2026-04-18 09:06:33 +08:00 |
|
|
|
6e15e1b853
|
docs: 更新 OpenAPI 文档及提案任务清单,新增 payment_voucher_key 字段
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m26s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-17 18:29:42 +08:00 |
|
|
|
9d8e3926ff
|
docs: 更新 OpenAPI 文档,新增 realname-mode 更新接口文档
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-17 17:33:07 +08:00 |
|
|
|
44e4f03957
|
docs: 补充微信 JSSDK 配置接口 OpenAPI 文档
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-17 12:04:35 +08:00 |
|
|
|
854330a4b4
|
docs: 更新 OpenAPI 文档,新增卡状态检查间隔字段
PollingConfig 请求/响应结构中添加 card_status_check_interval 字段说明
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-15 12:22:55 +08:00 |
|
|
|
b972a776d9
|
重构充值订单模块:用 tb_recharge_order + tb_payment 替换 tb_asset_recharge_record
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m32s
- 新增 RechargeOrder 和 Payment 模型及对应 Store
- 新增 ClientRechargeOrderHandler 提供充值订单列表/详情接口
- 修改 client_wallet.go 使用新表读写充值数据
- 修改 callback/payment.go 将 CRCH 订单路由到 rechargeOrderService
- 修改 client_order/service.go 的强充流程使用新表
- 修改 auto_purchase.go 从 tb_recharge_order 读取 linked_package_ids
- 修改 order/service.go 的 WalletPay 使用 tb_payment 记录
- 修改 wechat_config_store.go 从 tb_recharge_order 统计待支付充值数
- 移除 AssetRechargeStore 和 AssetRechargeRecord 的注册引用
- 修复文档生成器缺失 ClientRechargeOrder handler
- 状态枚举改为 0-based: Pending=0, Paid=1, Closed=2, Refunded=3
|
2026-04-15 11:00:32 +08:00 |
|
|
|
c35542f911
|
feat: 补全客户端订单和资产 DTO _name 字段,修复代码格式
|
2026-04-14 11:19:57 +08:00 |
|
|
|
8d8d426e2e
|
feat: verify-asset 接口返回当前生效的公众号和小程序 AppID
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m51s
|
2026-04-11 17:22:21 +08:00 |
|
|
|
8f66ca7bcb
|
文档提交
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m14s
|
2026-04-11 11:27:43 +08:00 |
|
|
|
677d6239ce
|
fix: 统一佣金状态常量并修复佣金明细关联查询
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m33s
- 删除 model/commission.go 中与 constants 包冲突的旧常量(值=1/2)
- 所有服务层改用 constants.CommissionStatusReleased(值=3)写入和查询
- 数据库迁移:status 1→3(已发放),2→4(已失效)
- 修复佣金明细列表接口,通过 JOIN 关联返回 order_no、iccid、virtual_no、order_created_at
- 新增 seller_shop_id / seller_shop_name 销售来源字段
- 统计接口过滤条件从精确匹配改为排除无效(NOT IN 4,99)
- 更新 OpenAPI 文档及 commission-record-query spec
|
2026-04-11 10:42:37 +08:00 |
|
|
|
5496cb58aa
|
feat: 订单创建时快照买家手机号/昵称和套餐类型
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
新增字段:
- tb_order: buyer_phone, buyer_nickname(个人客户下单时快照)
- tb_order_item: package_type(套餐类型快照)
后台订单列表支持按 buyer_phone 精确过滤查询。
OpenSpec: order-buyer-snapshot
|
2026-04-10 17:12:56 +08:00 |
|
|
|
0627ffec42
|
feat: 代理商资金可见性重构(agent-fund-visibility)
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m10s
- 将 GET /shops/commission-summary 重命名为 GET /shops/fund-summary,
响应新增 main_balance、main_frozen_balance 两个预充值钱包字段
- 新增 GET /shops/:id/main-wallet/transactions 预充值钱包流水接口
- 将佣金统计、每日统计、发起提现从 /my/ 路径迁移至 /shops/:id/ 路径:
GET /shops/:id/commission-stats
GET /shops/:id/commission-daily-stats
POST /shops/:id/withdrawal-requests
- 删除 MyCommissionService、MyCommissionHandler 及全部 /my/ 路由
- 补齐 ListShopWithdrawalRequests、ListShopCommissionRecords 的
CanManageShop 越权校验(安全修复)
- 提现接口增加严格权限:仅代理账号本人可为自己店铺发起提现
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-09 14:40:39 +08:00 |
|
|
|
81ba84cf05
|
feat: 新增店铺联级查询接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m3s
- 新增 GET /api/admin/shops/cascade 接口,支持按店铺名模糊查询和上级ID过滤
- Store 层新增 ListForCascade(支持数据权限过滤)和 GetParentIDsWithChildren 方法
- Service 层新增 ListCascade,批量判断 has_children 避免 N+1 查询
- 返回格式:[{id, shop_name, has_children}]
💘 Generated with Crush
Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>
|
2026-04-09 11:43:37 +08:00 |
|
|
|
384a54164b
|
feat: 新增批量移除角色权限接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 新增 DELETE /api/admin/roles/:role_id/permissions 接口
- Store 层新增 BatchDelete 方法,单次 SQL 批量软删除
- Service 层新增 BatchRemovePermissions 方法
- Handler 层新增 BatchRemovePermissions 处理函数
- DTO 新增 BatchRemovePermissionsRequest/Params
- 修复 openapi generator 对 DELETE 方法 requestBody 不生成的问题
- RouteSpec 新增 Body 字段,支持显式指定 JSON 请求体
💘 Generated with Crush
Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>
|
2026-04-09 11:41:58 +08:00 |
|
|
|
cc56e27c01
|
feat: 后台线下支付订单强制上传支付凭证
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m15s
在后台创建订单接口中新增 payment_voucher_key 字段,线下支付方式
下该字段为必填,存储对象存储 file_key,便于后续追溯与审计。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-08 16:45:06 +08:00 |
|
|
|
38ef73fd7f
|
docs: 补充资产标识符标准化接口文档更新
|
2026-04-08 10:45:13 +08:00 |
|
|
|
80c6f6c756
|
feat: 资产标识符标准化、资产历史订单查询及导入虚拟号强制验证
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m21s
主要变更:
- 新增 AssetIdentifier 模型及 Store,统一管理资产标识符(ICCID/IMEI/SN 等)
- 新增迁移:asset_identifier 表、order 表新增 asset_identifier 字段、iot_card.virtual_no NOT NULL 约束
- 资产 Handler/Service/Route 全面重构,支持标识符路由查询与解析
- 新增资产历史订单查询接口,支持跨设备/卡/钱包维度的订单聚合
- 设备与物联卡导入任务强制校验虚拟号,缺失时直接拒绝
- Excel 工具函数优化,前端导入指引文档同步更新
- 归档三个 OpenSpec 提案:asset-identifier-standardization、asset-historical-orders、import-mandatory-virtual-no
- 更新 OpenAPI 文档及相关 DTO
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-07 17:39:36 +08:00 |
|
|
|
434a8b0349
|
feat: 轮询系统重构(分片队列 + 停复机统一 + Handler 拆分)
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m46s
【核心变更】
1. 停复机逻辑统一(StopResumeService)
- 新增 EvaluateAndAct 统一入口,封装三条件停复机判断
- 停机条件:无套餐(no_package) / 流量耗尽(traffic_exhausted) / 未实名(not_realname)
- 复机条件:stop_reason 合规 + 有套餐且未耗尽 + 已实名或行业卡
- 修复设备套餐 Bug:hasValidPackage 按 device_id 查套餐,而非仅 iot_card_id
- 设备维度停复机加幂等锁(Redis SetNX,TTL 30s),防止多卡并发重复调 Gateway
2. Redis 分片队列(PollingQueueManager)
- 新建 queue_manager.go,封装所有轮询 Redis 操作
- 16 分片 Sorted Set,Key 格式:polling:shard:{shardID}:queue:{taskType}
- Lua 脚本原子出队(ZRANGEBYSCORE + 分批 ZREM),消除竞态窗口
- 新增背压检测:队列深度超 50 万时 Scheduler 跳过该分片
- RemoveFromAllQueues 覆盖 4 种任务类型(含 protect)
3. Handler 拆分(polling_handler.go 1360行 → 5个专注文件)
- polling_base.go:共享基类(并发控制/卡缓存/重入队)
- polling_realname_handler.go:实名采集,实名 0→1 时立即触发复机
- polling_carddata_handler.go:流量采集,保留跨月边界检测逻辑
- polling_package_handler.go:套餐采集,委托 EvaluateAndAct 决策
- polling_protect_handler.go:保护期一致性检查,保护期内强制修正
4. 配置管理(PollingConfigManager)
- 新建 config_manager.go,从 scheduler.go 提取配置职责
- 内存缓存 + 5 分钟定时刷新,刷新失败保留原缓存
- 修复 getCardCondition:停机卡返回 suspended,不再错配 activated 配置
5. 渐进式初始化(CardInitializer)
- 新建 initializer.go,分批加载(每批 10 万),批次间 sleep 500ms
- 过滤 enable_polling=false 的卡,初始化完成前 Scheduler 不出队
6. 卡生命周期服务(PollingLifecycleService)
- 新建 lifecycle_service.go,替代已删除的 callbacks.go 和 api_callback.go
- OnCardCreated/OnCardEnabled/OnCardStatusChanged 入队前检查 enable_polling
7. Scheduler 精简(1000+行 → 227行)
- 保留纯调度循环:scheduleLoop + processShardSchedule + enqueueBatch
- 保留每 10 秒触发套餐过期检测和流量重置
- 移除所有 DB 操作、配置加载、卡初始化逻辑
8. 轮询管控 API(enable_polling)
- 新增 PUT /api/admin/assets/:id/polling-status 接口
- 支持对设备/卡维度开关轮询,关闭后从所有分片队列移除
9. 数据库迁移
- 000103:tb_device 新增 enable_polling 字段(boolean, NOT NULL, DEFAULT true)
- 000104:新增 suspended 轮询配置,为 activated 配置补全 protect_check_interval
【文件统计】
- 新增:19 个文件(handler × 5、polling 组件 × 4、迁移 × 3 等)
- 修改:20 个文件(bootstrap 注入、store 接口、monitoring 适配分片等)
- 删除:3 个文件(polling_handler.go、callbacks.go、api_callback.go)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-07 12:27:04 +08:00 |
|
|
|
dc4f3cb7ba
|
feat: C端订单支付拆分 — 创建订单与发起支付分离
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m10s
- CreateOrder 改造:普通下单只建单(无支付参数),强充场景保持原有微信支付一步完成
- 新增 POST /orders/:id/pay 统一支付入口,支持 wallet(钱包)和 wechat(微信 JSAPI)
- 移除 POST /orders/:id/wallet-pay,合并至统一支付接口
- app_type 改为可选字段(强充场景必传,普通下单无需传)
- CreateOrderResponse.pay_config 改为 omitempty(普通下单不返回支付参数)
|
2026-03-31 12:43:34 +08:00 |
|
|
|
48ad0844ae
|
fix: gendocs panic — config.Get() nil 守卫防止未初始化时访问 Logging.Development
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-03-31 09:56:25 +08:00 |
|
|
|
2ef8b8a705
|
fix: 修复分页字段/角色DTO/套餐详情/批量分配Bug,新增C端测试登录接口和Hurl价格验证测试
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 修复B-2:27个分页DTO字段名统一(list→items, page_size→size,删除total_pages)
- 修复B-1:角色接口统一返回DTO(id小写,消除GORM大写字段名)
- 修复C-1:套餐详情接口(GET /packages/:id)补充代理佣金字段
- 修复C-2:批量分配已存在记录由500改为静默跳过
- 修复C-3:创建系列授权响应在事务提交后构建,packages数组不再为空
- 新增C端开发测试登录接口(POST /api/c/v1/auth/dev-login,仅logging.development=true时生效)
- 新增Hurl测试:card-price-verification-flow.hurl(导入卡→分配→C端价格验证)
- 新增测试Excel数据文件和dev.env测试变量
|
2026-03-31 09:54:08 +08:00 |
|
|
|
f339fb1987
|
fix: 资产钱包自动创建机制 — 修复C端购买时钱包不存在报错
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建
- device_import: 设备导入事务内同步创建设备钱包
- iot_card_import: IoT卡批量导入后批量创建卡钱包
- queue/handler: 传递 AssetWalletStore 给两个导入 handler
- migration 000098: 为存量IoT卡和设备补建资产钱包
|
2026-03-30 11:37:41 +08:00 |
|
|
|
f0f21e52f1
|
docs: 重新生成 OpenAPI 文档,补全 Phase 03.1 新增字段
|
2026-03-28 13:32:48 +08:00 |
|
|
|
e78f5794b9
|
feat: 实现客户端换货系统(client-exchange-system)
新增完整换货生命周期管理:后台发起 → 客户端填收货信息 → 后台发货 → 确认完成(含可选全量迁移) → 旧资产转新再销售
后台接口(7个):
- POST /api/admin/exchanges(发起换货)
- GET /api/admin/exchanges(换货列表)
- GET /api/admin/exchanges/:id(换货详情)
- POST /api/admin/exchanges/:id/ship(发货)
- POST /api/admin/exchanges/:id/complete(确认完成+可选迁移)
- POST /api/admin/exchanges/:id/cancel(取消)
- POST /api/admin/exchanges/:id/renew(旧资产转新)
客户端接口(2个):
- GET /api/c/v1/exchange/pending(查询换货通知)
- POST /api/c/v1/exchange/:id/shipping-info(填写收货信息)
核心能力:
- ExchangeOrder 模型与状态机(1待填写→2待发货→3已发货→4已完成,1/2可取消→5)
- 全量迁移事务(11张表:钱包、套餐、标签、客户绑定等)
- 旧资产转新(generation+1、状态重置、新钱包、历史隔离)
- 旧 CardReplacementRecord 表改名为 legacy,is_replaced 过滤改为查新表
- 数据库迁移:000085 新建 tb_exchange_order,000086 旧表改名
|
2026-03-19 13:26:54 +08:00 |
|
|
|
df76e33105
|
feat: 实现 C 端完整认证系统(client-auth-system)
实现面向个人客户的 7 个认证接口(A1-A7),覆盖资产验证、
微信公众号/小程序登录、手机号绑定/换绑、退出登录完整流程。
主要变更:
- 新增 PersonalCustomerOpenID 模型,支持多 AppID 多 OpenID 管理
- 实现有状态 JWT(JWT + Redis 双重校验),支持服务端主动失效
- 扩展微信 SDK:小程序 Code2Session + 3 个 DB 动态工厂函数
- 实现 A1 资产验证 IP 限流(30/min)和 A4 三层验证码限流
- 新增 7 个错误码(1180-1186)和 6 个 Redis Key 函数
- 注册 /api/c/v1/auth/* 下 7 个端点并更新 OpenAPI 文档
- 数据库迁移 000083:新建 tb_personal_customer_openid 表
|
2026-03-19 11:33:41 +08:00 |
|
|
|
e45610661e
|
docs: 更新 admin OpenAPI 文档,新增 asset_wallet 接口定义
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m57s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-03-16 15:44:02 +08:00 |
|
|
|
275debdd38
|
fix: IoT 卡列表补充 virtual_no 字段和查询过滤,修正设备/卡导入 API 文档描述
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-03-16 10:44:38 +08:00 |
|