|
|
1aa4eacee2
|
feat(退款分佣): 佣金回溯明细替换全额失效并补齐读侧与导出
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m26s
用 PRD 2.14 语义整体替换退款佣金「整单全额失效」实现:原佣金保持已发放不变,
回溯事实落在新表 tb_commission_clawback_record 的负数、不可提现明细上。
- 新增成对迁移 000220 建 tb_commission_clawback_record,唯一约束
(refund_id, original_commission_id) 为权威幂等键,附店铺+时间/原佣金/订单索引。
- 回溯用例(internal/service/refund/clawback.go):准入仅由退款申请状态、审批异常
标记与退款方式决定;金额按分整数计算,分母取冻结实收(缺失回落审批尝试)、
分子原路取渠道成功金额,乘法用 math/big 中间量,舍入差自末条起向前补差;
终态判据要求订单佣金已离开待计算且不存在 status IN (1,2,99) 的记录。
- 三层幂等:唯一约束兜底、佣金行行锁 + 钱包乐观锁、commission_deducted 仅作投影
并带 WHERE commission_deducted = false 条件置位;闭合三结果为已回溯、无需回溯、
审批异常转人工。
- 事务内顺序固定:锁提现申请行 → 锁尝试行 → 解冻冻结 → 置驳回 → 插回溯明细 →
扣 balance(允许为负)→ 写负数流水 → 审计;删除旧全额失效写入与其两个审计调用点,
refund.invalidate_commission 仅保留常量与注册供历史审计读取。
- 读侧:佣金明细列表 status 筛选透传,两表 UNION ALL 合并分页并以 source ASC 作
末位次序键;新增佣金明细详情接口并同步路由与 OpenAPI 装配。
- 导出:新增 commission_record 场景(白名单、exporter 注册、DTO oneof、DataSource
与列定义),粒度为佣金记录,原佣金与回溯各一行,金额保持分且可为负。
- 新增退款佣金回溯周期补偿任务(@every 1m / MaxRetry(3) / Timeout(10m) /
Unique(10m),独立队列),保留启动时补偿扫描,判据与既有实现一致。
Refs: AUG26-012
|
2026-09-14 13:40:34 +08:00 |
|
|
|
67893617fe
|
feat(退款): AUG26-006 补充当前退款套餐已用量与总量
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m33s
补齐 PRD §2.3.1「退款管理补充字段」:退款列表、详情与导出新增
「当前退款套餐已用量」与「当前退款套餐总量」两个纯展示字段。
- 套餐定位口径与退款套餐失效保持一致,按优先级取唯一一条:
冻结的 package_usage_id(且属于该订单)→ 订单主套餐 → 订单任一套餐,
同级按标识升序。不按当前世代或当前生效套餐推断;不按套餐状态过滤,
使退款后套餐转已失效时仍能回看用量。
- 列表与详情用固定两次查询批量解析(按标识、按订单),查询次数不随条数增长;
详情复用同一函数。解析不到套餐或记录已物理删除时返回 0,不阻断读取。
- 导出新增两列并改用同一优先级的 LATERAL 取法,不再依赖只按 r.package_usage_id
的 join——生产库 1296 条退款仅 157 条带该字段,旧取法会让多数行显示零值。
- 不改变退款金额校验、冻结实收、套餐失效、接续、停机与佣金回溯任何规则。
验证:测试库 junhong_cmp_test 实测冻结记录、订单主套餐回退、记录缺失返回 0 三项
解析场景与「4 条退款固定 2 次查询」;并以同批 43 条退款对拍 Go 解析器与导出 SQL,
口径不一致 0 条;导出 43 行列数与表头一致。无迁移、无接口路径变化。
|
2026-09-14 12:11:55 +08:00 |
|
|
|
09abee9778
|
docs(归档): 归档退款方式与原路退款变更并同步主规格
- 将 add-refund-methods-and-original-route-refunds 归档为
2026-09-14-add-refund-methods-and-original-route-refunds。
- 合并两份 delta 到主规格:
* order-refund-exchange:改写「订单、退款与换货状态门禁」,新增「退款实收金额与方式矩阵」
「企业微信唯一终审与审批尝试重提」「原路退款渠道能力与执行」「退款权益与订单状态时点」
「退款终态事实与失败分类」五项行为要求。
* merchant-payment-routing:改写「商户与微信授权配置管理」与「新支付商户快照与历史兼容」
(删除「不得新增渠道退款能力」与「不新增富友退款」,改由退款能力按商户凭证执行;
微信 v2 客户端证书改为可选凭证键)。
- 同步上下文健康检查证据链与入口矩阵:为新要求登记证据行,并把退款创建、重提、
企微审批回调、退款详情与 refund:channel:recovery 任务与对应要求双向关联。
|
2026-09-14 12:00:35 +08:00 |
|
|
|
ba0855d9eb
|
feat(退款): AUG26-006 退款方式选择与原路退款
按 PRD 2.3/2.4/2.5 落地套餐退款的方式矩阵与原路渠道退款:
- 退款申请派生并冻结权威实收金额(线上取原成功支付记录,钱包/线下取订单实际收款),
提交人不可填写或修改;按来源支付方式生成可选方式矩阵并在创建、提交、执行前重复校验。
- 审批切换为「每次提交一条不可变审批尝试记录 + 独立企业微信审批实例」,业务标识取尝试
记录主键;终态消费按尝试记录优先、退款申请兜底双读,兼容存量无实例与已关联实例申请。
新增活动退款部分唯一索引 (order_id) WHERE status IN (1,5,6)。
- 本地人工终审保持既有开关,补齐通过入口的 approval_instance_id IS NULL 守卫,使三个
入口一致拒绝已关联审批实例的申请;重提按尝试模式重写(仅已拒绝/已退回/原路失败且无异常)。
- 权益时点:企微通过事务写退款终态、按方式确定的订单态、钱包回款、员工账单冲销与可靠
失效事实;套餐失效/接续/停机仍由既有可靠机制最终一致执行,不把外部调用放入资金事务。
订单支付状态按方式置位:凭证退款与退回原钱包在企微通过时置已退款,原路须渠道明确成功。
- 按官方契约实现微信直连 v3、微信 v2(双向证书)、富友(/commonRefund 与 /refundQuery)、
支付宝四类原路退款;能力只由服务商类型与退款必需凭证完整性决定,无人工开关。
渠道请求号在提交时冻结到尝试记录,并以 channel_submitted_at 条件认领保证资金动作至多
提交一次(重复投递只查询不二次提交);不向任何渠道传递退款结果通知地址。
- 新增 refund:channel:recovery 恢复任务只查询回填;本地查询窗口超期(富友 72 小时、
微信 v2 7 天)转原路退款失败、渠道状态已失败、分类超时未知并置异常转人工,不放行自动
重提以避免重复退款。
- 同步退款 DTO/导出/审计资源与审计查询关联、商户凭证文档,并修正 fuiou 集成契约文档。
迁移 000218(退款尝试与渠道退款事实)、000219(微信 v2 客户端证书凭证)成对提供,
未修改既有迁移;测试库 junhong_cmp_test 完成 up/down/up 与行为核对,未调用真实渠道。
|
2026-09-14 11:55:16 +08:00 |
|
|
|
315a7de3e4
|
docs(归档): 归档代理自充支付方式与员工代收款路由前缀两个变更
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
- add-agent-self-recharge-payment-methods 归档为 2026-09-11-add-agent-self-recharge-payment-methods,delta 应用后主规格 agent-funds-commission 完成 1 条 Requirement 改名并新增 4 条 Requirement
- 在可达操作索引补充代理自充支付方式配置与付款凭证识别共 3 个端点
- 同步 requirement-evidence.json 与 entry-capability-requirement-matrix.json 证据链
- fix-employee-collection-route-prefix 归档为 2026-09-11-fix-employee-collection-route-prefix 并勾选任务 2.5
门禁:context-health 通过、openspec validate --all 40 passed / 0 failed、doctor healthy
|
2026-09-11 15:50:15 +08:00 |
|
|
|
7891189712
|
feat(代理自充): AUG26-017 代理自充收款方式与线下预存款审批字段
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m52s
- 受控配置新增代理在线自充允许范围(仅微信/仅支付宝/同时支持),读侧与创建侧取允许范围与可用商户池交集,两侧失败关闭
- 新增允许范围查询与修改端点,读限代理与平台账号、写限超级管理员,复用受控配置写服务留痕
- tb_agent_recharge_record 新增交易流水号、线下收款方式三列快照与其他凭证列(成对迁移 000213)
- 线下申请校验启用的收款方式字典项与必填交易流水号,交易流水号独立于在线渠道交易号、不参与去重
- 扩展 offline_recharge_approval 场景可映射字段白名单与字典引用保护
- 新增付款凭证识别能力与交易流水号预填接口,识别不落库、日志不记录载荷
|
2026-09-11 15:21:23 +08:00 |
|
|
|
e687a266e6
|
补齐员工代收款账单能力证据链与可达操作索引
|
2026-09-11 15:20:21 +08:00 |
|
|
|
dc4e0d4103
|
归档支付商户池变更并同步主规格
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m25s
|
2026-09-10 12:03:28 +08:00 |
|
|
|
1e776da292
|
补齐上下文健康检查证据链
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m27s
|
2026-09-10 11:39:56 +08:00 |
|
|
|
a9e2302f7c
|
1
|
2026-09-10 10:53:07 +08:00 |
|
|
|
98c145fe70
|
实现支付商户池与微信授权配置
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 3m55s
新增收款商户、商户池轮询、微信授权配置独立管理;三类新支付
(C端套餐购买、C端资产钱包充值、代理在线预存款充值)无条件
经商户池选择并冻结路由,无旧综合配置回退。merchant_id 为空
历史支付继续按 payment_config_id 双读。凭证版本化加载与
ID+版本缓存保证轮换一致性。删除商户池新支付创建开关及全部
引用。
|
2026-09-09 18:13:04 +08:00 |
|
|
|
696120ab38
|
feat: 资产套餐历史增加主子层级查询
|
2026-09-07 17:17:15 +08:00 |
|
|
|
3a093ecd6b
|
清理
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m36s
|
2026-09-07 10:09:51 +08:00 |
|
|
|
370fd3e67f
|
update
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
|
2026-09-03 09:28:28 +08:00 |
|
|
|
5797fd0e94
|
修复企微兜底机制
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m40s
|
2026-08-20 18:06:45 +08:00 |
|
|
|
22b95db2f9
|
每日清理
|
2026-08-20 12:03:17 +08:00 |
|
|
|
46c8e819df
|
修改相关证据
|
2026-08-18 16:30:16 +08:00 |
|
|
|
d256f6d176
|
合并七月迭代分支
|
2026-08-18 14:53:29 +08:00 |
|
|
|
c8052df8eb
|
补充退款列表应当让本店铺的人看见
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
|
2026-08-18 11:44:30 +08:00 |
|
|
|
e134552ec5
|
更新
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m35s
|
2026-08-13 12:31:47 +08:00 |
|
|
|
79e2d9ff92
|
重置项目上下文与规范文档
|
2026-08-07 16:18:07 +08:00 |
|
|
|
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 |
|
|
|
a0de08d789
|
避免套餐过期后排队权益永久失联
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
线上保持现有纯 Asynq 架构,以公平孤儿扫描和提交后投递消除永久饥饿及事务可见性竞态。
Constraint: 线上保持现有纯 Asynq 架构,不引入 Outbox、迁移或新任务基础设施。
Rejected: 事务内投递或扩大扫描 LIMIT | 无法消除竞态和永久饥饿。
Confidence: high
Scope-risk: narrow
Directive: 后续分支整合时按目标分支的套餐接续架构独立处理,不混用本热修实现。
Tested: go build ./...(退出码 0);git diff --check;openspec validate fix-main-package-activation-starvation --strict。
Not-tested: 按用户要求未新增、修改或运行自动化测试;线上 SQL、查询计划和日志待部署后核验。
|
2026-08-03 09:58:05 +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 |
|
|
|
cf2ff0ac1c
|
避免续费报价缺失阻断资产详情
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m23s
Constraint: 代理渠道缺少套餐分配记录时不存在可信的当前续费价
Rejected: 回退平台价或历史成交价 | 会与实际下单校验和当前价格口径不一致
Confidence: high
Scope-risk: narrow
Directive: renewal_price 为 null 时前端不得展示价格或发起续费
Tested: go build ./internal/handler/app
Not-tested: 按用户要求未添加或运行测试
|
2026-07-30 17:14:28 +08:00 |
|
|
|
e2687de338
|
让 C 端在续费前展示当前应付价格
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m11s
Constraint: 续费展示价必须与当前销售渠道的生效零售价一致
Rejected: 新增专用续费报价接口 | 现有资产信息已承载续费入口上下文
Confidence: high
Scope-risk: narrow
Directive: 下单时仍须重新校验续费资格和最终价格
Tested: go build ./internal/handler/app
Not-tested: 按用户要求未添加或运行测试
|
2026-07-30 16:23:03 +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 |
|
|
|
1141167598
|
避免联通实名回调因内部长度限制永久失效
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m9s
将实名事件身份收敛为受 Outbox 上限约束的稳定摘要,并允许相同 CUCC 回调原子认领失败终态后重试。
Constraint: 运营商回调固定返回成功,公共 Outbox event_id 上限为 64 字符
Rejected: 扩大数据库字段 | 根因是不受控事件 ID,且无法解决旧 failed 回调被吞
Confidence: high
Scope-risk: moderate
Directive: 新增稳定事件 ID 时必须服从持久化长度上限;失败回调恢复必须使用条件更新原子认领
Tested: gofmt;git diff --cached --check
Not-tested: 按用户要求未运行自动化测试、构建或测试环境重放
|
2026-07-30 09:05:23 +08:00 |
|
|
|
c89291b362
|
支持客户按套餐类型缩小可购范围
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m13s
Constraint: 查询参数可选且仅接受 formal 或 addon
Rejected: 新增专用 Store 方法 | 现有 PackageStore.List 已支持 package_type 过滤
Confidence: high
Scope-risk: narrow
Directive: 套餐类型取值继续与 pkg/constants 保持一致
Tested: go run cmd/gendocs/main.go,确认 OpenAPI 生成 package_type 查询参数
Not-tested: 按用户要求未执行自动化测试
|
2026-07-29 17:00:40 +08:00 |
|
|
|
5ba227eff5
|
111
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m8s
|
2026-07-29 14:58:28 +08:00 |
|
|
|
eea19f2a5b
|
准备提案
|
2026-07-29 12:20:12 +08:00 |
|
|
|
dc080436bf
|
越权
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
|
2026-07-28 16:57:27 +08:00 |
|
|
|
1e4f998fe7
|
补充通知信息
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m11s
|
2026-07-28 16:14:20 +08:00 |
|
|
|
4b98612816
|
任务列表返回目标名称
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m1s
|
2026-07-28 16:03:42 +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 |
|
|
|
4aff9937e5
|
临时批量回收设备脚本
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 48s
|
2026-07-28 11:05:05 +08:00 |
|
|
|
178cc45bc2
|
批量收回功能
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m1s
|
2026-07-28 10:53:15 +08:00 |
|
|
|
7c5b6ee036
|
加上一个日志输出,看看回调内容
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m10s
|
2026-07-28 09:21:54 +08:00 |
|
|
|
d46ccbd319
|
补全一些接口
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m9s
|
2026-07-27 17:17:43 +08:00 |
|
|
|
072ec1db7e
|
修复企微的问题
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m15s
|
2026-07-27 17:04:32 +08:00 |
|
|
|
cbf909b878
|
代理在线充值
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
|
2026-07-27 16:02:55 +08:00 |
|
|
|
a2166c8011
|
不需要自动迁移
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m4s
|
2026-07-27 09:31:30 +08:00 |
|
|
|
09ffee8590
|
完成
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 7m30s
|
2026-07-25 19:06:31 +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 |
|