Commit Graph
732 Commits
Author SHA1 Message Date
yml2213 7196752d44 失效号码清理下沉到刷新流程:所有触发路径(claim轮询/91交付/回收/后台)遇无权限号码统一清空绑定,不再反复打上游 2026-08-08 15:14:59 +08:00
yml2213 5a1c5a3759 回收遇无权限号码直接清空任务绑定不再重试:已手动退号的旧绑定一次性收敛,发货收尾视号码已释放 2026-08-08 14:59:23 +08:00
yml2213 2b3954d0e3 修复履约路由总开关关闭后仍回退默认配置自动发货:总开关关闭即停止自动履约 2026-08-08 14:56:28 +08:00
yml2213 23b3711e64 平台配置 kuaishou-lewan 调试区新增虚拟号列表查看与手动退号 2026-08-08 14:30:43 +08:00
yml2213 6d0534296c 修复取号账号与退号账号混用:操作已有号码严格锁定取号账号,禁止静默 fallback 到其他账号 2026-08-08 14:23:11 +08:00
yml2213 e1a0a74477 优化孤儿号码回收:权限不足重试3次后停止打上游,1小时后自动重置,health 摘要展示孤儿数量 2026-08-08 02:38:01 +08:00
yml2213 995de86322 修复 lewan 虚拟号配额被占满:过期绑定自动回收、退号失败不再追加取号、取号占满增加冷却 2026-08-08 02:15:13 +08:00
yml2213 84a4c6c627 修复 kuaishou-lewan 登录验证后未保存的新账号被服务端数据覆盖丢失 2026-08-08 02:02:31 +08:00
yml2213 3a2147e94b 优化 affiliate-dash 成功后绑定快照 2026-08-07 12:14:53 +08:00
yml2213 dc3fd63b04 修复 affiliate-dash 绑定状态一致性 2026-08-07 11:40:28 +08:00
yml2213 17acd65f28 修复 affiliate-dash 重复绑定与提交前校验:UID 未变复用绑定防重复生成二维码、提交前强制刷新绑定状态、UID 仅允许纯数字且限 15 位 2026-08-06 23:46:02 +08:00
yml2213 8756a196ae 移除 affiliate-dash 不更换二维码测试 2026-08-05 22:40:22 +08:00
yml2213 8e11d80496 修复 affiliate-dash 提交前绑定校验 2026-08-05 22:25:57 +08:00
yml2213 848f65319f 增加一个不更换二维码测试 2026-08-05 22:06:07 +08:00
yml2213 c91dd4d144 优化领取页绑定 UID 校验 2026-08-05 21:19:09 +08:00
yml2213 0deb498a05 修复 affiliate-dash 绑定不一致时仍显示第 3 步 + 更新 UID 后旧绑定信息残留
- 前端:标题/副文案改为 bound && !bindMismatch 才显示第 3 步,不一致时保持第 2 步并引导重新绑定
- 后端:bindAffiliateDashClaimForTask 重新绑定时清空 bound/boundAccount/bindMismatch,避免旧账号残留导致误报不一致
2026-08-05 20:50:03 +08:00
yml2213 0933b4514f affiliate-dash 绑定 UID 强制校验:绑定账号与第一步填写 UID 不一致时禁止提交
- bind 时记录 expectedGameAccount(第一步 UID 权威值)
- 轮询 bind-result 时本地对比 boundAccount 与 expectedGameAccount(去空白),不依赖平台 mismatch 字段
- submit 前实时拉 bind-result 二次校验,不一致 409 拒绝(前端无法绕过)
- 前端:bindMismatch 时不显示提交发货按钮,提示核对后重新绑定
- 拉取失败不阻塞轮询与提交(平台侧提交仍会校验)
2026-08-05 20:39:13 +08:00
yml2213 f455f853b1 affiliate-dash 结果页:移除渠道字段,结果时间改用 task.redeemedAt(原 flow.dispatch.dispatchAt 非本流程字段显示为空) 2026-08-05 20:24:16 +08:00
yml2213 541b458040 修复 affiliate-dash 提交成功(delivered)后结果页数秒后才显示成功
- syncAffiliateDashTaskStatus 新增 snapshotOnly:submit 拿到 delivered 后直接用本地快照收敛任务为 REDEEMED,不等平台回调(此前要等 delivered notify 落地,约 9 秒)
- 新增终态保护:已 REDEEMED/MANUAL_REVIEW/CLOSED/FAILED 的任务,非 delivered 状态不再降级(轮询时平台详情短暂返回 paid/delivering 会把成功任务打回 REDEEMING)
- submitAffiliateDashClaim:result.status=delivered 时重新读任务并 snapshotOnly 收敛
2026-08-05 20:20:10 +08:00
yml2213 e8eab6e689 fix(kuaishou-industry): 修复电子凭证发货回调并发导致 807000 获取并发锁失败
同一 oid 的发货回调可能被多个来源并发调度(内存重试链 timer、worker_scan
兜底扫描、快手重复推送 send-code 后的再次调度),快手侧对同一 oid 有并发锁,
并发请求会返回 807000「获取并发锁失败」。

