From ccb5b6f4d62dadf1b7b2b3a4b201503819657827 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 17 Sep 2026 16:57:27 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B8=85=E7=90=86=E8=BF=87=E6=97=B6?= =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=88=E4=BB=A5=E4=BB=A3=E7=A0=81=E4=B8=BA?= =?UTF-8?q?=E5=87=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除(整篇已被代码淘汰 / 重复副本 / 与仓库无关): - cloudflared_tunnel.txt:全仓无 cloudflared 配置,个人终端记录,无任何引用 - 履约配置/工程债-lewan拆分与短链.md:文中 services/kuaishou-cloud 与 kuaishou-cloud-executor 已删除 - 履约配置/快手Cloud领取mock.md:mock:claim / mock:feifei 与 dev-mock 卡片已移除(只剩 mock:open91) - 行业电子凭证/解决方案/技术方案/1.基础技术.md(+ 其孤立 image.png):0.基础技术.md 的 75 行截断副本 - 寄卖库存功能设计与实施方案.md:手工入库已 409 停用、收集链接表已随 079 删除、统计看板未实现 - 服务器图片迁移到阿里云OSS.md:MinIO→OSS 迁移已完成(生产 STORAGE_MODE=oss) - pgBackRest备份方案分析.md:全仓无 pgBackRest 落地痕迹,文档自述暂缓实施 - finance-implementation-plan.md:财务模块已落地(072 迁移 / RBAC / 页面接口),已实现部分与代码重复 (未落地的二期三期路线图可从本提交的历史版本取回) 改写为与代码一致(已下线通道不再当作现行能力): - 履约配置/多发货平台与电子凭证整体链路.md:kuaishou-cloud / kuaishou-feifei 标注为已下线 legacy stub, 现行自动通道 affiliate-dash、人工 manual_dispatch;核销时机与券表按实现校正 - 履约配置/{UID领取与旧单兼容, open91请求, TypeScript类型收紧}.md:lewan/feifei/cloudtentacles 表述改为 现行 affiliate-dash 链路;normalize 具名类型 KuaishouCloudFlow/FeifeiFlow → AffiliateDashFlow - affiliate_dash_发货平台/affiliate-dash对接.md:§13/§14/§19/§21/§24/§25 的已删文件与已下线通道引用校正, §21/§22 加「当时快照 / 落地后现状」横幅,回调去重表按 013_affiliate_dash_webhook_events.sql 改写 - 91卡券/{3.异步卡密下单, 5.当前项目对接配置, 6.开发设计}.md:删掉不存在的后台入口、 cloudtentacles/kuaishou_ct_assisted 依赖、cardsEncoding 与 .js 代码落点校正 - 行业电子凭证/技术方案.md:checklist 指向不存在的 测试用例.md → gen-test-cases.ts + 5.测试指南.md - 履约配置/cloudtentacles发货平台.md:补「本仓库未接入该通道」说明(保持外部参考) - 部署启动与数据库重建.md:补齐生产必需变量 APP_DOMAIN / CORS_ALLOWED_ORIGINS / STORAGE_MODE / STORAGE_OSS_* 其它: - README.md:迁移序号范围 002~009 → 002~080 - 寄卖系统迁移079上库前检查.sql:第 2 段注释按批次 Y 的自动去重更新;新增 2.1「重复退款风险」只读排查 (已在一次性 PostgreSQL 16 上跑通 001→080 迁移:整份脚本 exit=0,脏数据下 2/2.1 均按预期报警) - 寄卖系统优化方案.md:删掉链路图里已下线的「客服手工录入」,去掉指向已删设计稿的引用 --- README.md | 2 +- .../affiliate-dash对接.md | 24 +- docs/91卡券/3.异步卡密下单.md | 2 +- docs/91卡券/5.当前项目对接配置.md | 28 +- docs/91卡券/6.开发设计.md | 55 ++-- docs/cloudflared_tunnel.txt | 63 ---- docs/finance-implementation-plan.md | 75 ----- docs/pgBackRest备份方案分析.md | 192 ------------ docs/寄卖库存功能设计与实施方案.md | 273 ------------------ docs/寄卖系统优化方案.md | 4 +- docs/寄卖系统迁移079上库前检查.sql | 58 +++- docs/履约配置/TypeScript类型收紧.md | 2 +- docs/履约配置/UID领取与旧单兼容.md | 6 +- docs/履约配置/cloudtentacles发货平台.md | 3 + docs/履约配置/open91请求.md | 2 +- docs/履约配置/多发货平台与电子凭证整体链路.md | 185 ++++++------ docs/履约配置/工程债-lewan拆分与短链.md | 53 ---- docs/履约配置/快手Cloud领取mock.md | 61 ---- docs/服务器图片迁移到阿里云OSS.md | 71 ----- docs/行业电子凭证/技术方案.md | 2 +- .../解决方案/技术方案/1.基础技术.md | 76 ----- docs/行业电子凭证/解决方案/技术方案/image.png | Bin 299536 -> 0 bytes docs/部署启动与数据库重建.md | 10 + 23 files changed, 231 insertions(+), 1016 deletions(-) delete mode 100644 docs/cloudflared_tunnel.txt delete mode 100644 docs/finance-implementation-plan.md delete mode 100644 docs/pgBackRest备份方案分析.md delete mode 100644 docs/寄卖库存功能设计与实施方案.md delete mode 100644 docs/履约配置/工程债-lewan拆分与短链.md delete mode 100644 docs/履约配置/快手Cloud领取mock.md delete mode 100644 docs/服务器图片迁移到阿里云OSS.md delete mode 100644 docs/行业电子凭证/解决方案/技术方案/1.基础技术.md delete mode 100644 docs/行业电子凭证/解决方案/技术方案/image.png diff --git a/README.md b/README.md index 6547b669..652aaaa4 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ SKIP_CHECKS=1 git push | 文件 | 含义 | | --- | --- | | `001_init.sql` | 空库基线,建立完整业务结构 | -| `002_xxx.sql` ~ `009_xxx.sql` | 后续结构变更的增量 SQL(含接单平台 004~009) | +| `002_xxx.sql` ~ `080_xxx.sql` | 后续结构变更的增量 SQL(接单平台 004~009,寄卖相关 077~080) | 约定: diff --git a/docs/ affiliate_dash_发货平台/affiliate-dash对接.md b/docs/ affiliate_dash_发货平台/affiliate-dash对接.md index 756c297e..89564dde 100644 --- a/docs/ affiliate_dash_发货平台/affiliate-dash对接.md +++ b/docs/ affiliate_dash_发货平台/affiliate-dash对接.md @@ -19,7 +19,7 @@ order_site 在 affiliate_dash 开通一个商户账号 + API 客户端,下单 | **order_site** | 91 进单、商品匹配、履约任务、统一领取页、玩家信息收集、回调接收、电子凭证核销、人工兜底 | 不直接对接皮肤源头;不管理 affiliate_dash 钱包 | | **affiliate_dash** | 商户建单扣款、发货数据查询、绑定、对源头履约、回调推送 | 不接触 91 卡券,不生成 order_site 的 claimUrl | -> 对接方式与现有 `kuaishou-feifei` 执行器同构:order_site 新增一个 `affiliate_dash` executor,复用一个 `preparePaidTask` + `resolveDeliveryLink`,对外仍然只返回本站统一领取链接。 +> 对接方式沿用既有 executor 模式(`preparePaidTask` + `resolveDeliveryLink`):order_site 新增一个 `affiliate_dash` executor,对外仍然只返回本站统一领取链接。历史上 `kuaishou-feifei` / `kuaishou-cloud` 也走该模式,现已下线,只保留只读 legacy stub(`services/fulfillment/executors/legacy-retired-executor.ts`)。 --- @@ -343,8 +343,8 @@ order_site 处理要求: ## 13. 参考代码位置 -- order_site executor 模式:`apps/backend/src/services/fulfillment/executors/kuaishou-feifei-executor.ts`(最接近,同为「建单 + 统一领取链接」)、`registry.ts`(注册)、`types.ts`(接口定义) -- order_site 平台对接样例:`apps/backend/src/services/platforms/kuaishou-feifei/` +- order_site executor 模式:`apps/backend/src/services/fulfillment/executors/affiliate-dash-executor.ts`(现行唯一自动履约 executor,「建单 + 统一领取链接」)、`registry.ts`(注册)、`types.ts`(接口定义);`kuaishou-feifei-executor.ts` 已随通道下线删除,历史通道在 `registry.ts:18-19` 映射到 `legacy-retired-executor.ts`(只读 stub) +- order_site 平台对接样例:`apps/backend/src/services/platforms/affiliate-dash/`(旧 `services/platforms/kuaishou-feifei/` 已删除) - order_site 履约配置:`apps/backend/src/repositories/fulfillment-profile-repo.ts`、`apps/backend/src/routes/admin/platform-config/fulfillment-routing.ts` - affiliate_dash 接口契约(在线文档/字段定义):`frontend/src/openapi/endpoints.ts`;鉴权实现:`backend/internal/middleware/open_auth.go`(商户侧)、`backend/internal/service/callback.go`(回调签名 `BuildCallbackSign`) @@ -372,9 +372,9 @@ order_site 处理要求: ### 14.2 order_site 落地要点 - **client_order_no 优先用平台订单号**:单笔任务直接使用订单号;拆单使用 `订单号-序号`,均在 affiliate-dash 的 64 字符限制内。订单和任务集合创建后保持稳定,因此 `preparePaidTask` 失败重试会重放同一个幂等单号。 -- **preparePaidTask 同步拿到 order_no**(201 响应即含),写入 `context_json.affiliateDash.orderNo`;无需等回调。失败必须降级 `MANUAL_REVIEW` + `deps.notifyTaskAutoManualReview`(范式:kuaishou-feifei-executor.ts:36-51)。 +- **preparePaidTask 同步拿到 order_no**(201 响应即含),写入 `context_json.affiliateDash.orderNo`;无需等回调。失败必须降级 `MANUAL_REVIEW` + `deps.notifyTaskAutoManualReview`(范式:`services/fulfillment/executors/affiliate-dash-executor.ts:18-53`)。 - **状态迁移路径**:见 §8 注 —— 领取页打开 `link_generated → claimed`,绑定 `→ waiting_binding`,submit 成功/回调 delivering `→ redeeming`,delivered `→ redeemed`(+核销),ship_failed `→ retry_pending`,cancelled `→ manual_review → closed`。 -- **回调幂等**:affiliate_dash 投递带 `X-Event-ID`,order_site 现无独立去重表 —— 建议 migration `013_affiliate_dash.sql` 新建 `webhook_events(event_id UNIQUE)` 去重表;事件处理用**状态合并式更新**(仿 `syncKuaishouFeifeiTaskStatus`,重复通知可重入)。接收方注意 `app.ts:31-38` 的 `express.json` 已保存 `req.rawBody`(验签必需),挂载回调路由时确认 rawBody 可用。 +- **回调幂等**:affiliate_dash 投递带 `X-Event-ID`,去重表已落地——migration `013_affiliate_dash_webhook_events.sql` 建 `webhook_events` 表并加 `(provider, event_id)` 唯一索引,写入见 `apps/backend/src/repositories/webhook-event-repo.ts:20`,过期清理见 `services/scheduler/data-retention-job.ts:42`;事件处理用**状态合并式更新**(`syncAffiliateDashTaskStatus`,重复通知可重入)。接收方注意 `app.ts:31-38` 的 `express.json` 已保存 `req.rawBody`(验签必需),挂载回调路由时确认 rawBody 可用。 - **核销联动**:`delivered` 回调 → 复用 `consumeKuaishouIndustryVouchersForTask`(`platforms/kuaishou-industry/voucher-service.ts:143`),成功 → `redeemed/completed`,失败 → `manual_review`。 - **领取页分发**:`flowType` 扩展 `'affiliate_dash'`;`buildClaimDetailPayload`(`services/claim/kuaishou-cloud-claim-context.ts:89-92`)按 executor_key 增加分支,返回 affiliate_dash 专用 payload(商品/预期账号/当前状态/二维码相关);前端 `ClaimPage.tsx:337-373` 增加渲染分支。 @@ -385,7 +385,7 @@ order_site 处理要求: | # | 文件 | 改动 | |---|------|------| | 1 | `services/fulfillment/executors/types.ts` | `FULFILLMENT_EXECUTOR_KEYS` 加 `AFFILIATE_DASH`;按需加 `isAffiliateDashExecutor` 守卫 | -| 2 | `services/fulfillment/executors/affiliate-dash-executor.ts`(新) | 仿 kuaishou-feifei-executor.ts:`{ key, preparePaidTask, resolveDeliveryLink }` | +| 2 | `services/fulfillment/executors/affiliate-dash-executor.ts`(新) | 实现 `{ key, preparePaidTask, resolveDeliveryLink }`(`kuaishou-feifei-executor.ts` 已随通道下线删除) | | 3 | `services/fulfillment/executors/registry.ts` | `EXECUTORS` Map 注册 | | 4 | `services/fulfillment/affiliate-dash/index.ts`(新) | 业务实现:prepare / sync 状态合并 + flow normalize | | 5 | `services/platforms/affiliate-dash/`(新) | `config.ts` + `http-client.ts`(签名 §3.1 + 请求封装 + 超时)+ `order-service.ts` + `notify-service.ts`(验签,`timingSafeEqual` 模式) | @@ -528,7 +528,7 @@ order_site 处理要求: ## 19. 核销时机优化(v2.4.1 · 已完成) -**需求**:核销时机从「delivered 回调」提前到「给用户链接(91 卡信息到手、建单成功)」——参考 kuaishou-feifei 的「给用户链接即核销」模式。 +**需求**:核销时机从「delivered 回调」提前到「给用户链接(91 卡信息到手、建单成功)」——affiliate-dash 的现行实现即按此模式(kuaishou-feifei 的「给用户链接即核销」模式已由 affiliate-dash 承接)。 **改动**(`apps/backend/src/services/fulfillment/affiliate-dash/index.ts`): @@ -564,6 +564,8 @@ order_site 处理要求: ## 21. 履约匹配逻辑深度分析(v2.6) +> ⚠ **本节是 2026-07 当时的分析快照**:文中「cloudtentacles / feifei / affiliate_dash 三平台按商品名匹配、按全局优先级选择」已不成立——cloudtentacles 与 kuaishou-cloud / kuaishou-feifei 通道均已下线,现行可路由通道只有 `affiliate_dash` 与 `manual_dispatch`,`DEFAULT_EXECUTOR_PRIORITY = [affiliate_dash]`(`services/fulfillment/routing-config-service.ts:64-69`)。保留本节作为当时的决策记录。 + ### 21.1 匹配链路全貌 ``` @@ -617,6 +619,8 @@ order_site 处理要求: ## 22. 履约匹配优化实施(v2.7 · 已完成) +> ⚠ **落地后的现状(2026-09)**:§22.1 第 2 条写的「默认优先级 cloud → feifei → affiliate_dash」已过时。现行可路由通道只有 `affiliate_dash` 与 `manual_dispatch`,`DEFAULT_EXECUTOR_PRIORITY = [affiliate_dash]`(`apps/backend/src/services/fulfillment/routing-config-service.ts:64-69`);cloudtentacles 与 kuaishou-cloud/feifei 通道均已下线(`executors/registry.ts:18-19` 映射到 `legacy-retired-executor.ts` 只读 stub)。 + **背景确认**:91 商品编码全部为**中文名**(如「幸运币90个」「星际漫游服装礼包」),无独立编码体系;运营按「中文名 → affiliate_dash sku」配置显式映射表(33 条,见 §22.3)。 ### 22.1 匹配策略(两级) @@ -707,8 +711,8 @@ order_site 处理要求: | `AdminPlatformFulfillmentPage.tsx` | 移除 affiliate-dash tab、`AffiliateDashFulfillmentPanel` 组件及全部 affiliate 相关 import/类型 | **页面归属**: -- **平台配置**(`AdminPlatformShopsPage`):affiliate-dash、kuaishou-feifei、kuaishou-lewan、行业电子凭证、内部通知 —— 平台接入凭据 -- **履约配置**(`AdminPlatformFulfillmentPage`):履约路由、kuaishou-feifei 履约、kuaishou-lewan 履约 —— 通道路由与履约参数 +- **平台配置**(`AdminPlatformShopsPage`):内部通知、行业电子凭证、affiliate-dash、拼多多 (PDD) —— 平台接入凭据 +- **履约配置**(`AdminPlatformFulfillmentPage`):履约路由(affiliate_dash / manual_dispatch 通道开关 + 优先级 + 商品规则) —— 通道路由与履约参数 **验证**:前端 `tsc -b --noEmit` 通过;后端未改动。 @@ -749,7 +753,7 @@ order_site 处理要求: | 第 3 步(确认并提交发货) | 移除信息区(含三项),仅保留已绑定提示 + 提交按钮 | | 第 4 步(结果页) | 移除信息区(领取商品/单号/订单状态/发货状态/金额全部移除),仅保留结果标题 + 描述 | -**实现**:`ClaimAffiliateDashSteps.tsx` —— `AffiliateDashClaimPanel` 移除 `onOpenBindUrl` prop 与按钮、info grid 精简为三项且仅在未绑定(第 2 步)显示;`AffiliateDashResultStep` 移除 info grid;`ClaimPage.tsx` 同步移除 `onOpenBindUrl` 传参(`openBindUrl` 函数保留,lewan 仍用)。 +**实现**:`ClaimAffiliateDashSteps.tsx` —— `AffiliateDashClaimPanel` 移除 `onOpenBindUrl` prop 与按钮、info grid 精简为三项且仅在未绑定(第 2 步)显示;`AffiliateDashResultStep` 移除 info grid;`ClaimPage.tsx` 同步移除 `onOpenBindUrl` 传参(`openBindUrl` 相关代码已随后续通道下线一并删除,全库已无该符号)。 **附带修复**:`product-resolution-service.ts` 透传拉取失败 warn 日志补 `logIntegration` import(上一轮遗漏导致后端 typecheck 报错)。 diff --git a/docs/91卡券/3.异步卡密下单.md b/docs/91卡券/3.异步卡密下单.md index f1fbb30e..882876d1 100644 --- a/docs/91卡券/3.异步卡密下单.md +++ b/docs/91卡券/3.异步卡密下单.md @@ -94,7 +94,7 @@ your_secret_keybuyNum=1&callbackUrl=https://cb.example.com/notify/91/order&maxAm 1. 校验签名与时间戳; 2. 按 `orderNo` 做幂等; 3. 将订单作为 `91卡券` 来源订单写入当前项目; -4. 若 `productNo` 已映射到快手 Cloud 履约商品,则创建履约任务; +4. 若 `productNo` 已映射到 affiliate-dash 履约商品,则创建履约任务; 5. 若 `productNo` 尚未配置,则订单进入后台“待补全”队列,由运营补齐履约配置后重试生成任务; 6. 若传入 `maxAmount`,则校验成本是否超限; 7. 履约任务生成后,生成当前项目领取链接,例如:`https://你的域名/#/claim/{token}`; diff --git a/docs/91卡券/5.当前项目对接配置.md b/docs/91卡券/5.当前项目对接配置.md index 1abe1d65..10508901 100644 --- a/docs/91卡券/5.当前项目对接配置.md +++ b/docs/91卡券/5.当前项目对接配置.md @@ -59,7 +59,7 @@ https://你的域名/api/v1/open/91 | 91字段 | 当前项目用途 | 说明 | | --- | --- | --- | | `orderNo` | 外部订单号 / 幂等键 | 建议映射为内部 `platformOrderId` | -| `productNo` | 商品和店铺映射 | 默认按商品名匹配 cloudtentacles 商品;可用 `商品名----店铺编号` 携带快手小店 `shopId` | +| `productNo` | 商品和店铺映射 | 默认按商品名匹配 affiliate-dash 商品;可用 `商品名----店铺编号` 携带快手小店 `shopId` | | `buyNum` | 购买数量 | 生成对应数量的履约任务 | | `maxAmount` | 成本上限校验 | 可选,超限返回失败 | | `callbackUrl` | 备用回调地址 | 先保留,不作为主流程依赖 | @@ -67,18 +67,18 @@ https://你的域名/api/v1/open/91 | `version` | 版本 | 固定 `1.0` | | `sign` | 验签 | 必填 | -### 5.2 当前项目内部建议映射 +### 5.2 当前项目内部映射(现状) -建议新增一个独立来源: +代码中已按独立来源落地: - `provider = '91kaquan'` - `platform = 'kuaishou'` +- `shopId = '91kaquan'`、`shopName = '91卡券'`(默认取 `platforms.ninetyone.shopId / shopName`) -商品绑定建议: +商品绑定现状: -- `productNo` 对应当前项目内部 `skuCode` -- 再由现有快手履约配置,匹配到 `kuaishou_ct_assisted` 履约链路 -- 若 `productNo` 暂未配置,订单会先进入后台“91卡券待补全订单”队列,不直接丢弃。 +- `productNo`(`商品名----店铺编号` 时取前半段作商品名)经 affiliate-dash 的 SKU 映射表(中文商品名 -> 英文 sku)匹配,未命中时再做 sku 透传兜底,命中后走 affiliate-dash 履约链路; +- 若 `productNo` 暂未命中映射,订单先以 `order_status = 'pending_config'` 落库为待补全订单,不直接丢弃;可通过后台管理接口 `/api/v1/admin/platform-config/ninetyone/orders` 查看与重试。 ## 6. 异步下单接口配置 @@ -289,18 +289,20 @@ Content-Type: application/json;charset=utf-8 建议在你方给 91 的商品配置中约定: -- `productNo`:对应当前项目内部的快手履约 SKU +- `productNo`:对应当前项目内部的快手履约商品名(会经 affiliate-dash SKU 映射表转成英文 sku) - 商品名称:明确标注“自动发链接” - 发货类型:异步卡密 - 买家收到内容:领取链接 -后台补全路径: +后台补全路径(当前实现): -1. 进入“平台配置 -> 91卡券接入”查看待补全订单; -2. 根据订单中的 `productNo` 到“履约配置中心 -> 快手 Cloud 新履约”新增或补齐规则; -3. 规则保存后回到“91卡券接入”,点击“重试生成任务”; +1. 未命中 affiliate-dash SKU 映射的订单会以 `order_status = 'pending_config'` 落库; +2. 查询待补全订单:`GET /api/v1/admin/platform-config/ninetyone/orders`; +3. 补齐该 `productNo` 的 affiliate-dash SKU 映射后,调用 `POST /api/v1/admin/platform-config/ninetyone/orders/:id/retry` 重试生成任务(也可调用 `.../:id/fail` 标记无法履约); 4. 任务生成后,查询接口会在领取链接准备好时返回 `orderStatus = 20`。 +说明:前端「平台配置」页当前只有 `notifications / kuaishouIndustry / affiliateDash / pdd` 四个 tab,尚无 91 卡券专属页面;上述接口需直接调用。 + ## 12. 对接方需确认的固定项 发给 `91卡券` 客服/对接方时,建议一次性确认以下配置: @@ -322,4 +324,4 @@ Content-Type: application/json;charset=utf-8 - `claimUrl` 作为最终卡密内容,通过 `cards.cardNo` 返回; - 所有快手专属引导和后续交互,都留在当前项目领取页中完成。 -这样对当前项目改动最小,也最符合现在快手 Cloud 履约链路的设计。 +这样对当前项目改动最小,也最符合现在 affiliate-dash 履约链路的设计。 diff --git a/docs/91卡券/6.开发设计.md b/docs/91卡券/6.开发设计.md index 06057b9e..949b34af 100644 --- a/docs/91卡券/6.开发设计.md +++ b/docs/91卡券/6.开发设计.md @@ -11,7 +11,7 @@ 1. `91卡券` 调用我方异步下单接口; 2. 我方将订单作为独立接入平台订单写入当前项目; -3. 已配置商品自动走现有快手 Cloud 履约链路; +3. 已配置商品自动走现有 affiliate-dash 履约链路; 4. 未配置商品进入后台待补全队列,可手动补齐履约信息后重试; 5. 我方生成领取链接 `https://你的域名/#/claim/{token}`; 6. `91卡券` 调用查询订单接口; @@ -93,7 +93,7 @@ platforms: { shopId: '91kaquan', shopName: '91卡券', timestampToleranceSeconds: 600, - cardsEncoding: 'base64json' + cardsEncoding: 'aes-256-ecb-base64' } } ``` @@ -155,10 +155,10 @@ platforms: { 这样可直接复用现有: -- 91 商品名到 cloudtentacles 商品名的匹配; -- cloudtentacles 覆盖规则(套装、多数量发货); -- 快手 Cloud task 创建; -- claim token 生成。 +- 91 商品名到 affiliate-dash sku 的匹配(`resolveAffiliateDashSkuByProductNo`,含 sku 透传兜底); +- affiliate-dash 履约 task 创建; +- 按数量拆 task(`delivery-task-service.ts` 按 `unit_index` 为每个数量各建一个 task); +- claim token / 领取链接生成。 ### 7.4 成功判定 @@ -185,12 +185,13 @@ platforms: { ### 8.2 claimUrl 判定 -对订单下的每个 task: +对订单下的每个 task,调用 `resolveTaskDeliveryLink(task)`(`apps/backend/src/services/fulfillment/delivery-link-service.ts`),由该 task 对应的履约执行器解析可交付链接: -1. 优先读取 `primary_claim_token`; -2. 若没有,则读取 `claim_token`; -3. 若仍没有,且是 `kuaishou_ct_assisted`,调用现有 `ensureTaskClaimLink(task)` 补生成; -4. 用 `buildClaimUrl(token)` 组装最终链接。 +1. 读取 `primary_claim_token`,为空则回退 `claim_token`; +2. 同时读取 `primary_claim_expires_at` / `claim_expires_at` 作为过期时间; +3. 有 token 才返回 `claimUrl = buildClaimUrl(token)`,否则返回 `null`(视为暂不可交付)。 + +说明:`kuaishou_ct_assisted`(乐玩)/ kuaishou-feifei 通道已下线,其历史 task 由只读 stub 处理,不再生成领取链接;领取链接现由 affiliate-dash 执行器的 `resolveDeliveryLink` 提供。 ### 8.3 查询状态判定 @@ -249,11 +250,12 @@ Node 侧实现等价为: 当前项目的 `91` 下单流程直接使用 `productNo` 做履约匹配: -- 默认把 `productNo` 当作商品名,匹配 cloudtentacles 商品列表里的同名商品; -- 如果 `productNo` 使用 `商品名----店铺编号` 格式,前半段用于商品匹配,后半段作为快手小店 `shopId` 用于核销; -- 特殊商品通过 cloudtentacles 覆盖规则处理,例如一个 91 商品发多个 cloudtentacles 商品,或某个商品发多次。 +- 默认把 `productNo` 当作商品名(中文),经 affiliate-dash 的 SKU 映射表(`apps/backend/src/services/platforms/affiliate-dash/sku-mapping.ts`)转成 affiliate-dash 商品的英文 sku; +- 若映射表未命中,再用 `productNo` 与 affiliate-dash 商品列表的 sku 做透传兜底匹配(`matchAffiliateDashSkuPassthrough`); +- 如果 `productNo` 使用 `商品名----店铺编号` 格式,前半段作为商品名匹配、后半段作为快手小店 `shopId`(`parseOpen91ProductNo`); +- 匹配成功后由履约路由选中 affiliate-dash 执行器,多数量在 `delivery-task-service.ts` 里按数量拆成多个 task。 -最终目标是让 91 卡券只传商品名,系统按商品名和覆盖规则自动创建快手 Cloud 履约任务。 +最终目标是让 91 卡券只传商品名,系统按 SKU 映射与透传兜底自动创建 affiliate-dash 履约任务。 ## 11. 日志与排障 @@ -273,17 +275,24 @@ Node 侧实现等价为: 建议新增: -- `apps/backend/src/routes/open-91.js` -- `apps/backend/src/services/open-91/shared.js` -- `apps/backend/src/services/open-91/order-create-service.js` -- `apps/backend/src/services/open-91/order-query-service.js` +- `apps/backend/src/routes/open-91.ts`(挂载于 `apps/backend/src/app.ts:103`,前缀 `/api/v1/open/91`) +- `apps/backend/src/services/open-91/config.ts` +- `apps/backend/src/services/open-91/payload.ts` +- `apps/backend/src/services/open-91/crypto.ts` +- `apps/backend/src/services/open-91/response.ts` +- `apps/backend/src/services/open-91/order-create-service.ts` +- `apps/backend/src/services/open-91/order-query-service.ts` +- `apps/backend/src/services/open-91/consume-on-deliver.ts` 需要修改: - `apps/backend/src/config/defaults.ts` -- `apps/backend/src/config/runtime.js` -- `apps/backend/src/types/runtime-config.js` -- `apps/backend/src/index.js` +- `apps/backend/src/config/runtime.ts` +- `apps/backend/src/config/env-overrides.ts` +- `apps/backend/src/types/runtime-config.ts` +- `apps/backend/src/services/platforms/ninetyone/order-service.ts` +- `apps/backend/src/services/fulfillment/product-resolution-service.ts` +- `apps/backend/src/index.ts` ## 13. 测试范围 @@ -309,4 +318,4 @@ Node 侧实现等价为: - 不实现 `callbackUrl` 主动回调; - 不在 `91` 查询成功后回写快手侧最终兑换结果; - 不实现除 `aes-256-ecb-base64` 之外的卡密加密算法; -- 不新增独立顶级菜单,后台入口复用“平台配置 -> 91卡券接入”。 +- 不新增独立顶级菜单;91 待补全订单目前只有后端管理接口(`/api/v1/admin/platform-config/ninetyone/orders` 查询、`.../:id/retry` 重试、`.../:id/fail` 标记失败),前端暂无专属页面。 diff --git a/docs/cloudflared_tunnel.txt b/docs/cloudflared_tunnel.txt deleted file mode 100644 index 348134b4..00000000 --- a/docs/cloudflared_tunnel.txt +++ /dev/null @@ -1,63 +0,0 @@ - -最快解决(强制使用 HTTP/2 协议)防止clash干扰 -cloudflared tunnel --protocol http2 run --url http://localhost:80 mac-mini-tunnel - - - -cloudflared tunnel create mac-mini-tunnel - -yml@ymlMacBook-Air ~ % cloudflared tunnel create mac-mini-tunnel -Tunnel credentials written to /Users/yml/.cloudflared/562f9639-71f2-44e0-a5ef-b34bd4e215e5.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel. - -Created tunnel mac-mini-tunnel with id 562f9639-71f2-44e0-a5ef-b34bd4e215e5 -yml@ymlMacBook-Air ~ % - - -221329.cc.cd - -4. # 例子:把 web.yourdomain.com 指向刚才创建的隧道 -cloudflared tunnel route dns mac-mini-tunnel 221329.cc.cd - - -5. 启动隧道(临时/测试) -如果你只是临时跑一个服务(比如你 OrbStack 里的容器映射到了本地 80 端口): - -cloudflared tunnel run --url http://localhost:80 mac-mini-tunnel - ------ -如果两台电脑**不会同时运行**(例如一台是公司的 iMac,一台是家里的 MacBook),那么处理起来就简单得多了。 - -在这种情况下,你可以直接采用 **“共用同一个 Tunnel ID”** 的方案。这在 Cloudflare 的术语中叫做多副本(Replicas),虽然你不是为了负载均衡,但它能完美解决你的需求。 - -### 实现方案:共用 Tunnel -你只需要确保两台电脑拥有完全一致的“身份令牌”和“配置文件”。 - -1. **迁移证书与密钥:** - * 在第一台电脑(已配置好)上,找到这两个文件: - * `~/.cloudflared/cert.pem`(登录证书) - * `~/.cloudflared/.json`(隧道的身份密钥) - * 将它们拷贝到第二台电脑的 `~/.cloudflared/` 目录下。 - -2. **同步配置文件:** - * 将 `config.yml` 也拷贝过去。 - * **注意:** 确保两台电脑上运行的本地服务端口是一致的(比如都是 `localhost:8080`)。 - -3. **直接运行:** - * 在任意一台电脑上运行 `cloudflared tunnel run <隧道名>` 即可。 - ---- - -### 这样做的优势 -* **域名无缝切换:** 你不需要在 Cloudflare 后台修改任何 DNS 记录。只要其中一台电脑开启了隧道,`example.yourdomain.com` 就会立即指向那台电脑。 -* **无需重复配置:** 所有的路由规则(Ingress rules)都是一致的,维护起来非常省心。 - -### 注意事项 -* **如果真的“不小心”同时运行了:** - Cloudflare 会把它们当成一个隧道的两个节点。流量会以类似“轮询”的方式随机分配到两台电脑上。如果这时你的两台电脑跑的服务内容不一样,访问者可能会看到一会儿是 A 电脑的内容,一会儿是 B 电脑的内容。 -* **路径一致性:** - 在 `config.yml` 中,`credentials-file` 的路径如果写的是绝对路径(如 `/Users/jack/...`),请确保两台电脑的用户名一致;如果不一致,记得修改配置文件里的路径。 - ---- - -**总结:** -既然不同时运行,那就把第二台电脑伪装成第一台电脑的“克隆体”。只需拷贝那几个关键文件,你就能实现在家、在公司用同一个域名访问不同的机器了。 \ No newline at end of file diff --git a/docs/finance-implementation-plan.md b/docs/finance-implementation-plan.md deleted file mode 100644 index cf9a4fbf..00000000 --- a/docs/finance-implementation-plan.md +++ /dev/null @@ -1,75 +0,0 @@ -# 财务功能实施计划 - -## 目标 - -在后台左侧主导航增加“财务”,提供按中国时区日期筛选的全站财务总览、每日账目和资金明细。首版复用现有订单、打手资金申请、钱包流水和售后数据,不改变接单、充值、提现的现有业务流程。 - -## 已实现范围 - -- `/admin/finance` 页面和主导航入口。 -- `/api/v1/admin/finance/summary`:返回日期范围内的日报和汇总指标。 -- `/api/v1/admin/finance/transactions`:返回分页资金明细,并支持账目类型、渠道筛选。 -- 日期范围支持 `YYYY-MM-DD HH:mm`,精确到分钟;日报仍按 `Asia/Shanghai` 自然日切桶。 -- 日界线固定为 `Asia/Shanghai`,前端金额展示为元,数据库金额仍使用分。 -- 总览指标:订单收款、订单退款、打手报酬、已确认提现、充值入账、售后追缴退还、净现金流、当前钱包余额/冻结/待解冻/待提现。 -- 渠道日报按“日期 + 渠道 + 账目类型”汇总笔数和金额,订单渠道显示为 `provider/platform`,打手资金显示为提现/充值渠道。 -- 原“接单平台 → 资金”页签继续用于打手资金申请审核和资金配置。 -- 新增独立 `finance` 后台角色:仅显示财务和资金审核入口,可访问财务报表、资金申请列表/审核,不可访问订单、任务和系统概览。 -- 管理员拥有全部财务权限,普通运营保留查看/审核权限,客服不获得财务权限。 - -## 财务口径 - -1. 订单收款按 `paid_at`(缺失时回退 `created_at`)归属日期。 -2. 退款首版按订单 `pay_status=refunded` 的订单金额统计;部分退款明细需要后续接入独立退款流水。 -3. 打手报酬取 `reward_settlement`、`sharing_reward` 钱包流水。 -4. 已确认提现取资金申请 `status=approved` 且有 `reviewed_at` 的金额,避免和钱包 `withdraw_paid` 零金额流水重复计算。 -5. 充值入账取已通过的充值申请;押金冻结/解冻只作为资金占用变化,不计入收入。 -6. 净现金流 = 收款 + 充值 + 打手资金回收 - 订单退款 - 打手提现 - 售后追缴退还。 - -## 后续迭代 - -### 二期:人工打款可追踪 - -- 将提现审核和实际打款拆分。 -- 增加打款时间、操作人、流水号、付款凭证和备注。 -- 增加“审核通过待打款”“已打款”状态,历史 `approved` 数据保持兼容。 - -### 三期:统一财务总账 - -- 新增 append-only `finance_transactions` 表。 -- 对订单收款、退款、充值、提现、结算和售后资金动作双写统一流水。 -- 增加对账、CSV/Excel 导出、幂等键和异常金额检查。 - -## RBAC 设计 - -权限键: - -- `finance.view`:财务总览、日报和明细 -- `finance.review`:充值/提现申请审核 -- `finance.config`:财务规则配置 -- `finance.export`:导出财务数据 - -角色矩阵: - -| 角色 | 财务报表 | 资金审核 | 财务配置 | 订单/任务 | -|---|---|---|---|---| -| 管理员 | 是 | 是 | 是 | 是 | -| 普通运营 | 是 | 是 | 否 | 是 | -| 财务 | 是 | 是 | 否 | 否 | -| 客服 | 否 | 否 | 否 | 是(客服范围) | - -## 验收标准 - -- 日期范围包含起止两天,日报为空时仍返回完整日期行。 -- 日报各列合计与顶部总览一致。 -- 提现不被申请表和钱包流水重复计入。 -- 每笔明细包含来源类型、来源编号、发生时间和关联单号/渠道。 -- 选择具体时间段时只统计起止时间内的事件;渠道日报能分别展示同一渠道不同日期的金额。 -- 刷新、分页和账目类型筛选保持当前日期范围。 -- 管理员、普通运营可访问;客服访问接口返回角色错误且不显示主导航。 - -## 主要文件 - -- 前端:`apps/frontend/src/pages/admin/AdminFinancePage.tsx`、`apps/frontend/src/services/admin/finance.ts`、`apps/frontend/src/types/admin/finance.ts`、`apps/frontend/src/layouts/AdminLayout.tsx`、`apps/frontend/src/App.tsx` -- 后端:`apps/backend/src/services/admin/admin-finance-service.ts`、`apps/backend/src/routes/admin/finance.ts`、`apps/backend/src/routes/admin.ts` -- 测试:`apps/backend/src/services/admin/admin-finance-service.test.ts` diff --git a/docs/pgBackRest备份方案分析.md b/docs/pgBackRest备份方案分析.md deleted file mode 100644 index 16049f1c..00000000 --- a/docs/pgBackRest备份方案分析.md +++ /dev/null @@ -1,192 +0,0 @@ -# pgBackRest 生产备份方案分析 - -> 状态:暂缓实施。当前继续使用 `pg_dump -Fc` + OSS manifest 备份方案,待安排维护窗口后再启用 WAL 归档。 -> -> 记录日期:2026-08-23 - -## 结论 - -PostgreSQL 没有 MySQL binlog 的同名机制,但有等价能力: - -```text -基础物理备份 + WAL 归档 = 按时间点恢复(PITR) -``` - -当前 Compose 是单节点 PostgreSQL。启用 `archive_mode` 和 `wal_level` 通常需要重启 PostgreSQL,因此不能承诺绝对零停机。 - -预计生产维护窗口: - -| 阶段 | 是否停机 | 预计耗时 | -| --- | --- | --- | -| 构建 pgBackRest 镜像 | 否 | 几分钟 | -| 创建 stanza、校验 OSS | 否 | 1~3 分钟 | -| 重启 PostgreSQL 启用 WAL 归档 | 是 | 5~30 秒 | -| backend/web 等待恢复 | 是 | 20~90 秒 | -| 首次全量备份 | 否 | 几分钟到几十分钟 | -| 建议预留维护窗口 | 是 | 2~5 分钟 | - -实际时间取决于数据库大小、磁盘恢复速度、容器启动时间和 OSS 网络质量。当前 `pg_dump` 文件约 161 MB,首次物理备份预计不会很大,但仍应按实际 PostgreSQL 数据目录大小估算。 - -## 当前方案 - -目前生产使用: - -- `pg_dump -Fc` 全库逻辑备份。 -- 备份文件上传 OSS。 -- manifest 保存大小、SHA-256、迁移记录和创建时间。 -- `apps/backend/data` 配置单独打包上传。 -- `restore-db.sh --verify` 在临时 PostgreSQL 容器中演练恢复。 - -该方案可以恢复到某个 dump 的时间点,但不能恢复最近一次 dump 之后的几分钟变更。 - -pgBackRest 不能替代当前逻辑备份,建议两套并存: - -```text -pgBackRest:生产灾难恢复、PITR、分钟级 RPO -pg_dump:逻辑迁移、单表恢复、跨版本恢复、第二套保险 -``` - -## 需要增加的组件 - -当前 PostgreSQL 镜像没有 pgBackRest,需要构建自定义镜像: - -```dockerfile -FROM docker.m.daocloud.io/library/postgres:16-bookworm - -RUN apt-get update \ - && apt-get install -y --no-install-recommends pgbackrest ca-certificates \ - && rm -rf /var/lib/apt/lists/* -``` - -需要增加或挂载: - -- `/etc/pgbackrest/pgbackrest.conf` -- `/var/spool/pgbackrest/` -- pgBackRest 日志目录 -- OSS 备份凭证 -- pgBackRest repository 配置 - -不能只在正在运行的容器里执行 `apt install pgbackrest`,因为容器重建后会丢失。 - -## OSS 规划 - -可以复用当前图片 OSS 桶,但必须使用独立前缀: - -```text -backups/postgres/ # 当前 pg_dump -backups/configs/ # 应用配置 -backups/pgbackrest/ # 基础备份和 WAL -``` - -生产更推荐新建独立备份桶,并创建独立 RAM 用户。原因:数据库备份包含订单、用户和后台数据,不能与图片读写权限混用。 - -建议 OSS 配置: - -- 使用 ECS 同地域内网端点,避免公网流量费用。 -- 开启版本控制。 -- 配置生命周期规则。 -- 备份桶保持私有。 -- 必要时启用 pgBackRest 仓库加密,并安全保存加密密码。 - -pgBackRest 使用 OSS S3 兼容接口,最终配置必须通过 `pgbackrest check` 和一次完整备份实测,不能只凭配置文件判断兼容性。 - -## PostgreSQL 配置 - -需要启用: - -```text -wal_level=replica -archive_mode=on -archive_command=pgbackrest --stanza=order-site archive-push %p -archive_timeout=60 -``` - -说明: - -- `wal_level=replica` 通常需要重启。 -- `archive_mode=on` 必须重启。 -- `archive_command` 可以 reload,但建议统一写入 Compose 配置。 -- `archive_timeout=60` 让低写入量时 WAL 最多约 60 秒切换归档一次。 -- OSS 不可用时 WAL 会在本地积压,不能手动删除 `pg_wal` 文件。 - -启用前先检查当前状态: - -```bash -docker compose exec postgres psql \ - -U postgres -d order_site \ - -c "SHOW wal_level; SHOW archive_mode; SHOW archive_command;" -``` - -如果 `archive_mode` 已经是 `on`,后续可能只需要配置 pgBackRest 和 reload;如果是 `off`,需要完整重启 PostgreSQL。 - -## 计划中的切换步骤 - -当前暂不执行。正式实施时按以下顺序: - -1. 继续保留并执行现有 `bash deploy/backup-db.sh`。 -2. 创建独立 OSS 备份桶或规划独立 `backups/pgbackrest/` 前缀。 -3. 创建只允许备份前缀的 RAM 用户。 -4. 构建包含 pgBackRest 的 PostgreSQL 镜像。 -5. 准备 `pgbackrest.conf`,不要把密钥提交到 Git。 -6. 在 PostgreSQL 仍在线时执行 `stanza-create`。 -7. 选择低峰期停止 backend/web。 -8. 重启 PostgreSQL,启用 `archive_mode` 和 `archive_command`。 -9. 等待 PostgreSQL 健康检查通过。 -10. 执行 `pgbackrest check`。 -11. 执行第一次 full backup。 -12. 检查 OSS 中是否出现基础备份和 WAL 文件。 -13. 在临时 PostgreSQL 或测试服务器执行一次 PITR 恢复。 -14. 恢复 backend/web,并抽查后台、订单和图片访问。 - -不要执行以下命令,避免误删当前数据库: - -```bash -docker compose down -v -docker volume rm order_site_postgres_data -``` - -增加 pgBackRest 只需要替换镜像、挂载配置并重启,不需要删除 `postgres_data` 数据卷。 - -## 备份策略建议 - -```text -每周:full 基础备份 -每天:diff 差异备份 -持续:WAL 归档到 OSS -每天:保留当前 pg_dump 逻辑备份 -``` - -WAL 归档不依赖 cron,由 PostgreSQL 的 `archive_command` 持续触发。需要监控: - -- WAL 归档失败次数。 -- `/var/lib/postgresql/data/pg_wal` 占用空间。 -- OSS 上传延迟和失败率。 -- 最近一次 full/diff 备份时间。 -- 最近一段 WAL 是否已经出现在 OSS。 - -## 恢复时间预期 - -pgBackRest PITR 恢复也不是零停机操作。当前单节点架构下,恢复生产数据库需要停止 backend/web,并替换或恢复 PostgreSQL 数据目录。 - -恢复耗时主要取决于: - -- 基础备份大小。 -- WAL 数量。 -- 磁盘读写速度。 -- WAL 回放量。 -- PostgreSQL 启动和健康检查时间。 - -如果基础备份较小、目标时间接近当前时间,预计几分钟;数据库规模扩大后需要重新压测,不能按当前 161 MB dump 固定估计。 - -## 后续验收清单 - -- `pgbackrest stanza-create` 成功。 -- `pgbackrest check` 成功。 -- 第一次 full backup 成功。 -- OSS 中能看到基础备份和 WAL。 -- PostgreSQL 重启后 `archive_mode=on`。 -- `pg_stat_archiver` 中归档成功数持续增加。 -- OSS 暂时不可用时,WAL 会积压但不会静默丢失。 -- 临时环境 PITR 到指定时间成功。 -- 恢复后的订单、后台用户、迁移记录和图片引用可用。 - diff --git a/docs/寄卖库存功能设计与实施方案.md b/docs/寄卖库存功能设计与实施方案.md deleted file mode 100644 index 511b728a..00000000 --- a/docs/寄卖库存功能设计与实施方案.md +++ /dev/null @@ -1,273 +0,0 @@ -# 和平精英寄售仓库 · 系统设计与实施方案 - -> **文档定位**:功能技术与产品设计方案(推荐实现标准) -> **核心游戏**:和平精英(地铁逃生模式 / 账号与物资寄售) -> **更新时间**:2026-09-13 - ---- - -## 一、 业务定位与设计原则 - -本模块针对 **《和平精英》**(重点针对地铁逃生模式的苏尔南手枪、极品附魔武器与排位账号)建设专属的 **「寄售仓库」**,取代原有的线下手工 Excel 台账,并深度融入订单与接单履约链路: - -### 核心设计原则: -1. **去繁就简、数据结构化**:吸取线下台账对“收购成本、收购人、卖家账号/付款凭证、排号/出库店铺”的核心关注点,将杂乱的手工记录转化为规范清晰的系统实体。 -2. **高度自动化,告别手工录入**: - * 履约出库时,系统**自动提取并反向回填**订单号、快手/拼多多店铺名、出库时间,无需人工再去登记“安排到哪张单”; - * 客服创建/审核时,系统**自动绑定当前登录人员**为收购人,自动记录操作时间。 -3. **闭环降本**:在工单发布到打手大厅前,系统通过规则引擎智能比对内部在库物品,支持一键直接履约结单,**直接省去外部打手赏金(¥15~¥80/单)**。 -4. **风控自主可控**:每一件入库物品提供独立的 **【允许匹配开关】**,随手一关即可排除在自动匹配推荐之外,便于自用、高价单卖或线下保留。 -5. **逆向容错(支持撤单与回库重选)**:全链路支持买家退款、客服选错或账号异常时的**一键撤单解绑**,库存安全退回复库,工单可随时重新匹配或转推大厅。 - ---- - -## 二、 核心数据模型设计 - -将原本 Excel 的离散字段归纳为清晰的三层架构:**基础规格属性**、**收货与卖家资料**、**流转履约与匹配控制**。 - -### 数据表:`consignment_inventories`(寄售仓库主表) - -| 分类 | 字段名 | 类型 | 默认值 | 业务含义与说明 | -| :--- | :--- | :--- | :--- | :--- | -| **主键标识** | `id` | `BIGSERIAL` | 自增 | 内部唯一自增 ID | -| | `inventory_no` | `TEXT` | 唯一 | 系统自动生成的业务编号(如 `INV26091312345`) | -| **规格属性** | `game_name` | `TEXT` | `和平精英` | 游戏名称 | -| (多维匹配) | `category_id` | `BIGINT` | `NULL` | 关联的大类(如 苏尔南手枪) | -| | `item_name` | `TEXT` | 必填 | 规范物品标题(如 `安卓微信区 暗潮 1钻`) | -| | `system` | `TEXT` | `""` | 操作系统:`苹果` / `安卓`(硬约束) | -| | `server_zone` | `TEXT` | `""` | 游戏大区:`微信区` / `QQ区`(硬约束) | -| | `series` | `TEXT` | `""` | 附魔系列:`暗潮` / `怒嚎` / `血宴` 等(硬约束) | -| | `diamond_level` | `INTEGER` | `1` | 钻级:`1` ~ `6` 钻 | -| | `brilliance_count` | `INTEGER` | `0` | 璀璨数:`0`(无)、`1`、`2` 等 | -| **收货采购信息** | `cost_price_fen` | `INTEGER` | `0` | **收货成本价**(单位分,如 10500 代表 105 元) | -| (财务与人效) | `buyer_name` | `TEXT` | `""` | **收购人**(如 王斌、周杰雄、周顺,默认取当前登录客服) | -| | `inbound_batch` | `TEXT` | `""` | **收货批次/班次代码**(如 `8.30-1`、`8.30-4`,便于交接对账) | -| | `inbound_at` | `TIMESTAMPTZ`| `NOW()` | 正式入库时间 | -| **卖家与凭据** | `seller_contact` | `TEXT` | `""` | 卖家微信号 / 联系电话 | -| (留痕防纠纷) | `seller_game_id` | `TEXT` | `""` | 卖家游戏角色名 / UID | -| | `seller_payment_info`| `TEXT` | `""` | 卖家收款抬头与卡号(如 `王大锤商行 331682...`) | -| | `credentials_json` | `JSONB` | `{}` | 敏感交付信息(游戏账号、密码、换绑辅助),权限保护 | -| | `screenshots_json` | `JSONB` | `[]` | 截图凭证数组(卖家ID主页图、词条属性图、名片图等) | -| | `remark` | `TEXT` | `""` | 运营其他备注说明 | -| **履约与状态** | `allow_matching` | `BOOLEAN` | `TRUE` | **★ 允许匹配开关**(开:参与匹配;关:暂停匹配) | -| (出库流转) | `status` | `TEXT` | `in_stock` | 资产状态:`in_stock`(在库待匹配) / `consumed`(已出库) / `archived`(已作废) | -| | `bound_order_id` | `BIGINT` | `NULL` | 履约绑定的内部系统订单 ID(出库时系统自动写入) | -| | `bound_work_order_id`| `BIGINT`| `NULL` | 履约绑定的接单工单 ID(出库时系统自动写入) | -| | `bound_platform_order_id`| `TEXT`| `""` | 外部订单号(如快手/拼多多单号 `260830-085784...`,出库自动回填) | -| | `shop_name` | `TEXT` | `""` | 售出店铺名称(如 `拼多多向日葵`、`稚嫩游戏`,出库自动回填) | -| | `consumed_at` | `TIMESTAMPTZ`| `NULL` | 出库履约结单时间 | - ---- - -## 三、 三大核心业务场景与操作流 - -### 1. ~~定向收集链接生成与用户填报(自动化收货渠道)~~ —— **已下线** -> 2026-09 起:寄卖提报统一走**接单平台打手端提报**(`/api/v1/worker/consignment/publish`), -> 对外收集链接(H5 填报页、`consignment_collect_links`、`consignment_submissions.link_id`) -> 已整条移除,详见迁移 `079_drop_consignment_collect_links.sql`。本节保留仅作历史记录。 - -``` -[客服后台] ──► 点击【新建收集链接】 - ├── 勾选目标:分类=苏尔南手枪 / 系统=安卓 / 区服=微信 - ├── 勾选品质:系列=暗潮 / 钻级=1钻 / 璀璨=0 - ├── 输入协商收货价:如 105 元,输入批次号:如 8.30-1 - └── 点击【生成链接】 ──► 复制专属 H5 链接发给卖家 - │ -[卖家手机] ◄────────────────┘ - - 打开 H5:顶部显示《和平精英 安卓微信区 暗潮 1钻 回收单》(规格锁定只读) - - 填入:游戏账号、密码、角色ID - - 上传:角色主页图、暗潮与1钻属性截图 - - 填入:收款卡号/抬头(如 王大锤商行...)、卖家联系电话 - - 点击提交 - │ -[后台审核工作台] ◄──────────┘ (状态:pending_review) - - 客服打开「寄卖审核」弹窗,核查截图无误 - - 可修正实收价格与字段 - - 点击【审核通过并入库】 ──► 正式存入寄售仓库(in_stock,允许匹配=开) -``` - ---- - -### 2. 线下人工快速录入(直接收货登记) - -对于客服在线下直接谈好的现货: -* 在「寄售仓库」面板点击 **【快速手工录入】**。 -* 录入表单模块化聚合: - * **商品规格**:点选 系统、区服、系列(暗潮/怒嚎/血宴)、钻级(1~6)、璀璨数。 - * **采购成本与批次**:输入收购价、当前收购人(默认填入当前操作员)、批次代码(如 8.30-1)。 - * **卖家与凭据**:输入卖家联系方式、收款方式、上传品质截图、填入账号密码。 -* 保存后直接进入在库列表,即刻就绪,参与工单匹配。 - ---- - -### 3. 订单发布前拦截与一键内部履约(降本核心) - -``` -[买家下单] ──► 拼多多向日葵 店铺进单,工单状态为 unassigned (待发布大厅) - │ - ▼ 匹配引擎实时计算 (仅扫描 allow_matching = true 的在库库存) -[工单列表行] ──► 醒目标记 Tag:🟢 匹配内部库存(2件) - │ - ▼ 客服点击「发布并核销」 -[发布拦截弹窗] ──► 拦截并弹出《检测到可用寄售库存》推荐卡片: - ├── 卡片 A:【全部匹配】安卓微信 暗潮 1钻 0璀璨(成本 ¥105,收购人:周杰雄) - └── 卡片 B:【部分匹配】安卓微信 暗潮 1钻 1璀璨(成本 ¥128,多出【1璀璨】,高配充低配) - │ - ┌───────────┴───────────┐ - ▼ ▼ -【选用内部库存直接履约】 【忽略并继续发布到大厅】 - 1. 选中卡片 A 点击确认 维持原有逻辑,推送到大厅由打手抢单 - 2. 系统原子事务操作: - - 工单直接 completed(不发大厅,0 赏金支出!) - - 自动顺带核销快手电子凭证 - - 库存状态变为 consumed - - 自动回填: - bound_platform_order_id = 买家平台订单号 - shop_name = 拼多多向日葵 - consumed_at = 当前时间 -``` - ---- - -## 四、 智能匹配引擎逻辑(全部匹配 vs 部分匹配) - -### 1. 过滤基准条件(必须满足,否则不匹配) -* 资产状态必须为 `in_stock`(在库可用); -* **【允许匹配开关】必须为 `TRUE`**(若为 `FALSE` 则完全跳过,绝不打扰); -* 系统与区服必须完全一致(苹果不能配安卓,微信不能配QQ); -* 词条系列必须完全一致(暗潮 只能配 暗潮,不能拿 怒嚎 充数)。 - -### 2. 钻级与璀璨的匹配算法 -* **全部匹配(Exact Match,得分 100 分)**: - * 钻级完全相同(如 订单=1钻,库存=1钻); - * 璀璨完全相同(如 订单=0璀璨,库存=0璀璨)。 - * 推荐标为绿色,无降级风险。 -* **部分匹配 / 超集匹配(Partial Match,得分 80 分)**: - * 核心特征全部满足,但库存规格更高(如 订单=1钻无璀璨,库存=1钻1璀璨,或钻级更高)。 - * 推荐标为黄色,并提示 **“⚠️ 该库存品质更高(多出 1 璀璨),属于高配充低配,请确认是否愿意降级使用”**,由客服做最终决断。 - -### 3. 排序策略 -1. 优先全部匹配(100分) $\gt$ 部分匹配(80分)。 -2. 同等匹配度下,收购成本最低优先(毛利最大化)。 -3. 同等成本下,入库时间最早优先(FIFO 快速清库存)。 - ---- - -## 五、 异常撤单与库存回退重选机制(退款 / 选错 / 无法发货) - -在实际运营中,若发生买家退款、客服选错或账号异常,系统提供完整的**逆向撤销与回库重选闭环**: - -``` - 【 已寄售履约工单 (completed) 】 - │ - 点击【撤销寄售履约】 - │ - ┌────────────────────────┼────────────────────────┐ - ▼ ▼ ▼ -【场景 1:选错库存重新选】 【场景 2:买家退款取消工单】 【场景 3:物资账号异常作废】 - - 原库存解绑 ──► in_stock - 原库存解绑 ──► in_stock - 原库存变更为 ──► archived - - 工单回退 ────► unassigned - 工单状态 ────► cancelled - 工单回退 ────► unassigned - - 客服可重新选用新库存 - 终止发货,库存回库继续卖 - 客服选用其他正常库存发货 - 或直接点击发布到大厅 -``` - -### 1. 工单视角:【撤销寄售履约 / 重新选择】 -在工单列表或工单详情页,对「已通过内部库存履约、且**尚未验收**」的工单(状态为 `in_progress` / `pending_acceptance` / `problem`)提供 **【撤销履约】** 操作: -* **前置约束(2027-02-21 加固)**:已验收(`accepted`)与已取消(`cancelled`)的工单**一律禁止撤销** —— 钱已结算、货已交付,撤销会造成同一件现货二次出货并重新冻结已退还的押金;买家退款/纠纷改走售后流程。服务端在事务内 `FOR UPDATE` 重新读单并校验状态白名单,撤销原因必填,前端按钮同样按状态 + `consignment.fulfill` 权限渲染。 -* **分支 A:【回退为未分配(重新选库存 或 发大厅)】** - * **原库存处理**:状态从 `consumed` 自动恢复为 `in_stock`,清除绑定的订单号与售出店铺,重新进入待匹配池(**仅当该行仍绑定本工单时**才允许改写,否则 409)。 - * **工单处理**:状态安全回退为 `unassigned`(未分配),清空指派人、时限、验收草稿与本次发货记录。 - * **操作结果**:客服可以立即再次点击「发布并核销」选择其他匹配库存,或者直接发布到大厅由打手抢单! -* **分支 B:【买家申请退款(取消工单并退库)】** - * **原库存处理**:安全解绑并自动回退为在库 `in_stock`,避免资产报废损失。 - * **工单处理**:状态流转为 `cancelled`(已取消),不再继续履约。 -* **分支 C:【物资账号异常(作废该库存并重新选)】** - * **原库存处理**:该把手枪/账号密码失效或被封,直接变更为 `archived`(已作废),记录作废原因,不再参与匹配,并释放发布押金。 - * **工单处理**:工单回退为 `unassigned`,供客服挑选另一把正常手枪继续履约。 - -### 2. 仓库视角:【退回复库 / 重新上架】 -在「寄售仓库」管理列表中,对状态为 `consumed`(已出库)的物品行,提供 **【退回复库】** 按钮: -* 客服可手动将某件出库的物品解绑原订单,直接重置为 `in_stock` 在库待匹配状态;适合线下沟通中买家临时更换需求、跑单或线下对账异常时的人工修正。 -* **前置约束(2027-02-21 加固)**:若该物品仍被一张「进行中的工单」占用(`bound_work_order_id` 指向的工单状态不是 `accepted`/`cancelled`),【退回复库】与【下架作废】都会被拒绝,并提示先撤销履约或撤单 —— 避免把别的工单正在交付的现货抢走。 -* **匹配开关语义**:回库**不再**强制打开 `allow_matching`,而是保留运营的手动设置(该开关是"暂停匹配"的运营闸门,自动回库不应替运营做决定)。编辑接口也不再接受直接改 `status`,状态只能经由带守卫的动作变更。 - -### 2.1 工单终止时的自动解绑(2027-02-21 新增) -工单进入「不再交付」的状态时,会在**同一事务内**把占用的现货放回在库池(`releaseConsignmentInventoryBindingForWorkOrderWithClient`),不再依赖运营手工退库: -* 覆盖路径:打手撤单(`cancelled_by_worker`)、后台取消指派(`unassigned_by_admin`)、后台退回大厅(`returned_to_hall_by_admin`)、后台撤单取消订单(`cancelled_by_admin`)、打手退单申请审核通过、超时处置(`timeout_reopen` / `timeout_cancel_release` / `timeout_cancel_deduct`)、已取消工单重新启用(兜底清理历史绑定)。 -* **售后处置不在其列**:售后(`resolveAdminAfterSalesCase`)只对**已验收**工单做资金追缴/退赔,工单状态保持 `accepted`,货物已交付,无需解绑。若买家退回实物,由运营在寄售仓库执行【退回复库】(已验收工单不再是"进行中",守卫会放行)并填写原因。 -* 发布押金保持冻结:现货回到在库池等同于"重新挂卖",符合「发布冻结、驳回/验收释放」的既有口径;卖家要彻底取回物品,由运营执行【下架作废】后释放押金。 - -### 3. 数据安全与事务保障 -* 撤单过程全部置于数据库事务(`withTransaction`)中,确保库存状态与工单状态原子同步,绝不会出现“工单回退了但库存未恢复”的错乱。 -* 撤销时事务内对工单行 `SELECT ... FOR UPDATE`,库存 UPDATE 带 `status = 'consumed' AND bound_work_order_id = $工单` 条件,命中 0 行即 409,防止与「验收」并发时丢失更新或抢占其他工单的绑定。 -* 一件现货同一时刻最多绑定一张工单:迁移 `079` 增加部分唯一索引 `uniq_consignment_inventories_bound_work_order` 兜底。 -* 每次撤单操作均在工单事件(`work_order_events`)中留下完整审计轨迹(记录撤销人、撤回时间、原绑定单号与原因)。 - ---- - -## 六、 自动化统计报表规划(告别手工 Excel 汇总) - -在后台提供清晰的统计看板,解决运营与财务的核心诉求: - -1. **收购人人效统计(Buyer Stats)**: - * 维度:王斌、周杰雄、周顺 等。 - * 指标:收货总量(件)、收货总花费(元)、已售出件数、库存去化率(%)、平均单价。 -2. **店铺出库贡献统计(Shop Stats)**: - * 维度:拼多多向日葵、稚嫩游戏、佳佳游戏、小鱼儿 等。 - * 指标:各店铺消耗寄售库存单数、**直接节省的打手赏金总额(元)**、平均履约时效。 -3. **批次核算统计(Batch Stats)**: - * 维度:按 `8.30-1`、`8.30-4` 等批次代码汇总。 - * 指标:批次总支出、已回款金额、剩余未售资产成本,便于每天下班对账。 -4. **品类规格周转(Spec Stats)**: - * 统计 暗潮、怒嚎、血宴 各钻级手枪的在库均价、库存留存天数与断货预警。 - ---- - -## 七、 界面交互与原型设计 - -### 1. 接单平台 · 寄售仓库管理页(`ConsignmentInventoryPanel`) -* **顶部数据指标卡**: - * 【在库总数】 / 【在库总成本】 / 【累计节省赏金】 / 【本月出库单数】。 -* **高级筛选工具条**: - * 下拉筛选:收购人(王斌/周杰雄等)、售出店铺(拼多多向日葵等)、批次(如 8.30-1)。 - * 点选切换:系统(全部/苹果/安卓)、区服(全部/微信/QQ)、系列(全部/暗潮/怒嚎/血宴)、钻级(全部/1钻~6钻)。 - * 状态标签切换:【全部】/【在库待匹配】/【已出库】/【已作废】。 -* **表格列表**: - * 支持彩色 Badge:收购人(王斌-紫色、周杰雄-粉色等)、店铺名(拼多多向日葵-橙色等)。 - * **行内 Switch 开关**:【允许匹配】随手可切,切换即刻生效。 - * 凭据与截图:支持点击缩略图查看大图(包含角色主页图、手枪词条图)。 - * 敏感交付信息:点击【查看账号密码】,弹窗显示并带有一键复制。 - * 操作:【编辑】、【作废】、针对已出库物品提供【退回复库】。 - -### 2. 工单列表与撤销重选(`WorkOrdersPanel`) -* **发布前拦截**:点击「发布并核销」时,弹窗推荐匹配库存,支持一键选用内部履约结单。 -* **撤销履约入口**:对已完成内部履约的工单,提供操作按钮【撤销寄售履约】: - * 弹出确认弹窗,选择“选错重选 / 买家退款 / 物资作废”; - * 点击确认后原子回退状态,工单即刻变回未分配状态,支持重新选或发大厅。 - -### 3. ~~客服创建收集链接弹窗(`CreateCollectLinkModal`)~~ —— **已下线** -> 随收集链接渠道一并移除,客服不再生成对外链接;提报入口为接单平台打手端页面。 - -### 4. 寄卖提报审核面板(`ConsignmentSubmissionsPanel`) -* 展示卖家提交的待审单据。 -* 审核弹窗:双栏布局,左边看截图(支持放大看词条),右边核对资料,一键【审核入库】或【驳回】。 - ---- - -## 八、 技术落地与阶段划分 - -1. **阶段一:数据库与模型层** - * 创建数据表 `consignment_inventories`、`consignment_collect_links`、`consignment_submissions`。 - * 配置对应 RBAC 权限(`consignment.view`, `consignment.manage`, `consignment.review`, `consignment.fulfill`)。 -2. **阶段二:后端核心服务与匹配引擎** - * 实现库存 CRUD、多维筛选及统计报表查询; - * 实现和平精英规格匹配算法(暗潮/怒嚎/血宴 + 1~6钻 + 1~6璀璨 + `allow_matching` 开关判断); - * 实现发布拦截检测接口与一键内部履约原子事务; - * **实现工单撤销履约与库存回退重选服务(`revokeConsignmentFulfillment`)**。 -3. **阶段三:前端管理后台** - * 接单平台新增「寄售仓库」面板(包含多维筛选、彩色标签、Switch 开关、卡密查看、退回复库); - * 新增「寄售审核」面板(提报来源为接单平台打手端); - * 改造工单发布拦截与履约弹窗; - * 增加工单列表/详情中的「撤销寄售履约」弹窗与重选逻辑。 -4. **阶段四:~~移动端 H5 填报端~~ —— 已下线** - * 原设计为移动端极简收集页;实际改为接单平台打手端提报,H5 页面已删除。 diff --git a/docs/寄卖系统优化方案.md b/docs/寄卖系统优化方案.md index b0697468..b7cfb807 100644 --- a/docs/寄卖系统优化方案.md +++ b/docs/寄卖系统优化方案.md @@ -51,7 +51,6 @@ ``` [打手接单平台提报] ── 唯一入口(H5 定向收集链接已整体下线) -[客服手工录入] ── 凭据/截图字段名已对齐(本轮修复) │ ▼ 提报审核 → consignment_inventories(in_stock, allow_matching) @@ -72,7 +71,8 @@ > **状态说明(2027-02-21 更新)**:下列清单为第一轮审计结论。本轮已落地批次 A/B 的核心内容, > 逐条状态见每项标题后的标记;未完成项保留原文,作为下一轮输入。 -> 已交付的改动见 `docs/寄卖库存功能设计与实施方案.md` §五(状态机语义)与迁移 `079_drop_consignment_collect_links.sql`。 +> 已交付的改动见 `consignment-repo.ts` / `consignment-fulfillment-service.ts` / `consignment-deposit-repo.ts` 与迁移 `079_drop_consignment_collect_links.sql`。 +> (原设计稿《寄卖库存功能设计与实施方案》已随代码淘汰删除,历史全文见 git 记录。) ### ✅ 本轮已落地(2027-02-21) diff --git a/docs/寄卖系统迁移079上库前检查.sql b/docs/寄卖系统迁移079上库前检查.sql index b165493a..0d2d1028 100644 --- a/docs/寄卖系统迁移079上库前检查.sql +++ b/docs/寄卖系统迁移079上库前检查.sql @@ -25,7 +25,11 @@ HAVING COUNT(*) > 1; -- 2. 同一提报单重复冻结了发布押金? -- 会让唯一索引 uniq_worker_wallet_ledgers_consignment_publish_freeze 创建失败。 --- 期望:0 行。若有行,需人工决定保留哪笔冻结(多冻的部分按 deposit_release 冲正)。 +-- 期望:0 行。注意 079 自身会先去重再建索引——每组(打手+提报单)保留最早一条冻结流水, +-- 多余行改 payload 标记 kind=consignment_publish_superseded(移出押金口径与索引范围, +-- 原行留审计)并按 LEAST(多冻总额, 冻结池实有) 退还押金、写 consignment_publish_dedup_refund +-- 修正流水。所以有行也能建起索引;但若该提报单的押金此前已被释放/没收过, +-- 自动退款会重复退(见 2.1),必须先人工确认。 SELECT payload_json ->> 'consignmentSubmissionId' AS submission_id, COUNT(*) AS freeze_rows, @@ -36,6 +40,58 @@ WHERE ledger_type = 'deposit_freeze' GROUP BY 1 HAVING COUNT(*) > 1; +-- 2.1(只读)重复退款风险:同提报单有多条冻结流水,且该提报单的押金已经被释放/没收过。 +-- 判据:already_settled_fen > 0 时,079 的自动退款会把「已经退过的钱」再退一次—— +-- 钱从同一打手其它提报单的冻结额里出,之后那张单释放/没收会因为 +-- frozen < outstanding 抛 consignment_deposit_balance_inconsistent(接口 500)。 +-- 命中就必须先人工处理,不要直接上库。safe_refund_should_be_fen = 应当退还的金额。 +-- 期望:0 行。 +WITH fr AS ( + SELECT worker_id, payload_json ->> 'consignmentSubmissionId' AS sub, id, ABS(amount) AS amt + FROM worker_wallet_ledgers + WHERE ledger_type = 'deposit_freeze' + AND COALESCE(payload_json ->> 'kind', '') = 'consignment_publish' + AND COALESCE(payload_json ->> 'consignmentSubmissionId', '') <> '' +), +g AS ( + SELECT + worker_id, + sub, + COUNT(*) AS freeze_rows, + SUM(amt) AS freeze_total_fen, + (ARRAY_AGG(amt ORDER BY id ASC))[1] AS kept_fen + FROM fr + GROUP BY 1, 2 +), +s AS ( + SELECT + worker_id, + payload_json ->> 'consignmentSubmissionId' AS sub, + COALESCE(SUM(CASE WHEN ledger_type IN ('deposit_release', 'deposit_deduction') + THEN ABS(amount) ELSE 0 END), 0) AS settled_fen + FROM worker_wallet_ledgers + WHERE COALESCE(payload_json ->> 'kind', '') = 'consignment_publish' + AND COALESCE(payload_json ->> 'consignmentSubmissionId', '') <> '' + GROUP BY 1, 2 +) +SELECT + g.worker_id, + g.sub AS submission_id, + g.freeze_rows, + g.freeze_total_fen - g.kept_fen AS dup_fen, + COALESCE(s.settled_fen, 0) AS already_settled_fen, + COALESCE(w.frozen_deposit_amount, 0) AS wallet_frozen_fen, + LEAST(g.freeze_total_fen - g.kept_fen, COALESCE(w.frozen_deposit_amount, 0)) + AS migration_will_refund_fen, + GREATEST(0, (g.freeze_total_fen - COALESCE(s.settled_fen, 0)) - g.kept_fen) + AS safe_refund_should_be_fen +FROM g +LEFT JOIN s ON s.worker_id = g.worker_id AND s.sub = g.sub +LEFT JOIN worker_wallets w ON w.worker_id = g.worker_id +WHERE g.freeze_rows > 1 + AND COALESCE(s.settled_fen, 0) > 0 +ORDER BY 1, 2; + -- 3. 待删除对象的影响面(收集链接渠道下线)。 -- 用 DO 块 + 动态 SQL,保证"表/列已被删掉"时脚本也能跑(否则会直接报错中断)。 DO $$ diff --git a/docs/履约配置/TypeScript类型收紧.md b/docs/履约配置/TypeScript类型收紧.md index bf1e6c30..6469bafe 100644 --- a/docs/履约配置/TypeScript类型收紧.md +++ b/docs/履约配置/TypeScript类型收紧.md @@ -11,7 +11,7 @@ 4. **TaskContext**:`types/task-context.ts`,`parseTaskContext` 返回 `TaskContext` 5. **ClaimIdentity 契约**:`types/claim-identity.ts`(`ClaimIdentity` / `ClaimIdentityPayload` / `ClaimIdentityAdminSummary`) 6. **Admin 任务详情契约**:`types/admin/task-detail.ts`,`getAdminTaskDetail(): Promise` -7. **normalize 出口具名类型**:`KuaishouCloudFlow`、`KuaishouFeifeiFlow` +7. **normalize 出口具名类型**:`AffiliateDashFlow`(`apps/backend/src/services/fulfillment/affiliate-dash/index.ts:304`,由 `normalizeAffiliateDashFlow` 返回);原 `KuaishouCloudFlow` / `KuaishouFeifeiFlow` 已随通道下线移除(全库 grep 0 命中) 8. **前后端 claimIdentity 字段对齐**:前端 `ClaimIdentityInfo` / `AdminClaimIdentitySummary` 9. **测试 fixture**:`delivery-task-service.test.ts` 减少 `as any`;生产路径去掉 `as any` 状态列表 diff --git a/docs/履约配置/UID领取与旧单兼容.md b/docs/履约配置/UID领取与旧单兼容.md index d484bc38..5a9afb43 100644 --- a/docs/履约配置/UID领取与旧单兼容.md +++ b/docs/履约配置/UID领取与旧单兼容.md @@ -2,11 +2,11 @@ ## 规则(现行) -1. **所有 lewan 自动发货**必须存在 `context.claimIdentity.expectedUid`。 +1. **所有自动履约(affiliate-dash)发货**必须存在 `context.claimIdentity.expectedUid`。 2. 绑定角色 ID(`rid`)必须与 expectedUid 一致,否则禁止 confirm / redeem / dispatch。 3. **旧单无 UID**:用户打开领取页补填 UID 后继续;后台发货也会被拦截并提示补 UID。 4. **不再**使用「仅确认角色、无 UID」的静默兼容路径。 -5. feifei:用户填 UID 后拼入 H5;对外仍只返回本站 claimUrl。 +5. affiliate-dash:用户填 UID 后作为 `data.game_account` 传给 affiliate-dash(`services/fulfillment/affiliate-dash/index.ts:446-447`);对外仍只返回本站 claimUrl。 ## 运营可见 @@ -21,7 +21,7 @@ - Step1:填 UID - Step2:绑定;匹配成功后可 **一键确认兑换**(无需再点「下一步」) -- mock 任务仍可不调真实 CT +- dev-mock 任务可不调真实 affiliate-dash 平台(`flow.mock.enabled` 短路建单 / 绑定 / 提交 / 同步) ## 短链 diff --git a/docs/履约配置/cloudtentacles发货平台.md b/docs/履约配置/cloudtentacles发货平台.md index 32699ea6..bda9dfcb 100644 --- a/docs/履约配置/cloudtentacles发货平台.md +++ b/docs/履约配置/cloudtentacles发货平台.md @@ -1,3 +1,6 @@ +> ⚠ 本仓库当前**未接入** cloudtentacles 通道:该履约通道已下线,`apps/backend/src/services/platforms/` 下已无对应适配器,`fulfillment/executors/registry.ts:18-19` 对历史通道只保留只读 legacy stub(`legacy-retired-executor.ts`)。本文是第三方(cloudtentacles)官方接口样例,仅作外部参考。 +> 现行自动履约通道是 affiliate-dash(`apps/backend/src/services/platforms/affiliate-dash/`,走 `/api/client/v1`);通道现状见 `docs/ affiliate_dash_发货平台/affiliate-dash对接.md`。 + 查询SKU列表 ``` { diff --git a/docs/履约配置/open91请求.md b/docs/履约配置/open91请求.md index 0cadb837..a399751a 100644 --- a/docs/履约配置/open91请求.md +++ b/docs/履约配置/open91请求.md @@ -22,6 +22,6 @@ `测试-关联商品1----3676797936` -系统会把 `测试-关联商品1` 当作商品名字匹配 cloudtentacles,把 `3676797936` 当作快手小店 shopId 用于核销。 +系统会把 `测试-关联商品1` 当作商品名字,走 affiliate-dash 的匹配链路(skuMapping 指定匹配 → 商品路由规则 → 全局优先级,默认仅 `affiliate_dash`,未命中落 `manual_dispatch`);把 `3676797936` 当作快手小店 shopId 用于核销。 这是最重要的信息 diff --git a/docs/履约配置/多发货平台与电子凭证整体链路.md b/docs/履约配置/多发货平台与电子凭证整体链路.md index 291ce73f..c07f6feb 100644 --- a/docs/履约配置/多发货平台与电子凭证整体链路.md +++ b/docs/履约配置/多发货平台与电子凭证整体链路.md @@ -7,8 +7,8 @@ | 模块 | 定位 | 说明 | | --- | --- | --- | | 91 卡券 | 订单来源 + 发链接通道 | 91 调用我方下单接口,我方生成领取链接;91 查询订单时拿到领取链接,并发送给用户。 | -| kuaishou-cloud | 发货平台 1 | 已对接,用于发放它支持的皮肤、道具。 | -| kuaishou-feifei | 发货平台 2 | 新增发货平台,作为 kuaishou-cloud 的补充,覆盖 kuaishou-cloud 没有的皮肤、道具。 | +| affiliate-dash | 现行发货平台(自动履约) | 当前唯一自动履约通道,order_site 作为其商户走开放接口 `/api/client/v1`,发放皮肤、道具。 | +| kuaishou-cloud / kuaishou-feifei | 已下线发货平台 | 历史乐玩 / 飞飞通道已下线,executor 仅保留只读 legacy stub(`legacy-retired-executor.ts`),不再发货。 | | 快手电子凭证 | 领取流程里的自动核销能力 | 用来替代用户在领取页手动输入核销码的步骤,不替代 91,也不替代发货平台。 | 因此整体设计不是“新增订单来源”,而是: @@ -16,7 +16,7 @@ ```text 91 负责进单和把领取链接发给用户 我方领取页负责统一承接用户 -kuaishou-cloud / kuaishou-feifei 负责真实发货 +kuaishou-cloud / kuaishou-feifei 通道已下线,affiliate-dash 负责真实发货 快手电子凭证负责把领取页里的核销码输入步骤自动化 ``` @@ -26,8 +26,8 @@ kuaishou-cloud / kuaishou-feifei 负责真实发货 91 卡券下单 -> 我方创建内部订单和履约任务 -> 按商品选择发货平台 - -> kuaishou-cloud - -> kuaishou-feifei + -> affiliate-dash(自动履约) + -> manual_dispatch(人工兜底) -> 91 卡券查询订单 -> 我方返回统一 claimUrl -> 91 卡券把 claimUrl 发给用户 @@ -35,7 +35,7 @@ kuaishou-cloud / kuaishou-feifei 负责真实发货 -> 系统检查快手电子凭证状态 -> 已有关联电子凭证:跳过手动输入核销码 -> 未关联电子凭证:保留兜底处理 - -> 用户继续完成绑定 / 跳转发货平台 H5 + -> 用户继续完成绑定 / 提交发货 -> 发货平台完成履约 -> 我方更新任务状态 -> 我方完成快手电子凭证核销闭环 @@ -54,7 +54,7 @@ kuaishou-cloud / kuaishou-feifei 负责真实发货 claimUrl = https://你的域名/#/claim/{token} ``` -不要直接把 kuaishou-cloud 绑定链接或 kuaishou-feifei 的 H5 链接返回给 91。原因是领取页需要统一处理: +不要直接把 affiliate-dash 的绑定链接返回给 91。原因是领取页需要统一处理: - 商品最终走哪个发货平台; - 是否已经通过快手电子凭证完成自动核销; @@ -67,48 +67,51 @@ claimUrl = https://你的域名/#/claim/{token} ```text 91 productNo - -> 商品匹配 - -> 命中 kuaishou-cloud 商品 - -> executor_key = kuaishou_ct_assisted - -> 命中 kuaishou-feifei 商品 - -> executor_key = kuaishou_feifei + -> 商品匹配(skuMapping 指定匹配:91 编码 / 商品名 -> affiliate-dash sku) + -> 命中且 affiliate-dash 通道可用 + -> executor_key = affiliate_dash -> 未命中 - -> 进入待补全 / 人工处理 + -> 按履约路由配置:商品路由规则 -> 全局优先级 + -> 仍未命中 -> 待补全 / 人工履约(manual_dispatch) ``` -优先级建议先做成可配置规则,不在代码里硬编码。第一阶段可以采用: +优先级由可配置规则决定(`services/fulfillment/routing-config-service.ts`),当前顺序: -1. 显式覆盖规则优先; -2. 再按商品名匹配 kuaishou-cloud; -3. 再按商品名或 `product_code` 匹配 kuaishou-feifei; -4. 都未命中则进入待补全队列。 +1. 指定匹配(显式映射)优先; +2. 再按商品路由规则(商品名 exact / contains); +3. 再按全局优先级 `defaultExecutorPriority`(当前默认仅 `affiliate_dash`); +4. 都未命中则回落人工履约(`manual_dispatch`)或保持未配置。 -## 5. kuaishou-feifei 接入方式 +## 5. kuaishou-feifei 接入方式(已下线) -kuaishou-feifei 的主要交付物是 `h5.recharge_url`。 +kuaishou-feifei 通道已下线:历史交付物是 `h5.recharge_url`,相关 executor / API client / H5 对接均已移除,历史任务由只读 legacy stub(`legacy-retired-executor.ts`)承接,不再发货。 -创建任务后,系统应向 kuaishou-feifei 创建订单,并把关键字段保存到任务上下文: +现行自动履约通道是 affiliate-dash:order_site 作为其商户走 `/api/client/v1`,关键字段保存到任务上下文 `context_json.affiliateDash`(具名类型 `AffiliateDashFlow`): ```json { - "kuaishouFeifei": { - "platformOrderNo": "内部幂等单号", - "orderNo": "发货平台内部单号", - "productCode": "商品编码", - "rechargeStatus": 15, - "statusLabel": "待绑定", - "h5": { - "rechargeUrl": "http://..." - }, + "affiliateDash": { + "flowType": "affiliate_dash", + "sku": "affiliate-dash sku", + "productName": "商品名", + "orderNo": "affiliate-dash 平台单号", + "clientOrderNo": "内部幂等单号", + "orderStatus": "paid / delivering / delivered / ship_failed / cancelled", + "canShip": true, + "bindUrl": "http://...", + "qrUrl": "http://...", + "bound": false, + "submitStatus": "", + "consumeStatus": "", "lastSyncedAt": "2026-07-07T00:00:00.000Z" } } ``` -领取页根据当前任务的 executor 展示不同内容: +领取页根据当前任务的 executor 展示不同内容(`services/claim/kuaishou-cloud-claim-context.ts`): -- `kuaishou_ct_assisted`:展示现有 kuaishou-cloud 绑定流程; -- `kuaishou_feifei`:展示或跳转 kuaishou-feifei 的 `h5.recharge_url`; +- `affiliate_dash`:本站领取页自建流程(查 delivery -> 填 UID -> bind -> 轮询 bind-result -> submit); +- `kuaishou_ct_assisted` / `kuaishou_feifei`:通道已下线,仅展示历史信息与「该履约渠道已下线」提示; - `manual_dispatch`:进入人工兜底。 ## 6. 快手电子凭证的嵌入点 @@ -154,25 +157,28 @@ kuaishou-feifei 的主要交付物是 `h5.recharge_url`。 ## 7. 核销完成时机 -电子凭证不应该在用户刚打开领取页时就立刻标记为已消费。 +电子凭证的核销时机与领取页打开解耦:不因用户打开领取页就标记已消费。 -推荐时机: +当前实现(`services/fulfillment/affiliate-dash/index.ts:87-117,212-241`)在**建单成功、91 侧可取到领取链接时**即核销(91 卡信息一经消耗),不再等发货完成: ```text -发货平台实际履约成功 +准备履约任务成功(拿到领取链接) + -> 我方调用快手电子凭证核销 + -> 凭证状态更新为 CONSUMED(consumeStatus = success) +发货回调 delivered + -> 只做状态收敛:consumeStatus 已 success / not_required 则短路 + -> failed / 空才补核销(兜底) -> 我方更新 task 为 completed / redeemed - -> 我方触发快手电子凭证核销回调 - -> 电子凭证状态更新为 CONSUMED ``` -这样可以避免用户打开链接但未完成绑定时,快手侧已经显示核销成功。 +核销失败不阻塞下单与链接发放(`consumeStatus = failed` + warn 日志),由 delivered 回调兜底。 不同发货平台的成功判定: | 发货平台 | 成功判定 | | --- | --- | -| kuaishou-cloud | 当前发货流程完成,任务进入完成态。 | -| kuaishou-feifei | 查询或异步通知返回 `recharge_status = 30`。 | +| affiliate-dash | `submit` 成功 / 回调 `order.shipping.updated` 且 `order_status = delivered`,任务进入完成态。 | +| kuaishou-cloud / kuaishou-feifei | 已下线,不再产生新的成功判定;历史任务只读。 | 失败时: @@ -185,18 +191,18 @@ kuaishou-feifei 的主要交付物是 `h5.recharge_url`。 当前项目已经有以下基础能力: - 91 卡券下单和查询; -- kuaishou-cloud 发货流程; -- 快手电子凭证 `send-code / query-code / destroy-code / consume-code` 接口骨架; -- 领取页手动输入核销码流程。 +- affiliate-dash 自动发货流程(唯一自动履约通道); +- 快手电子凭证 `send-code / query-code / destroy-code / consume-code` 接口; +- 领取页手动输入核销码流程(异常兜底)。 -后续需要把它们串起来: +后续调整方向(当前状态): -1. 91 查询仍返回统一 `claimUrl`。 -2. 商品匹配支持多发货平台。 -3. kuaishou-feifei 新增独立 executor 和 API client。 -4. 领取页根据 task executor 展示对应发货流程。 -5. 快手电子凭证状态进入 task context,用于跳过手动输入核销码。 -6. 发货成功后再触发快手电子凭证核销。 +1. 91 查询仍返回统一 `claimUrl`(已完成)。 +2. 商品匹配:skuMapping 指定匹配 -> 商品路由规则 -> 全局优先级(默认仅 `affiliate_dash`),未命中回落人工履约(已完成)。 +3. kuaishou-feifei / kuaishou-cloud 已下线,executor 仅保留只读 legacy stub,不再新增独立 executor 和 API client(已处理)。 +4. 领取页根据 task executor 展示对应发货流程(affiliate_dash 自建流程;下线通道展示历史信息)(已完成)。 +5. 快手电子凭证状态进入 task context,用于跳过手动输入核销码(已完成)。 +6. 建单成功(拿到领取链接)即触发快手电子凭证核销,发货回调只做状态收敛(已完成)。 7. 保留手动输入核销码作为异常兜底,而不是主路径。 ## 9. 数据关联 @@ -323,26 +329,18 @@ send-code.oid ### 11.1 当前逻辑 -当前实现中,`send-code` 返回的 `eticket.id` 来自本地 task id: +当前实现中,`send-code` 返回的 `eticket.id` 是独立券表的业务券号 `voucher_code`,不再依赖 task id: ```text -eticket.id = fulfillment_tasks.id +eticket.id = kuaishou_industry_vouchers.voucher_code +voucher_code = 'KSV' + Crockford Base32(10 字节随机数) ``` -真实测试单中: +来源:`services/platforms/kuaishou-industry/send-code-service.ts:86-116`(按 `oid + unit_index` upsert 券记录后返回)、`services/platforms/kuaishou-industry/voucher-service.ts:95`(`id / code = voucher_code`)、`repositories/kuaishou-industry-voucher-repo.ts:26-53`(`KSV` 前缀 + Crockford Base32 生成,唯一冲突自动重试)。 -```text -eticket.id = 2038 -``` +历史测试单(2026-07-07)里 `eticket.id = 2038`,那是早期把 task id 当券号的实现,已废弃。 -这说明当前“核销码/券号”不是快手生成的,而是我方创建 task 后,把 task id 当作电子凭证 id 返回给快手。 - -这个方式有两个问题: - -1. task 属于当前实现里的 `kuaishou-industry` 孤立订单链,尚未绑定到 91 订单 task。 -2. task id 虽然全局唯一,但它和任务生命周期耦合太强;后续如果任务重建、补配置、切换发货平台,会影响电子凭证反查和幂等。 - -### 11.2 推荐目标 +### 11.2 券号要求 电子凭证券号应该满足: @@ -354,58 +352,55 @@ eticket.id = 2038 | 可延迟绑定 | 如果快手 `send-code` 早于 91 task 准备完成,券号也能先落库,后续再绑定 task。 | | 可核销 | 发货完成后,能用同一张券更新为 `CONSUMED`,并记录核销流水。 | -### 11.3 推荐数据模型 +### 11.3 已落地数据模型 -建议新增独立的电子凭证券表,而不是继续只依赖 task id: +已新增独立的电子凭证券表 `kuaishou_industry_vouchers`(`db/migrations/001_init.sql:272-297`,`eticket_type` 见 `db/migrations/003_kuaishou_industry_voucher_eticket_type.sql`),不再只依赖 task id: ```text kuaishou_industry_vouchers id BIGSERIAL PRIMARY KEY - voucher_code TEXT UNIQUE NOT NULL + voucher_code TEXT NOT NULL UNIQUE oid TEXT NOT NULL - order_id BIGINT NULL - task_id BIGINT NULL + order_id BIGINT NULL REFERENCES orders(id) ON DELETE SET NULL + task_id BIGINT NULL REFERENCES fulfillment_tasks(id) ON DELETE SET NULL unit_index INTEGER NOT NULL - token TEXT NOT NULL - status TEXT NOT NULL -- UNUSED / CONSUMED / DESTROYED - valid_start_time BIGINT NOT NULL - valid_end_time BIGINT NOT NULL + seller_id TEXT NOT NULL DEFAULT '' + token TEXT NOT NULL DEFAULT '' + eticket_type TEXT NOT NULL DEFAULT '' + status TEXT NOT NULL DEFAULT 'UNUSED' -- UNUSED / CONSUMED / DESTROYED + valid_start_time BIGINT NOT NULL DEFAULT 0 + valid_end_time BIGINT NOT NULL DEFAULT 0 consume_serial_num TEXT NOT NULL DEFAULT '' + consume_details_json JSONB NOT NULL DEFAULT '[]'::jsonb consumed_at TIMESTAMPTZ NULL destroyed_at TIMESTAMPTZ NULL raw_payload_json JSONB NOT NULL DEFAULT '{}'::jsonb + send_callback_status TEXT NOT NULL DEFAULT 'success' + send_callback_attempt_count / send_callback_last_error / send_callback_response_json / send_callback_sent_at created_at TIMESTAMPTZ NOT NULL updated_at TIMESTAMPTZ NOT NULL 唯一约束: - UNIQUE(oid, unit_index) UNIQUE(voucher_code) + UNIQUE(oid, unit_index) ``` -券号生成建议: +券号生成(`repositories/kuaishou-industry-voucher-repo.ts:26-53`): ```text -voucher_code = String(kuaishou_industry_vouchers.id) +voucher_code = 'KSV' + Crockford Base32(10 字节随机数) ``` 理由: -- 数字字符串兼容性最好; -- 数据库主键保证不重复; -- 重复 `send-code` 时通过 `UNIQUE(oid, unit_index)` 找回原记录,返回原 `voucher_code`; +- 业务券号与 task 生命周期解耦,任务重建 / 换发货通道不影响反查; +- 数据库 `UNIQUE(voucher_code)` 保证不重复,生成冲突自动重试(最多 5 次); +- 重复 `send-code` 时通过 `UNIQUE(oid, unit_index)` + `ON CONFLICT ... DO UPDATE` 找回原记录,返回原 `voucher_code`; - 不依赖 task 是否已经创建。 -如果后续确认快手完全支持任意字符串,也可以升级为带前缀的业务券号,例如: - -```text -voucher_code = KSEV-{oid}-{unitIndex} -``` - -但第一阶段建议优先使用数字字符串,降低快手侧兼容风险。 - ### 11.4 send-code 幂等规则 -`send-code` 处理流程应改为: +`send-code` 处理流程(已实现): ```text 收到 oid + num @@ -424,17 +419,17 @@ voucher_code = KSEV-{oid}-{unitIndex} 第一次 send-code: oid = 2618800083429561 num = 1 - eticket.id = 2038 + eticket.id = KSVASXT6Q955WT4SS36 第二次 send-code: oid = 2618800083429561 num = 1 - eticket.id 仍然 = 2038 + eticket.id 仍然 = KSVASXT6Q955WT4SS36 ``` ### 11.5 有效期生成规则 -真实测试单里快手没有传 `certActualStartTime / certActualEndTime`,并且 `certStartTime / certEndTime` 也可能都是 0。当前系统返回了: +真实测试单里快手没有传 `certActualStartTime / certActualEndTime`,并且 `certStartTime / certEndTime` 也可能都是 0。当时系统返回了: ```text validStartTime = 0 @@ -476,12 +471,12 @@ validStartTime = send-code 处理时的当前毫秒时间戳 validEndTime = validStartTime + 3 * 86400000 ``` -### 11.6 后续核销规则 +### 11.6 核销规则(已实现) -发货完成后,不再要求用户输入快手核销码,而是系统根据 voucher 主动完成核销闭环: +不再要求用户输入快手核销码,而是系统根据 voucher 主动完成核销闭环。affiliate-dash 在**建单成功(拿到领取链接)**时即核销,`delivered` 回调只做状态收敛与兜底补核销(`services/fulfillment/affiliate-dash/index.ts:87-117,212-241` / `services/platforms/kuaishou-industry/voucher-service.ts:241-291`): ```text -发货平台履约成功 +建单成功 / affiliate-dash 已消耗(91 卡信息到手) -> 找到 task 绑定的 voucher -> 检查 voucher.status = UNUSED -> 生成稳定 consume_serial_num diff --git a/docs/履约配置/工程债-lewan拆分与短链.md b/docs/履约配置/工程债-lewan拆分与短链.md deleted file mode 100644 index f64b003b..00000000 --- a/docs/履约配置/工程债-lewan拆分与短链.md +++ /dev/null @@ -1,53 +0,0 @@ -# 工程债:lewan 拆分、默认角色、短链 - -## 命名约定 - -| 叫法 | 用途 | -| --- | --- | -| lewan / kuaishou-lewan | 业务/文案 | -| `kuaishou_ct_assisted` | `executor_key` | -| `kuaishou-cloud/` | 履约领域模块路径 | -| `cloudtentacles` | 外部发货平台 API | - -## lewan 模块拆分(已做) - -```text -kuaishou-cloud/ - index.ts # barrel 导出 - prepare-fulfillment.ts # prepare + 刷新 bindUrl - rebind-role.ts - probe-bind-url.ts - refresh-role-info.ts - role-state.ts # 默认角色快照 + ready 状态(UID 主闸) - delivery-plan.ts - ensure-claim-link.ts - dispatch-role-sync.ts - redeem-fulfillment.ts # 一键兑换用例 - confirm-role.ts # 确认角色用例 - dispatch-fulfillment.ts # 发货编排 - dispatch-stock.ts # 库存/采购/下发 - dispatch-failure.ts # 发货失败落库 - return-fulfillment.ts # 退号 + 电子凭证核销收尾 - mock-helpers.ts - task-finalization.ts # 兼容 re-export - domain.ts - -executors/ - kuaishou-cloud-executor # preparePaid + prepareBinding + rebind/refresh/confirm + redeem + dispatch + return - registry # prepare/rebind/refresh/confirm/redeem/dispatch/return 统一入口 -``` - -对外 import 路径仍为 `.../kuaishou-cloud/index.js`。 -claim / admin 应优先走 `executors/registry`,不要直连子模块动作。 - -## 默认角色 - -- 主闸:`claimIdentity.expectedUid` 与绑定 `rid` 一致。 -- `isDefaultRole` 仅诊断文案;有角色信息即 `ready` 并落库 rid。 -- `hasKuaishouCloudCustomerRole` 改为「是否已有绑定角色」,不再要求不同于默认角色。 - -## 短链 - -- `/s/:code` **只读解析**历史链接。 -- feifei claim **不再**依赖 shortLink 交付;若仍调用 `ensureShortLinkForTarget` 且 source 为 feifei claim,会打 warn。 -- 新业务:本站 claimUrl + H5 拼 `uid`。 diff --git a/docs/履约配置/快手Cloud领取mock.md b/docs/履约配置/快手Cloud领取mock.md deleted file mode 100644 index f65e4c36..00000000 --- a/docs/履约配置/快手Cloud领取mock.md +++ /dev/null @@ -1,61 +0,0 @@ -# 开发 Mock(领取 / 91 查单) - -优先使用 **后台 GUI**:登录运营后台 → 左侧 **开发 / 开发 Mock**(仅非 production 环境显示)。 - -生产镜像默认 `NODE_ENV=production`,接口会 403。本地 docker-compose.dev 默认可用;特殊环境可设 `ENABLE_DEV_MOCK=1`。 - -## GUI 能做什么 - -| 卡片 | 作用 | -| --- | --- | -| lewan 领取 | 写库生成 91 订单 + claim,强制 UID 匹配流(不调 CloudTentacles) | -| feifei 领取 | 写库生成 feifei 任务 + 本站 claim;H5 带 uid(不调真实 feifei) | -| 91 查单 | 生成带签名的 `POST /api/v1/open/91/orders/query`,可本机执行 | - -推荐路径: - -1. lewan 选 `binding` + UID `10001` → 生成 → 打开领取链接 → 确认兑换 -2. 用同一 orderNo 点「模拟 91 查单」验证 cards / claimUrl - -## CLI(可选) - -```bash -# lewan -docker compose -f docker-compose.dev.yml exec -T backend \ - npm run mock:claim -- --step=binding --uid=10001 - -# feifei -docker compose -f docker-compose.dev.yml exec -T backend \ - npm run mock:feifei -- --step=ready --uid=166909256 - -# 91 查单(需 KAQUAN91_SECRET) -docker compose -f docker-compose.dev.yml exec -T backend \ - npm run mock:open91 -- --baseUrl=http://127.0.0.1:3000 --mode=query --orderNo=MOCK91... -``` - -## 步骤说明 - -### lewan `--step` - -| step | 含义 | -| --- | --- | -| `uid` | 待填 UID(Step1) | -| `binding` | 已预填 UID,角色 ID 已匹配(推荐) | -| `confirm` | 待确认兑换 | -| `result` | 已模拟完成 | - -兑换走 `context.mock.enabled=true`,不会真实发货。 - -### feifei `--step` - -| step | 含义 | -| --- | --- | -| `uid` | 待填 UID | -| `ready` | 已填 UID,可打开带 uid 的 H5 | -| `completed` / `failed` | 模拟终态 | - -## 与真实环境边界 - -- Mock **不**替代真实 CloudTentacles / feifei 联调 -- 91 `create` CLI 仍会走真实商品匹配;造单测领取请用 GUI / `mock:claim` / `mock:feifei` -- 写入的是开发库真实行,注意别在生产 volume 上开 Mock diff --git a/docs/服务器图片迁移到阿里云OSS.md b/docs/服务器图片迁移到阿里云OSS.md deleted file mode 100644 index 97c47981..00000000 --- a/docs/服务器图片迁移到阿里云OSS.md +++ /dev/null @@ -1,71 +0,0 @@ -# 服务器图片迁移到阿里云 OSS - -本流程只操作服务器上的 MinIO。Mac 本地继续使用 `.env.mac-docker.example` 的 MinIO 配置,不会把本地图片迁走。 - -## 1. 准备 OSS - -在阿里云 OSS 创建与现有 MinIO bucket 对应的 bucket,并创建只允许该 bucket 的 RAM 账号。建议 OSS 使用 S3 兼容端点,例如 `https://oss-cn-hangzhou.aliyuncs.com`,不要把 bucket 名写进 endpoint。 - -编辑服务器 `.env`,先保留 MinIO 为主存储,并填好 OSS 目标配置: - -```dotenv -STORAGE_MODE=dual -STORAGE_ENDPOINT=http://minio:9000 -STORAGE_BUCKET=order-site -STORAGE_ACCESS_KEY_ID=原 MinIO 账号 -STORAGE_SECRET_ACCESS_KEY=原 MinIO 密钥 -STORAGE_REGION=us-east-1 -STORAGE_OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com -STORAGE_OSS_BUCKET=OSS bucket 名 -STORAGE_OSS_ACCESS_KEY_ID=OSS RAM AccessKey ID -STORAGE_OSS_SECRET_ACCESS_KEY=OSS RAM AccessKey Secret -STORAGE_OSS_REGION=oss-cn-hangzhou -``` - -重建后端容器使配置生效。`dual` 模式下新上传的原图和缩略图会同时写入 MinIO、OSS;读取仍优先 MinIO,失败时回退 OSS,所以迁移期间无需停机。 - -## 2. 增量复制与校验 - -在服务器项目目录执行。容器镜像已内置迁移程序,下面命令不会停止现有后端: - -```bash -docker compose exec backend node dist/storage-migrate.js copy -docker compose exec backend node dist/storage-migrate.js verify -``` - -复制可以重复执行,目标中已有且大小、ETag 一致的对象会跳过。程序默认 8 路并发,可通过 `docker compose exec -e STORAGE_MIGRATION_CONCURRENCY=16 ...` 调整(最大 32)。校验会比较源、目标每个对象的 SHA-256、大小和 Content-Type;复制阶段的 ETag 仅用于幂等跳过,最终仍会对所有对象做完整内容校验。复制期间仍有新上传时,复制完成后再次执行 `copy` 和 `verify`,直到校验通过且没有遗漏。 - -## 3. 切换到 OSS - -确认校验通过后,把服务器 `.env` 的 `STORAGE_MODE` 改为 `oss`,重新创建 backend: - -```bash -docker compose up -d --no-deps backend -curl -fsS https://你的域名/health/ready -``` - -此时新旧图片都只从 OSS 读取,数据库中的对象 key 和访问 URL 不需要改动。 - -## 4. MinIO 退场 - -先观察 OSS 模式运行一段时间,确认图片上传、后台预览、打手端验收图片均正常,再停止并移除 MinIO 容器(若仍由旧版编排管理): - -```bash -docker compose --profile storage stop minio -docker compose --profile storage rm -f minio -``` - -生产编排(`docker-compose.yml` 与 `deploy/ubuntu-deploy.sh`)已移除 MinIO 服务与 `storage` profile,此后部署不会再启动 MinIO。 - -不要删除 `minio_data` 卷(实际名称 `order_site_minio_data`),至少保留一个回滚窗口。若需要回滚,把 `.env` 的 `STORAGE_MODE` 改回 `dual`,并手动用旧卷拉起一个 MinIO 容器接入 compose 网络(`--network-alias minio` 保证 backend 仍可用 `http://minio:9000` 访问它): - -```bash -docker run -d --name minio-rollback \ - --network order_site_default \ - --network-alias minio \ - -v order_site_minio_data:/data \ - docker.m.daocloud.io/minio/minio:latest \ - server /data --address ":9000" --console-address ":9001" -``` - -确认 OSS 已稳定且完成密钥轮换后,再单独评估删除 `minio_data` 卷释放磁盘。 diff --git a/docs/行业电子凭证/技术方案.md b/docs/行业电子凭证/技术方案.md index 756778c3..4acc3876 100644 --- a/docs/行业电子凭证/技术方案.md +++ b/docs/行业电子凭证/技术方案.md @@ -243,7 +243,7 @@ npm run test:industry:http -- --baseUrl=https://ks.khhao.com --load --endpoint=q - [ ] 三个出站回调(发码/核销/销毁)已实现并配置 `KUASHOU_INDUSTRY_SEND_CALLBACK_ENABLED=true` - [ ] access_token 已通过店主主账号 OAuth 获取,48h 自动刷新 - [ ] 生产环境 appKey / signSecret 与测试环境独立配置 -- [ ] 测试用例文档(`测试用例.md`)已填写完整提交快手审核 +- [ ] 测试用例已用 `apps/backend/scripts/gen-test-cases.ts`(`npm run test:industry:gen`)生成并整理完整,可提交快手审核(测试步骤见 `docs/行业电子凭证/5.测试指南.md`) - [ ] 压力测试通过:发码 100 TPS、查询 500 QPS、销毁 100 TPS,平均耗时 < 100ms - [ ] 所有错误场景(签名错/参数缺失/appkey 错)均能正确处理 - [ ] signSecret 未提交到 git 仓库,仅通过环境变量注入 diff --git a/docs/行业电子凭证/解决方案/技术方案/1.基础技术.md b/docs/行业电子凭证/解决方案/技术方案/1.基础技术.md deleted file mode 100644 index e229065b..00000000 --- a/docs/行业电子凭证/解决方案/技术方案/1.基础技术.md +++ /dev/null @@ -1,76 +0,0 @@ -基础技术 -更新时间:2025-03-26 -阅读数:5722 -本处介绍开放平台的基础协议和通用接入方式 - -1.环境说明 -两套环境相互独立,数据不可相互使用 - -环境 环境地址 说明 -线上环境 https://open.kwaixiaodian.com 线上环境可直接使用 -线下环境 https://gw-merchant-staging.test.gifshow.com 测试环境调用需要提供出口IP,并联系快手对接人添加ip白名单 -2.授权流程 -2.1 如何获取token - 首先需要拿到appkey、appsecret、signSecret信息,线下环境找快手提供,线上环境到“开放平台-控制台-应用中心-应用详情”查看,请求示例如下 -https://gw-merchant-staging.test.gifshow.com/integration/virtual/topup/mobile/order/callback?access_token=ChFvYXV0aC5hY2Nlc3NUb2tlbhJAErnBVtjx5FPdE0AITaSq4xlW6XaTOaV_McGinj-hFivkyxAw1SZ3i28bLEa6xP-C4UuKlRz6uh3lukYRLDcAdRoSeCxQKnQhAPTTL4YL0_NqmqD-IiApwDDKEL1wBW7EbWH0ZRDO3UUNSCxMwkuF7nb57Fn7AygFMAE&appkey=ks683702719562282620&method=integration.virtual.topup.mobile.order.callback¶m=%7B%22orderId%22%3A%22100%22%2C%22businessTime%22%3A%222021-06-08T14%3A16%3A01%2B0800%22%2C%22mobile%22%3A%2215990013607%22%2C%22status%22%3A%22FAILED%22%2C%22amount%22%3A%225000%22%2C%22bizType%22%3A20%7D&signMethod=MD5×tamp=1623132961782&version=1&sign=c091ca3414a9d6429a0fda47c383d202 - -注:如果回调失败需要以指数周期(1m、2m、4m、8m...)重试 - -注意: - -测试环境需要把自己的出口ip给到快手,配置白名单,否则无权限访问。配置对接人:屈国庆,王哲,杨天问 -测试环境和线上环境,是两套token,不可混用。测试token,如下方式获取。线上token通过上面sdk调用,有效期48h。 -Token授权码:参考文档(2.2节 商家开发者角色) -授权一定要用店主的主账号来授权,否则token换取到的sellerId就是子账号的id -线上token验证:https://open.kwaixiaodian.com/commonTool/tokenAuth/accessToken?cateId=0&typeIndex=1,需要快手app扫描登录 -测试环境获取token的步骤(参考文档(2.2节 商家开发者角色)): - -测试环境:优先使用集成中心自己调试 -线上环境:需要按照开放平台的授权文档,通过你的店铺由店主授权(不要用子账号授权),然后用你的redirect_uri来接收code。 -用授权码code换取长时令牌refreshToken以及访问令牌accessToken - 示例:https://gw-merchant-staging.test.gifshow.com/oauth2/access_token?app_id=ks683702719562282620&app_secret=zSCiWmGOk_diMCU9k3zHcg&grant_type=code&code=bab4f0378269db7a1603de9d5a381615d7d2c451ffbb32f8ede78ac8f05b6171f7d4eb8c - -用长时令牌refreshToken刷新访问令牌accessToken - 示例: -https://gw-merchant-staging.test.gifshow.com/oauth2/refresh_token?app_id=ks683702719562282620&app_secret=zSCiWmGOk_diMCU9k3zHcg&grant_type=refresh_token&refresh_token=ChJvYXV0aC5yZWZyZXNoVG9rZW4SkAGpBE83BKP9TeiwbEP1-IIQL2G08s8rU-OETIzfs5wFN2HeZgUaR_mfGjKHjHzfV-sicHG4IZmxVKlxQhdAZIdf01AR51ZtPN7sHY3eeW6RMnx8LPKo92V1yk-GnkXiiPMWpn9Vmhq0dk_U_aKh5Jwg7mMySO8IEDoz-fPk9Rc2rjUK3inqxNd7rqTQ9fz316oaEsFIUEDt4EyD090nGWRnwQ5g3SIgY-ctBM_4jrFXxBA9EF1jMaP6as57lNYIyOZf9Qlqq64oBTAB - -后面就可以一直用第三步来刷新accessToken - -3.签名算法 -3.1 协议 -https协议,支持GET/POST,调用地址、appkey、signSecret由快手提供,返回结果为json字符串。 - -3.2 签名 -官方签名说明 - -快手电商开放平台的所有开放API调用都需要进行加签,服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。当前平台支持的签名算法为MD5(signMethod=MD5) - -下面将详细介绍签名流程: - -对所有API系统参数和请求参数(不包括sign参数和byte[]类型的参数),根据参数名称进行字典顺序排序; - -排序前的顺序是:appkey=ks123,version=1,method=open.xxx.xxx,signMethod=MD5,access_token=xxxx,timestamp=1583271919000,param={"title":"短袖", "relItemId":123456, "categoryId":12} - -排序后的顺序是:appkey=ks123¶m={"categoryId":12,"relItemId":123456,"title":"短袖"}&signMethod=MD5×tamp=1583271919000&version=1&signSecret=abc - - - -保留=符号,用&符号将多个参数及其值组装在一起,根据上面的示例得到的排序结果为:access_token=xxx&appkey=ks123&method=open.xxx.xxx¶m={"title":"短袖", "relItemId":123456, "categoryId":12}&signMethod=MD5×tamp=1583271919000&version=1 - -排序好参数后,在末尾加入signSecret(在应用创建审核通过后由平台分配,在“应用中心-应用列表-应用详情”中可见)进行对应算法的签名计算 - -MD5(access_token=xxx&appkey=ks123&method=open.xxx.xxx.xxx¶m={"title":"短袖", "relItemId":123456, "categoryId":12}&signMethod=MD5×tamp=1583271919000&version=1&signSecret=xxxxxx)=sign - - - -签名加好后,将sign添加到请求参数中,并对param内容进行encode(双引号"和冒号:也需要encode),这里注意请求参数里面是不包括signSecret的,signSecret只是作为加签因子用于签名sign的计算, - -所以千万不要将signSecret当作请求参数传输,请求参数内容见第3点API调用参数说明的表格内容,请求url样例: - -https://open.kwaixiaodian.com/open/xxx/xxx?access_token=xxx&appkey=ks123&method=open.xxx.xxx.xxx¶m=%7B%22title%22%3A%22%E7%9F%AD%E8%A2%96%22%2C%20%22relItemId%22%3A123456%2C%20%22categoryId%22%3A12%7D&version=1&signMethod=MD5×tamp=1583271919000&sign=af2d80958e77e17f1d973003b7b7aec2 -说明:param是json对象,需要排序 - -4.API调用 -确认完成了授权流程后进行API的调用测试,内容详情可见《API调用说明》,也可使用平台提供的API测试工具测试 - -![alt text](image.png) \ No newline at end of file diff --git a/docs/行业电子凭证/解决方案/技术方案/image.png b/docs/行业电子凭证/解决方案/技术方案/image.png deleted file mode 100644 index 1d90660c52fc3f4b7ef2300f27fe3d3f430d9e74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299536 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 p+>KkjfmIdwAl|SMYO7OO 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