zhaoxing
|
13869d345f
|
feat(worker-platform): 商品名按来源追加可配置后缀
- 新增来源后缀配置(来源下拉、启停、备注,同一时间仅启用一个)
- 管理端列表/详情与打手端列表/详情/大厅展示「商品名(后缀)」
- 打手端 DTO 透出 sourceProvider,仅展示,不改写商品名
- 新增来源选项接口与前后端单测
|
2026-11-02 14:25:53 +08:00 |
|
zhaoxing
|
db73e8f820
|
refactor(collect): 移除旧补资料链接 token 体系
- 删除管理端生成补资料链接接口、链接仓储读写与 TTL 配置服务
- 删除补资料链接配置面板及前端相关服务、类型
- 新增迁移 113:删除 work_order_material_links 表与 work_order_material_link 配置
- 「复制补资料链接」改为本地复制 /supplement/<平台订单号>,不再请求后端
|
2026-11-01 18:26:07 +08:00 |
|
zhaoxing
|
15956e704f
|
feat(work-order): 新增一次性补资料链接
|
2026-11-01 10:46:31 +08:00 |
|
yml2213
|
72606796b3
|
feat(douyin-mashida): 抖音码速达最小接入后端(消息建单/券码同步/兑换核销/退款作废)
- 签名:出网 md5(secret+Σ(名+值)+secret) 与推送 md5(secret+data+pub_time+topic+secret)
两套独立实现,含文档 golden 向量单测(与 91 大写 / affiliate_dash HMAC 都不通用)
- 进单:trade_TradePaid 推送 → 验签 → webhook_events 幂等 → order.orderDetail
→ upsertOrderFromSource(provider=douyin_mashida / platform=doudian)
- 精度:19 位订单号超出 JS 安全整数,JSON.parse 会把 p_id 抹成 ...000;
故解析后从原始 JSON 文本用正则抓回精确数字(单测同时证明"不修会错")
- 券码:迁移 094 redeem_certificates((provider,order_id) 唯一做发券幂等)
+ DYC 券码生成 + coupons.syncV2 同步(子单号优先、父单兜底)
- 兑换:POST /api/v1/redeem/lookup|confirm,按 orderNo+IP 限流;
核销成功后 order.message 通知买家(best-effort,失败只记错误日志)
- 退款/取消:作废未核销券;券已核销时打 WARN 资损告警(已消费不可回滚)
- 后台:GET/POST /api/v1/admin/platform-config/douyin-mashida,
secret 出参置空 + 掩码,掩码回写不覆盖原值
- 消息路由挂在全局 body parser 之前(app.ts),验签必须用 body 原始字符串
|
2026-10-09 12:00:50 +08:00 |
|
yml2213
|
78c676d2b9
|
feat(worker-risk): 风控后台页面(可调阈值/实时状态/事件留痕/人工封禁解封),并修复解封后仍被 403 的 bug
## 修复的 bug(生产已发生)
风控三级封号把 tracker.banned 置为 true 后,banned 检查发生在鉴权之前,
而它只存在于进程内存。后台把账号改回 active 时数据库变了、内存没变,
于是账号在库里已经正常、请求却永远 403,只能等容器重启才恢复。
修法两道:
- **数据库是唯一事实来源**:banned 改为带 30 秒 TTL 的缓存,到点回查
worker_users.status;已解封(或账号已删)则清除标记并放行。
对被判 banned 的 key 最多每 30 秒查一次,即便对方仍以 65 QPS 刷也只是
每 30 秒一次查询。查询失败时**保守维持封禁**,不因数据库抖动放行刷子。
- **后台改状态时主动释放**:review 只允许设 active/rejected/disabled/pending_review
(没有 frozen),所以走到那里就意味着不再由风控冻结,直接释放内存状态。
顺带修掉一个连带缺陷:解封时只清了 violationCount,没清滑动窗口计数,
账号刚恢复就会被上一轮残留的 windowCount 立刻限流、并在 60 秒内二次封禁。
现在整轮窗口状态一并清零。
## 新增后台页面
接单平台 → 风控(/admin/worker-platform?tab=risk-control),三块:
- 阈值配置:6 个阈值可视化编辑,落 app_config_entries,保存即热生效,无需重启
- 当前实时风控:进程内存状态(已封禁/惩罚中/仅记录),支持人工解封、封禁、仅释放内存状态
- 风控事件留痕:worker_risk_events 分页查询,可按类型/IP 筛选
## 关键取舍
只记**显著事件**(二级惩罚、三级封号、人工处置),不记每一次被拒请求。
被刷时实测 45~65 QPS,按请求写库正是最初要解决的问题。实时计数仍走进程内存。
事件写入为 fire-and-forget 并吞异常,留痕失败绝不影响大厅请求。
## 验证
- 新增 6 个用例覆盖解封立即生效、对账自愈、TTL 不重复查库、对账失败保守维持、阈值可配置
- 迁移 089 已在临时库实测:表结构/4 索引/CHECK 约束/外键均正确,非法 event_type 被拒
- 后端 557 测试 554 通过 0 失败;前后端 typecheck/lint/format/build 全绿
|
2026-10-02 17:05:25 +08:00 |
|
 yml2213andCursor
