{"content":"assist-base-service 生产发布日志:payintent-20261115144904(merge e6b555e,2026-11-15)\n\n【本次发布内容】\n1. 支付订单跨渠道防重 + PWA/原生支付回跳(feat/payment-intent-dedup-return:1bf7dd3/5047c6b):购买意图门(订阅=identity+planId+period、充值=identity+packageId)——同渠道重试复用未付款单、切渠道 CAS 原子替换旧单为 replaced(5) 终态(替换前 alipay.trade.close 关旧 QR,旧 QR 已付款则直接入账回放)、已付款订单不可逆;PayPal capture guard 拦截 replaced;双渠道都扣款→tb_me_payment_incident 台账(admin /v1/admin/me/payment-incidents 人工核对,不二次入账/不自动退款);下单可选 clientForm(pwa|native)+returnTo(conf 白名单 fail-closed,拒开放重定向/CRLF/编码绕过);回跳页 /v1/traffic/payment/return 服务端解析订单状态 + 白名单返回按钮,URL 参数仅展示参考。\n2. 随合并带上并行会话增量:748df1e 全量 SQL 迁移幂等化(create-if-not-exists + assist_ensure_column/index 守卫过程)、ef07992 ME 计量/流量日上限默认关闭(20000000→0,按周额度治理)+ bonus lot 原位恢复、1e3f8ed gas-pool-monitor wget 回退、31c4cbe perf-jev-relay JEV 模板扩展与 X-Deadline-Ms 提前中止。\n3. 部署阻塞修复 d228acc:ef07992 的 bonus-lot 原位恢复遗漏 DAO 过滤器(tb_me_bonus_lot.state 即业务态,GetByLotNo 的 state=1 过滤令 exhausted lot 不可见)→ 任何耗尽 bonus lot 的冻结 Release/到期报 record not found、资金滞留。新增 GetByLotNoForRestore(事务内、无业务态过滤)修复,其自带集成测试干净库上 FAIL→PASS。\n\n【发布过程(SOP §5-§10)】\n- 合并:main --no-ff 至 e6b555e;推送 origin(SOCKS 代理,直连超时走老路)+ 宿主机 bare repo。\n- 迁移先行:全量幂等文件跑 assist_db(utf8mb4,nohup),中和 3 块大表 MODIFY(列已 longtext,information_schema 核实);验证通过:clientForm/returnTo 双表落列、tb_me_payment_incident 建表、意图索引、日上限 20000000→0。\n- 构建:release 克隆 HEAD=e6b555e 校验通过,一次构建成功(payintent-20261115144904),baked-conf 负检查 OK。\n- canary:17881 全绿(internal gas 3 池、llm/health healthy、v2 sponsor、me/plans、回跳页 200、未知单 legacy 版式、admin 台账 401 鉴权在位)。\n- 切换:stop -t 25 排空,v1.0 标签流转,conf bind-mount 在位,回滚容器 old-20261115144904(weeklycycle 镜像)保留。\n- 公网回归:回跳页公网 200(含 legacy 文案),v2 sponsor 200,容器日志 0 panic/fatal。\n\n【NOT RUN】真实扣款/退款(PayPal sandbox 真实下单+支付宝 sandbox 扫码、双渠道切换实测 replaced+台账路径)仍待受控验收;PWA 白名单需在 conf_pro.yaml 增加 traffic.payment_return.pwa_return_prefixes(当前未配置=returnTo 全拒,旧客户端不受影响)。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}