|
|
c64f3d8b80
|
全局审计完成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m31s
|
2026-08-07 11:02:52 +08:00 |
|
|
|
88cc5e96ec
|
暂存
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m32s
|
2026-08-06 09:35:00 +08:00 |
|
|
|
5e552d99bc
|
收口审计治理与套餐任务进展
Constraint: 在线热修前必须保存当前迭代分支全部有效代码进展
Confidence: medium
Scope-risk: broad
Directive: 后续修改需保持审计事件与业务事务边界一致
Tested: git diff --cached --check
Not-tested: 未运行全量测试,提交用于切换分支前保存既有工作
|
2026-08-05 14:30:54 +08:00 |
|
|
|
b3499adfca
|
固化七月迭代审计治理进展以隔离线上热修
Constraint: 切换 main 前必须保存当前七月分支全部项目进展,套餐生效提案仅属于 Iteration/7-11。
Rejected: 将七月套餐修复直接移植到 main | 两个分支的可靠投递架构不同。
Confidence: medium
Scope-risk: broad
Directive: 不得将本提交整体 cherry-pick 到 main;main 套餐热修必须基于其纯 Asynq 代码独立实施。
Tested: git diff --check;openspec validate fix-package-activation-starvation --strict。
Not-tested: 按用户要求未运行自动化测试;go build ./... 因当前审计改造中的 Enterprise 模型字面量和 role.recordFailure 参数类型错误未通过。
|
2026-08-03 09:47:22 +08:00 |
|
|
|
9fdfad369f
|
确保批量购包能够写入观测事件
Constraint: 批量订购复用 Worker 内独立构造的订单服务\nRejected: 跳过购包观测 | 会破坏业务事务与观测事件的一致性\nConfidence: high\nScope-risk: narrow\nDirective: 新增订单服务构造入口时同步注入购包观测 Writer\nTested: 未运行测试,按用户要求仅检查目标文件差异\nNot-tested: 未执行自动化测试
|
2026-07-30 15:37:16 +08:00 |
|
|
|
8fc667daee
|
让代理充值复用现有网页支付能力
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m7s
微信按当前 v2/v3 配置分别生成 MWEB/H5 链接,支付宝复用 C 端 WAP 链接,并让可用支付方式基于生效配置判断。
Constraint: 支付链接统一通过 qr_content 返回,由前端渲染二维码;按要求不运行测试
Rejected: 微信 Native 与支付宝当面付 | 会引入非当前商户配置所需的额外产品开通
Confidence: high
Scope-risk: moderate
Directive: 微信 H5/MWEB 二维码仅承诺系统相机或外部浏览器扫码链路
Tested: 相关 Go 包编译通过;gofmt 与 git diff --check 通过
Not-tested: 按用户要求未运行自动化测试及真实支付联调
|
2026-07-30 11:41:50 +08:00 |
|
|
|
1fee19feeb
|
补充一些通知
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m7s
|
2026-07-28 15:50:12 +08:00 |
|
|
|
9303af3d46
|
触发通知轮询
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m23s
|
2026-07-28 14:25:18 +08:00 |
|
|
|
7c5b6ee036
|
加上一个日志输出,看看回调内容
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m10s
|
2026-07-28 09:21:54 +08:00 |
|
|
|
cbf909b878
|
代理在线充值
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
|
2026-07-27 16:02:55 +08:00 |
|
|
|
cb26217205
|
让七月迭代具备可直接部署的配置基线
补齐三套环境配置、测试环境部署门禁与 system_config 初始化,并按当前无企微应用的约束将企微凭据改为明文存储。
Constraint: 当前测试环境尚无企微应用及历史企微密文数据
Rejected: 使用启动环境变量加密企微凭据 | 用户明确要求直接明文保存并移除加密密钥
Confidence: high
Scope-risk: moderate
Directive: 企微真实闭环完成前保持两个旧审批入口开关为 true
Tested: gofmt;git diff --check;bash -n;docker compose config;Gitea workflow YAML 解析;OpenAPI 重新生成
Not-tested: go test;常规 go build;LSP;实际数据库迁移;真实测试环境部署;企微真实联调
|
2026-07-25 18:18:45 +08:00 |
|
|
|
73f5125d3d
|
七月迭代短暂完结,还有很多后端的关键东西没有弄,这是一版赶时间做的东西
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m26s
|
2026-07-25 17:06:58 +08:00 |
|
|
|
5c4d17e9fc
|
收口七月卡状态回调与系列授权兼容契约
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
完成运营商实名回调、业务事件观测序列与受控配置装配,同时恢复 UR43 已交付的 packages[].remove 字段及旧响应兼容,统一更新 OpenSpec、OpenAPI 和交付文档。
Constraint: 七月测试环境里程碑不新增或运行自动化测试
Rejected: 以必填 operation_type 替换 packages[].remove | 会破坏已交付前端契约
Confidence: high
Scope-risk: broad
Directive: 后续修改系列套餐管理接口必须保持 packages[].remove 和 ShopSeriesGrantResponse 兼容
Tested: go run ./cmd/gendocs;go build -buildvcs=false ./...;openspec validate complete-july-iteration-test-release --strict;git diff --check
Not-tested: 按本 Change 约定未运行 go test,真实运营商与 Gateway 联调延期
|
2026-07-24 19:59:24 +08:00 |
|
|
|
a18ed8bc8d
|
暂存一下,防止丢失
|
2026-07-24 16:07:18 +08:00 |
|
|
|
17782d5f8e
|
实现七月迭代公共技术基础
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
|
2026-07-23 17:52:48 +09:00 |
|
|
|
8d65b26e96
|
实现资产预计最终到期时间
|
2026-07-23 13:14:43 +09:00 |
|
|
|
9818537239
|
实现套餐生效条件覆盖与购买快照
|
2026-07-22 21:07:08 +09:00 |
|
|
|
c58773e35b
|
实现资产双向换货链路查询
|
2026-07-22 18:05:38 +09:00 |
|
|
|
55bdc3a8d0
|
实现换货资产快照与新旧独立搜索
|
2026-07-22 16:37:08 +09:00 |
|
|
|
751cb46079
|
修复店铺列表参数校验与企业权限
|
2026-07-22 13:13:38 +09:00 |
|
|
|
f4b6a55b27
|
驳回
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 7m17s
|
2026-06-26 12:12:15 +09:00 |
|
|
|
8cf921f11c
|
驳回接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
|
2026-06-25 17:10:24 +09:00 |
|
|
|
5c2ef97c24
|
相关问题优化以及新功能开发
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m57s
迁移 155- 157
|
2026-06-22 17:21:13 +09:00 |
|
|
|
ba435dd6a6
|
关于绑定的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-06-22 12:08:41 +09:00 |
|
|
|
3b7b856e48
|
企业授权增强与资产列表扩展
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m9s
- 企业卡授权唯一约束:新增 DB 迁移(000154),卡级部分唯一索引防止同一张卡被多个企业同时持有,Service 层新增跨企业冲突检测
- 单卡列表新增 network_status 过滤参数
- 单卡/设备列表新增 asset_status、asset_status_name、generation 响应字段
- 单卡/设备列表新增企业维度过滤(authorized_enterprise_id、is_authorized_to_enterprise)及响应中企业授权信息(批量加载,无 N+1)
- 主钱包流水/退款列表新增 asset_identifier 精确过滤参数
- 企业卡授权/收回接口升级为三模式(list/range/filter),企业设备授权/收回升级为双模式(list/filter)
- 升级 sonic v1.14.2 → v1.15.2 以兼容 Go 1.26
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 16:23:03 +09:00 |
|
Break
|
016e7bee79
|
修改过期时间,以及修改套餐已用量
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
|
2026-06-12 10:41:24 +08:00 |
|
Break
|
32c9859b38
|
监控
|
2026-06-10 01:15:26 +08:00 |
|
Break
|
a6cd550b94
|
1
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m18s
|
2026-06-02 16:56:09 +08:00 |
|
Break
|
c6e65fde9b
|
开放接口
|
2026-06-02 16:56:01 +08:00 |
|
|
|
4c1e4f428a
|
一次补偿
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m2s
|
2026-05-25 14:40:34 +08:00 |
|
|
|
d597a25c69
|
机卡分离复机接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m1s
|
2026-05-14 09:50:48 +08:00 |
|
|
|
98ff88d5c3
|
开放接口,修复上游同步不对的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s
|
2026-05-11 11:20:48 +08:00 |
|
|
|
7c85a8cf29
|
修复支付以及订单相关的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 1s
|
2026-05-08 10:15:03 +08:00 |
|
|
|
bb33232b1b
|
日志记录不全
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m48s
|
2026-04-27 15:32:17 +08:00 |
|
|
|
cb75b5668b
|
操作日志
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m10s
|
2026-04-27 12:16:38 +08:00 |
|
|
|
60debb7505
|
统一导出任务
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m4s
|
2026-04-27 09:47:03 +08:00 |
|
|
|
a44c88005d
|
手动实名
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m24s
|
2026-04-23 17:35:38 +08:00 |
|
|
|
e049080f6c
|
分裂iccid长度
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m47s
|
2026-04-21 10:55:12 +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 |
|
|
|
c5ed040359
|
feat: 后台管理新增 UpdateRealnameMode 接口并注册路由 PATCH /api/admin/assets/:identifier/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:32:18 +08:00 |
|
|
|
fa554c3930
|
feat: 注册 C 端微信 JSSDK 配置接口路由及文档生成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m35s
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-04-16 18:38:43 +08:00 |
|
|
|
aef20d2ab1
|
fix: 修复禁用所有轮询配置重启后再启用无法工作的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m23s
- 新增 RedisPollingConfigChangedChannel 常量,用于跨进程配置变更通知
- ConfigService 注入 Redis,Create/Delete/UpdateStatus 后发布 Pub/Sub 事件
- PollingConfigManager 新增 WatchChanges() 方法,收到通知立即刷新内存缓存
- PollingInitializer 新增 Restart() 方法,支持初始化完成后安全重启(CAS 防并发)
- Worker 订阅配置变更事件,configs 从空变为非空时触发 Initializer.Restart()
根因:启动时所有配置禁用导致分片队列为空,Initializer 是一次性的,
之后启用配置只更新 DB 但不重建队列,调度器无卡可处理
|
2026-04-16 17:32:43 +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 |
|
|
|
42c5ec912f
|
feat: 技术债务清理(支付配置动态化、API文档补全、轮询常量提取、废弃代码清理)
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m13s
|
2026-04-14 11:11:15 +08:00 |
|
|
|
640ea8ec99
|
feat: 更新依赖注入,传入 ManualTriggerService
|
2026-04-13 14:52:50 +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 |
|
|
|
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 |
|
|
|
7e489a19fb
|
fix: 角色删除前校验分配情况,禁止删除使用中的角色
角色被删除后,其关联的账号-角色记录未清理,导致 CountByAccountID
统计到孤儿记录,使被分配该角色的账号无法重新分配新角色。
修复方案:删除角色前检查 tb_account_role 和 tb_shop_role,
若仍有账号或店铺持有该角色则返回 1028 错误,强制管理员显式
解除所有分配后再删除,保证数据一致性与审计完整性。
|
2026-04-07 17:23:49 +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 |
|