|
b3aad0044c
|
refactor(fulfillment): 移除飞飞/乐玩通道,仅保留 affiliate_dash
新单只路由 affiliate_dash(未命中走 manual_dispatch);历史飞飞/乐玩任务保留只读 stub,避免订单重同步失败。同步清理 cloudtentacles 调度、Admin 写路径与相关 env。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-14 17:29:47 +08:00 |
|
yml2213
|
424c320183
|
feat(pdd): 原生内嵌拼多多多店铺订单同步子服务与anti-content纯算引擎
1. 纯算引擎 (pdd-anti-content.ts):
- 100% 纯 TypeScript 原生还原 0as anti-content 算法,零 npm 依赖(仅基于 Node.js 原生 zlib 与 crypto)。
- 包含 22 个环境特征 Tag TLV 组包、zlib 标准压缩、4 字节尾部扰动盐与 64 字符动态位移 Base64 编码,单次耗时 < 0.1ms。
2. MMS 接口客户端与数据映射 (pdd-client.ts, pdd-order-mapper.ts):
- 基于原生 fetch 实现高可用 MMS 请求,支持拼多多网关毫秒级服务器时间校准 (/api/server/_stm)。
- 实现拼多多订单状态与字段规范映射为平台 SourceOrderEvent,精准保留买家留言与充值账号信息。
3. 多店铺配置与防风控错峰调度 (pdd-source-config-service.ts, pdd-sync-service.ts):
- 支持多店铺账号配置持久化(PostgreSQL app_config_entries 与本地 JSON 双模兜底)。
- 实现店铺间轻量错峰拉取机制,避免并发峰值触发平台 40002 频控。
4. 内存级自动进单与派单流转:
- 拉取新订单后在 Node.js 内存中直接调用 upsertOrderFromSource(),自动完成 orders/order_items 入库、商品规则匹配与打手大厅工单 (work_orders) 实时广播。
5. 调度器与管理端 API (scheduler-service.ts, platform-config/pdd.ts):
- 注册 pdd_order_sync 定时任务(默认 20s 轮询),提供管理端店铺配置查看、保存、删除及手动立即同步接口。
- 所有新增代码均遵循中英双语注释规范,并通过类型检查与单元测试。
|
2026-09-12 14:12:11 +08:00 |
|
yml2213
|
15396822b5
|
本地Mock自定义店铺自动记忆沉淀为下拉可选项
|
2026-08-22 14:31:34 +08:00 |
|
yml2213
|
874b093a4b
|
新增大厅订单容量控制
|
2026-08-21 14:02:30 +08:00 |
|
yml2213
|
6539e0fb21
|
新增打手端滚动公告
|
2026-08-20 20:04:43 +08:00 |
|
yml2213
|
c2305d419e
|
关闭旧商品匹配默认回退
|
2026-08-18 13:50:56 +08:00 |
|
yml2213
|
5330b55b75
|
完善接单平台通知配置
|
2026-08-17 13:54:01 +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
|
6e635b2499
|
优化后端-接单平台部分逻辑
|
2026-07-28 14:06:31 +08:00 |
|
yml2213
|
3642ad8aec
|
配置改为数据库存储
将运行时 JSON 配置迁入 app_config_entries,启动时从文件导入并删除源文件。
|
2026-07-10 09:14:12 +08:00 |
|