From 0da7666aa05ede6fe4f9084dd3c52a58103e989b Mon Sep 17 00:00:00 2001 From: yml Date: Thu, 21 May 2026 15:09:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E8=BF=81=E7=A7=BBAgiso?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iso-trade-parsing.js => agiso-trade-parsing.ts} | 14 ++++++++------ docs/backend-typescript-migration-plan.md | 8 ++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) rename apps/backend/src/services/order/{agiso-trade-parsing.js => agiso-trade-parsing.ts} (79%) diff --git a/apps/backend/src/services/order/agiso-trade-parsing.js b/apps/backend/src/services/order/agiso-trade-parsing.ts similarity index 79% rename from apps/backend/src/services/order/agiso-trade-parsing.js rename to apps/backend/src/services/order/agiso-trade-parsing.ts index 96b5051d..c21167f1 100644 --- a/apps/backend/src/services/order/agiso-trade-parsing.js +++ b/apps/backend/src/services/order/agiso-trade-parsing.ts @@ -1,6 +1,8 @@ import { parseJsonObject } from '../../utils/json.js' -export function extractAgisoTradePayload(body) { +type JsonObject = Record + +export function extractAgisoTradePayload(body: unknown): JsonObject { const normalizedBody = normalizeRecord(body) const rawJson = String(normalizedBody.json || normalizedBody.JSON || '').trim() @@ -11,7 +13,7 @@ export function extractAgisoTradePayload(body) { return normalizedBody } -export function resolveAgisoTradePlatformOrderId(payload) { +export function resolveAgisoTradePlatformOrderId(payload: unknown): string { const normalizedPayload = normalizeRecord(payload) const firstItem = extractAgisoTradeOrderItemSources(normalizedPayload)[0] || {} @@ -28,7 +30,7 @@ export function resolveAgisoTradePlatformOrderId(payload) { ]) } -export function extractAgisoTradeOrderItemSources(payload) { +export function extractAgisoTradeOrderItemSources(payload: unknown): JsonObject[] { const normalizedPayload = normalizeRecord(payload) const candidates = [ normalizedPayload.items, @@ -52,11 +54,11 @@ export function extractAgisoTradeOrderItemSources(payload) { return [] } -function normalizeRecord(value) { - return value && typeof value === 'object' && !Array.isArray(value) ? value : {} +function normalizeRecord(value: unknown): JsonObject { + return value && typeof value === 'object' && !Array.isArray(value) ? value as JsonObject : {} } -function pickFirstNonEmpty(values) { +function pickFirstNonEmpty(values: unknown[]): string { for (const value of values) { if (typeof value === 'string' && value.trim()) { return value.trim() diff --git a/docs/backend-typescript-migration-plan.md b/docs/backend-typescript-migration-plan.md index ceadafd1..9fc3d4fc 100644 --- a/docs/backend-typescript-migration-plan.md +++ b/docs/backend-typescript-migration-plan.md @@ -381,6 +381,14 @@ - `npm run typecheck` - `npm run build` - `npm test` 共 139 个用例通过 +68. Agiso webhook 解析基础模块迁移到 `.ts`: + - `src/services/order/agiso-trade-parsing.ts` +69. Agiso webhook 原始 payload、订单号解析、商品来源数组提取已显式类型化 +70. Docker 内验证通过: + - `src/services/order/agiso-trade-parsing.test.js` 与 `src/services/order/webhook-service.test.js` 共 12 个用例通过 + - `npm run typecheck` + - `npm run build` + - `npm test` 共 139 个用例通过 ## 下一步建议