- runKuaishouIndustrySendCallbackForOid 增加进程内 in-flight 互斥,
  正在执行时其它调度直接跳过,由当前执行链路决定成功或按 backoff 重试
  (try/finally 保证所有 return 路径释放)
- listKuaishouIndustryVouchersForSendCallbackRetry 增加 maxAttempts 参数
  及 SQL 条件 COALESCE(send_callback_attempt_count,0) < ,缩小扫描集
2026-08-05 20:05:43 +08:00
yml2213 4e9c416235 affiliate-dash 领取界面优化(合并多次迭代为一次提交)
- 第 2 步绑定页:移除金额/单号/商品信息区,移除标题上方 affiliate-dash 标签
- 二维码区参考旧设计:左右竖排红字 Q区用Q扫/V区用V扫,去浅蓝背景,放大至 220px
- 第 4 步结果页:废弃 canvas 生成发货成功图,改用旧版结果卡片(绿勾+兑换成功+信息网格+商品明细)
- 开发 Mock:新增 affiliate-dash 领取五步 mock(uid/bind/submitted/completed/failed,不调真实平台)
2026-08-05 19:39:15 +08:00
yml2213 316ee6d135 履约配置页 affiliate-dash 覆盖收尾:preferredMatchEnabled 开关补入平台配置 UI
- 分析结论:履约路由面板已含 affiliate_dash(开关/优先级/规则),职责划分成立
- 缺口修复:指定匹配优先开关此前无 UI 入口,现平台配置 affiliate-dash tab 增加 Switch
- 后端 effective 透出 preferredMatchEnabled;前端类型/panel 补齐
- 前后端 typecheck 通过,224 测试全绿
2026-08-05 17:52:14 +08:00
yml2213 5f5a1a8bcf 重构:affiliate-dash 平台配置从履约配置页移至平台配置页
- AdminPlatformShopsPage 新增 affiliateDash tab + AffiliateDashPlatformPanel(密钥/钱包/商品/映射/测试)
- AdminPlatformFulfillmentPage 移除 affiliate-dash tab 与组件
- 后端与 API 路径不变(本就挂 /platform-config),纯前端 UI 归位
- 前端 tsc -b 通过
2026-08-05 17:45:44 +08:00
yml2213 0f81380d9c 新增透传:91 编码与 affiliate_dash sku 一致时自动命中
- resolveAffiliateDashSkuByProductNo 改 async,匹配两级:①指定映射(skuMapping 归一命中) ②透传(productNo == affiliate_dash 商品 sku)
- 商品列表内存缓存 5 分钟,拉取失败返回上次缓存/空集合,匹配 miss 走其他通道不阻塞下单
- 两层命中均触发指定匹配最高优先(preferredExecutorKey)
- 测试 +3(224 全绿);线上验证 suit_alan_walker/suit_cloud_bear 透传命中,乱码回退
2026-08-05 17:40:13 +08:00
yml2213 769d41655a 优化履约匹配:指定匹配(91中文名→sku映射)最高优先 + 映射键归一化
- 91 商品编码全部为中文名(幸运币90个等),运营按中文名→affiliate_dash sku 配置显式映射
- resolveFulfillmentRoute 新增 preferredExecutorKey:映射命中强制优先(规则之前),停用/不可用回退原逻辑
- matchAffiliateDashSku 归一化:NFKC 全角→半角、去空白、小写,先精确再遍历
- preferredMatchEnabled 配置(默认 true,可一键回退,不耽误现有 cloud/feifei 生产)
- 测试 +9(221 全绿);行为验证:映射命中/全角/空格命中,未映射回退
2026-08-05 16:44:37 +08:00
yml2213 5f5506bb19 docs: 履约匹配逻辑深度分析(§21 痛点 P1-P8 + 优化建议分档)
- 匹配链路全貌:91 item → 三路匹配 → 路由(规则/优先级/manual_review) → planner 动态 profile
- 8 个痛点:P1 精确映射排在名字模糊匹配之后(可信度倒挂)、P2 productNo 未拆 ---- 后缀、P3 映射键无归一化、P4 缺名字兜底、P5 余额不参与路由、P6 双轨配置冲突、P7 重复计算、P8 命名语义误导
- 优化建议分档:快赢档 P1-P3 / 中档 P4 / 后档 P5-P8;按用户指示先分析不改代码
2026-08-05 16:14:35 +08:00
yml2213 7fc3d60588 新增 affiliate_dash 回调路由与幂等去重(阶段 5)
- POST /api/v1/open/affiliate-dash:验签 → 查任务(404 重试) → webhook_events 幂等闸门 → 状态同步
- migration 013:webhook_events(provider+event_id 唯一)
- task-repo findAffiliateDashTaskByOrder(仿 feifei 同构 SQL)
- notify-service:去重闸门在找到任务之后,任务未匹配不被 eventId 永久拦截
- typecheck + 212 测试通过;前置错误分支脚本验证通过
2026-08-05 16:07:33 +08:00
yml2213 00d490a2cd 优化 affiliate_dash 核销时机:建单成功即核销(参考 feifei 给用户链接即核销)
- prepareAffiliateDashTask 建单成功(91 卡信息到手、链接可发放)立即核销行业电子凭证
- 核销失败不阻塞下单与链接发放(consumeStatus=failed, delivered 回调兜底补核销)
- sync delivered 分支 alreadyConsumed 短路,避免重复核销
- typecheck + 212 测试通过
2026-08-05 16:02:44 +08:00
yml2213 5ef1ed6018 新增 affiliate_dash 统一领取页流程(阶段 4)
- 后端:claim 详情分流 affiliate_dash 分支 + 详情轮询刷新 bind-result
- 输 UID 触发 bind(拿 bindUuid/二维码, task→waiting_binding)
- 新增 POST /claim/:token/affiliate-dash/submit(submit→redeeming + 事件)
- 前端:ClaimAffiliateDashSteps(二维码/绑定状态/mismatch警告/提交发货)
- claim-snapshot/claim-poll 按 flowType 分流(step2 绑定中/step3 已绑定待提交/step4 结果)
- 前后端 typecheck + 后端 212 测试通过
2026-08-05 15:56:51 +08:00
yml2213 3284fed7a1 新增 affiliate_dash 履约配置与商品映射(阶段 3)
- bootstrap CORE_PROFILES + routing ROUTABLE/DEFAULT_PRIORITY 接入 affiliate_dash
- planner 上下文 affiliateDash 块 + resolveDynamicAffiliateDashProfile
- product-resolution: 91 productNo→sku 映射匹配(skuMapping) + snapshot.affiliateDash
- prepare 前余额预检(getAffiliateDashWallet)
- AFFILIATE_DASH_SKU_MAPPING_JSON env 注入
- admin 后端接口(GET/POST 配置、match、products、wallet)+ 前端 Tabs 面板
- 联调:模拟 91 进单命中 affiliate_dash 路由, 未命中回退;前后端 typecheck + 212 测试通过
2026-08-05 15:08:41 +08:00
yml2213 867ffd2f3c 新增 affiliate_dash 履约 executor(阶段 2)
- executor 常量/守卫 + affiliate-dash-executor(preparePaidTask/resolveDeliveryLink)
- 履约业务实现:prepareAffiliateDashTask(幂等建单, client_order_no=task_no, data 透传 91单号/game_account)
  + syncAffiliateDashTaskStatus(状态合并: delivering→redeeming / delivered→核销→redeemed /
  ship_failed→retry_pending / cancelled→closed)
