From a2d029c7dacd702cf7e68982dcba9d2d3de062c5 Mon Sep 17 00:00:00 2001 From: yml Date: Thu, 21 May 2026 15:07:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E8=BF=81=E7=A7=BBWebhook?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{webhook-service.js => webhook-service.ts} | 15 +++++++++++++-- docs/backend-typescript-migration-plan.md | 8 ++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) rename apps/backend/src/services/order/{webhook-service.js => webhook-service.ts} (98%) diff --git a/apps/backend/src/services/order/webhook-service.js b/apps/backend/src/services/order/webhook-service.ts similarity index 98% rename from apps/backend/src/services/order/webhook-service.js rename to apps/backend/src/services/order/webhook-service.ts index 2fc7a1ba..7b8a1628 100644 --- a/apps/backend/src/services/order/webhook-service.js +++ b/apps/backend/src/services/order/webhook-service.ts @@ -16,6 +16,13 @@ import { logWebhook } from '../../utils/logger.js' import { parseAmountToFen } from '../../utils/money.js' import { nowIso } from '../../utils/time.js' +type AgisoTradeWebhookDeps = { + updateWebhookEvent?: typeof updateWebhookEvent + hasConfiguredOrderItems?: typeof hasConfiguredOrderItems + upsertOrderFromWebhook?: typeof upsertOrderFromWebhook + enrichAgisoXianyuTradeOrder?: typeof enrichAgisoXianyuTradeOrder +} + export async function processAgisoTradeWebhook(requestLike) { const parsed = parseAgisoTradeRequest(requestLike) const webhookEvent = await createWebhookEvent(buildWebhookEventInput(requestLike, parsed)) @@ -87,7 +94,7 @@ export async function executeAgisoTradeWebhookWithDeps( parsed, webhookEventId, { requestId = '' } = {}, - deps = {}, + deps: AgisoTradeWebhookDeps = {}, ) { const updateEvent = deps.updateWebhookEvent || updateWebhookEvent const hasConfiguredItems = deps.hasConfiguredOrderItems || hasConfiguredOrderItems @@ -280,7 +287,11 @@ export async function executeAgisoTradeWebhookWithDeps( } } -async function enrichTradeBeforeUpsert(parsed, { requestId = '', webhookEventId = null } = {}, deps = {}) { +async function enrichTradeBeforeUpsert( + parsed, + { requestId = '', webhookEventId = null } = {}, + deps: AgisoTradeWebhookDeps = {}, +) { const enrichOrder = deps.enrichAgisoXianyuTradeOrder || enrichAgisoXianyuTradeOrder if (parsed.provider !== 'agiso' || parsed.platform !== 'xianyu') { diff --git a/docs/backend-typescript-migration-plan.md b/docs/backend-typescript-migration-plan.md index 90f81aa0..ceadafd1 100644 --- a/docs/backend-typescript-migration-plan.md +++ b/docs/backend-typescript-migration-plan.md @@ -373,6 +373,14 @@ - `npm run typecheck` - `npm run build` - `npm test` 共 139 个用例通过 +65. webhook service 迁移到 `.ts`: + - `src/services/order/webhook-service.ts` +66. webhook 编排依赖注入边界已补最小类型,入口编排、解析、验签、忽略、补查、upsert 逻辑已进入 TypeScript 编译链路 +67. Docker 内验证通过: + - `src/services/order/webhook-service.test.js` 共 9 个用例通过 + - `npm run typecheck` + - `npm run build` + - `npm test` 共 139 个用例通过 ## 下一步建议