- registry 注册 + 测试(212 全绿)
- 真实建单联调通过(线上 skin.khhao.com,幂等不重复扣款)
- 修复 POST /orders 响应 data.order 映射层级
2026-08-05 14:56:36 +08:00
yml2213 a6ba5f1c7f 新增 affiliate_dash 发货平台客户端与签名(阶段 1)
- 平台配置接入:runtime-config/types/defaults/env-overrides/app-config-keys 增加 affiliateDash
- affiliate-dash 平台客户端:请求签名(§3.1 app_key+body_sha256)、回调验签(§3.2 timingSafeEqual)、
  http-client 封装(超时/错误归一/全链路日志)、订单/交付/钱包/商品接口封装
- 单测 12/12 + 全量 211 通过,真实联调拉取线上商品 33 个验证签名链路
- 新增 affiliate_dash 对接文档 v2(含契约验证结论与深度分析)
2026-08-05 14:51:40 +08:00
yml2213 784459232d 修复部署脚本 COMPOSE_PROFILES 跳过 MinIO 不生效的问题
- 仅在未设置 COMPOSE_PROFILES 时默认激活 storage profile,避免覆盖环境变量空值
- ensure_docker 改为按数组长度判断,移除恒为 false 的死代码
- start_minio 按 profile 值匹配,避免将来新增 profile 时误判
2026-08-05 12:36:16 +08:00
yml2213 d9c329e644 Merge remote-tracking branch 'origin/main' into dev 2026-08-05 11:29:00 +08:00
yml2213 4bd2c174c5 快手发码数据接入发单平台工单侧
- 新增 sync-work-orders-from-send-code 服务:91 先到则回填 shopId/补建工单/凭证回填 material_json;91 未到则兜底建单建工单
- order-service 与 ninetyone order-service 改用 findLatestOrderByPlatformOrderId,放宽 shopId 查重避免重复建单
- work-order-repo 新增 listWorkOrdersByPlatformOrderId 供兜底查重
- send-code-service 挂接同步逻辑并吞错,不影响发码主流程
- ProductRulesPanel 新增店铺列
- .gitignore 忽略 send_code/ 与 .reasonix/
2026-08-05 11:22:24 +08:00
yml2213 1dd92ec10c 统一登录页品牌样式 2026-08-02 16:59:26 +08:00
yml2213 40885c39b7 优化接单登录页设计 2026-08-02 16:55:52 +08:00
yml2213 2227cda73d 修复打手短信验证码发送 2026-08-02 15:12:02 +08:00
yml2213 e0e4f71830 Caddyfile 增加 live.khhao.com 反代 douyu-login 2026-08-02 11:43:55 +08:00
yml2213 f839429261 快手发码通知采集到独立日志文件,修复 integration 日志阈值问题 2026-08-02 11:43:22 +08:00
yml2213 c138d75d8e 快手发码通知采集到独立日志文件,修复 integration 日志阈值问题 2026-08-02 11:43:17 +08:00
yml2213 c9195c623d 优化打手端我的订单与个人中心界面布局 2026-08-02 10:32:51 +08:00
yml2213 93df3d1c9b 押金解冻天数可配置与待解冻押金扣减,超时订单保留记录 2026-08-02 10:14:05 +08:00
yml2213 043dd3c128 优化readme 2026-08-02 08:38:35 +08:00
yml2213 9c0d43535e Merge remote-tracking branch 'origin/main' into dev 2026-08-01 19:27:19 +08:00
yml2213 fdd4842c1f 接单平台记住上次选中的功能标签页 2026-08-01 19:24:35 +08:00
yml2213 3650526863 超时订单按打手统计,抢单大厅标注限时任务 2026-08-01 19:18:20 +08:00
yml2213 23ad60a1ef 接单工单支持任务时限,超时自动判定失败并处置 2026-08-01 19:02:57 +08:00
yml2213 66193c5d59 图片上传支持粘贴剪贴板与拖拽上传 2026-08-01 18:40:51 +08:00
yml2213 de33bfa74c 接单工单支持编辑与删除,修复编辑押金不生效问题 2026-08-01 18:35:12 +08:00