From d629bc96c88d7bf02fe2ad11fa72bbfac9e18e5c Mon Sep 17 00:00:00 2001 From: yml Date: Mon, 4 May 2026 15:25:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E5=90=8E=E5=8F=B0=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E9=85=8D=E7=BD=AE=E6=9C=8D=E5=8A=A1=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/routes/admin/platform-config.js | 2 +- .../src/services/admin/admin-service.js | 2 +- .../cloudtentacles.js} | 6 +- .../cloudtentacles.test.js} | 2 +- .../context.js} | 0 .../context.test.js} | 2 +- .../domain.js} | 4 +- .../domain.test.js} | 2 +- .../fulfillment.js} | 8 +- .../fulfillment.test.js} | 2 +- .../mappers.js} | 0 .../mappers.test.js} | 2 +- .../observed-products.js} | 4 +- .../observed-products.test.js} | 2 +- .../service.js} | 104 +++++++++--------- .../validation.js} | 8 +- .../validation.test.js} | 2 +- 17 files changed, 76 insertions(+), 76 deletions(-) rename apps/backend/src/services/admin/{admin-platform-config-cloudtentacles.js => platform-config/cloudtentacles.js} (85%) rename apps/backend/src/services/admin/{admin-platform-config-cloudtentacles.test.js => platform-config/cloudtentacles.test.js} (96%) rename apps/backend/src/services/admin/{admin-platform-config-context.js => platform-config/context.js} (100%) rename apps/backend/src/services/admin/{admin-platform-config-context.test.js => platform-config/context.test.js} (98%) rename apps/backend/src/services/admin/{admin-platform-config-domain.js => platform-config/domain.js} (96%) rename apps/backend/src/services/admin/{admin-platform-config-domain.test.js => platform-config/domain.test.js} (99%) rename apps/backend/src/services/admin/{admin-platform-config-fulfillment.js => platform-config/fulfillment.js} (93%) rename apps/backend/src/services/admin/{admin-platform-config-fulfillment.test.js => platform-config/fulfillment.test.js} (98%) rename apps/backend/src/services/admin/{admin-platform-config-mappers.js => platform-config/mappers.js} (100%) rename apps/backend/src/services/admin/{admin-platform-config-mappers.test.js => platform-config/mappers.test.js} (99%) rename apps/backend/src/services/admin/{admin-platform-config-observed-products.js => platform-config/observed-products.js} (94%) rename apps/backend/src/services/admin/{admin-platform-config-observed-products.test.js => platform-config/observed-products.test.js} (97%) rename apps/backend/src/services/admin/{admin-platform-config-service.js => platform-config/service.js} (84%) rename apps/backend/src/services/admin/{admin-platform-config-validation.js => platform-config/validation.js} (94%) rename apps/backend/src/services/admin/{admin-platform-config-validation.test.js => platform-config/validation.test.js} (98%) diff --git a/apps/backend/src/routes/admin/platform-config.js b/apps/backend/src/routes/admin/platform-config.js index 8f459928..5401a53d 100644 --- a/apps/backend/src/routes/admin/platform-config.js +++ b/apps/backend/src/routes/admin/platform-config.js @@ -39,7 +39,7 @@ import { updateAdminFulfillmentBindingConfigs, verifyAdminCloudtentaclesLoginCode, validateAdminCloudtentaclesSession, -} from '../../services/admin/admin-platform-config-service.js' +} from '../../services/admin/platform-config/service.js' import { createJsonHandler, requireAdminRoles } from './shared.js' /** @typedef {import('../../types/admin-route-inputs.js').AdminAgisoShopConfigRouteBody} AdminAgisoShopConfigRouteBody */ diff --git a/apps/backend/src/services/admin/admin-service.js b/apps/backend/src/services/admin/admin-service.js index 8b596b89..54f372d4 100644 --- a/apps/backend/src/services/admin/admin-service.js +++ b/apps/backend/src/services/admin/admin-service.js @@ -82,7 +82,7 @@ export { lookupAdminFulfillmentBindingOrder, updateAdminAgisoShopConfigs, updateAdminFulfillmentBindingConfigs, -} from './admin-platform-config-service.js' +} from './platform-config/service.js' export { getAdminDashboardSummary } from './admin-dashboard-service.js' export { getAdminMessageDeliveries } from './admin-message-delivery-service.js' diff --git a/apps/backend/src/services/admin/admin-platform-config-cloudtentacles.js b/apps/backend/src/services/admin/platform-config/cloudtentacles.js similarity index 85% rename from apps/backend/src/services/admin/admin-platform-config-cloudtentacles.js rename to apps/backend/src/services/admin/platform-config/cloudtentacles.js index 4c5eb627..8b65709d 100644 --- a/apps/backend/src/services/admin/admin-platform-config-cloudtentacles.js +++ b/apps/backend/src/services/admin/platform-config/cloudtentacles.js @@ -1,8 +1,8 @@ // @ts-check -import { getCloudtentaclesSourceConfig } from '../platforms/cloudtentacles/source-config-service.js' -import { getCloudtentaclesSessionState } from '../platforms/cloudtentacles/session-state-service.js' -import { pickFirstNonEmpty, resolveCloudtentaclesAdminContext } from './admin-platform-config-context.js' +import { getCloudtentaclesSourceConfig } from '../../platforms/cloudtentacles/source-config-service.js' +import { getCloudtentaclesSessionState } from '../../platforms/cloudtentacles/session-state-service.js' +import { pickFirstNonEmpty, resolveCloudtentaclesAdminContext } from './context.js' const DEFAULT_CLOUDTENTACLES_BASE_URL = 'https://123.207.217.176' diff --git a/apps/backend/src/services/admin/admin-platform-config-cloudtentacles.test.js b/apps/backend/src/services/admin/platform-config/cloudtentacles.test.js similarity index 96% rename from apps/backend/src/services/admin/admin-platform-config-cloudtentacles.test.js rename to apps/backend/src/services/admin/platform-config/cloudtentacles.test.js index f643dc36..779f2298 100644 --- a/apps/backend/src/services/admin/admin-platform-config-cloudtentacles.test.js +++ b/apps/backend/src/services/admin/platform-config/cloudtentacles.test.js @@ -4,7 +4,7 @@ import assert from 'node:assert/strict' import { resolveAdminCloudtentaclesCredentialPayload, resolveAdminCloudtentaclesSessionPayload, -} from './admin-platform-config-cloudtentacles.js' +} from './cloudtentacles.js' test('resolveAdminCloudtentaclesCredentialPayload merges payload and saved source defaults', () => { assert.deepEqual( diff --git a/apps/backend/src/services/admin/admin-platform-config-context.js b/apps/backend/src/services/admin/platform-config/context.js similarity index 100% rename from apps/backend/src/services/admin/admin-platform-config-context.js rename to apps/backend/src/services/admin/platform-config/context.js diff --git a/apps/backend/src/services/admin/admin-platform-config-context.test.js b/apps/backend/src/services/admin/platform-config/context.test.js similarity index 98% rename from apps/backend/src/services/admin/admin-platform-config-context.test.js rename to apps/backend/src/services/admin/platform-config/context.test.js index c454a69c..4094d154 100644 --- a/apps/backend/src/services/admin/admin-platform-config-context.test.js +++ b/apps/backend/src/services/admin/platform-config/context.test.js @@ -7,7 +7,7 @@ import { pickFirstNonEmpty, resolveCloudtentaclesAdminContext, resolveKuaishouEticketAdminContext, -} from './admin-platform-config-context.js' +} from './context.js' test('pickFirstNonEmpty returns first trimmed non-empty string value', () => { assert.equal(pickFirstNonEmpty(['', ' ', ' value ', 'fallback']), 'value') diff --git a/apps/backend/src/services/admin/admin-platform-config-domain.js b/apps/backend/src/services/admin/platform-config/domain.js similarity index 96% rename from apps/backend/src/services/admin/admin-platform-config-domain.js rename to apps/backend/src/services/admin/platform-config/domain.js index 9067529b..f3a38fb1 100644 --- a/apps/backend/src/services/admin/admin-platform-config-domain.js +++ b/apps/backend/src/services/admin/platform-config/domain.js @@ -1,7 +1,7 @@ // @ts-check -import { normalizeAgisoMessageTemplate } from '../platforms/agiso/xianyu/message-service.js' -import { maskSecret } from './admin-platform-config-mappers.js' +import { normalizeAgisoMessageTemplate } from '../../platforms/agiso/xianyu/message-service.js' +import { maskSecret } from './mappers.js' export function mapAdminAgisoMessagingDefaults(defaults = {}) { return { diff --git a/apps/backend/src/services/admin/admin-platform-config-domain.test.js b/apps/backend/src/services/admin/platform-config/domain.test.js similarity index 99% rename from apps/backend/src/services/admin/admin-platform-config-domain.test.js rename to apps/backend/src/services/admin/platform-config/domain.test.js index 0672e77a..4a1dbc44 100644 --- a/apps/backend/src/services/admin/admin-platform-config-domain.test.js +++ b/apps/backend/src/services/admin/platform-config/domain.test.js @@ -10,7 +10,7 @@ import { mapAdminObservedProductItem, matchesObservedProduct, resolveFulfillmentBindingMatchShopId, -} from './admin-platform-config-domain.js' +} from './domain.js' test('mapAdminAgisoMessagingDefaults normalizes escaped newlines', () => { assert.deepEqual( diff --git a/apps/backend/src/services/admin/admin-platform-config-fulfillment.js b/apps/backend/src/services/admin/platform-config/fulfillment.js similarity index 93% rename from apps/backend/src/services/admin/admin-platform-config-fulfillment.js rename to apps/backend/src/services/admin/platform-config/fulfillment.js index b044f945..28f905b2 100644 --- a/apps/backend/src/services/admin/admin-platform-config-fulfillment.js +++ b/apps/backend/src/services/admin/platform-config/fulfillment.js @@ -1,9 +1,9 @@ // @ts-check -import { createHttpError } from '../../utils/http.js' -import { formatFenToAmount } from '../../utils/money.js' -import { isPlainObject, pickFirstNonEmpty } from './admin-platform-config-context.js' -import { mapAdminObservedProductItem } from './admin-platform-config-domain.js' +import { createHttpError } from '../../../utils/http.js' +import { formatFenToAmount } from '../../../utils/money.js' +import { isPlainObject, pickFirstNonEmpty } from './context.js' +import { mapAdminObservedProductItem } from './domain.js' export function normalizeFulfillmentLookupPayload(payload = {}) { const provider = String(payload.provider || 'agiso').trim() || 'agiso' diff --git a/apps/backend/src/services/admin/admin-platform-config-fulfillment.test.js b/apps/backend/src/services/admin/platform-config/fulfillment.test.js similarity index 98% rename from apps/backend/src/services/admin/admin-platform-config-fulfillment.test.js rename to apps/backend/src/services/admin/platform-config/fulfillment.test.js index 8ee679b2..1f43e4df 100644 --- a/apps/backend/src/services/admin/admin-platform-config-fulfillment.test.js +++ b/apps/backend/src/services/admin/platform-config/fulfillment.test.js @@ -5,7 +5,7 @@ import { buildFulfillmentLookupResult, normalizeFulfillmentLookupPayload, resolveFulfillmentLookupDetail, -} from './admin-platform-config-fulfillment.js' +} from './fulfillment.js' test('normalizeFulfillmentLookupPayload validates required fields and defaults provider/platform', () => { assert.deepEqual( diff --git a/apps/backend/src/services/admin/admin-platform-config-mappers.js b/apps/backend/src/services/admin/platform-config/mappers.js similarity index 100% rename from apps/backend/src/services/admin/admin-platform-config-mappers.js rename to apps/backend/src/services/admin/platform-config/mappers.js diff --git a/apps/backend/src/services/admin/admin-platform-config-mappers.test.js b/apps/backend/src/services/admin/platform-config/mappers.test.js similarity index 99% rename from apps/backend/src/services/admin/admin-platform-config-mappers.test.js rename to apps/backend/src/services/admin/platform-config/mappers.test.js index 6e4bea1a..d34ae1b4 100644 --- a/apps/backend/src/services/admin/admin-platform-config-mappers.test.js +++ b/apps/backend/src/services/admin/platform-config/mappers.test.js @@ -9,7 +9,7 @@ import { mapAdminKuaishouEticketSourceConfig, maskPhone, maskSecret, -} from './admin-platform-config-mappers.js' +} from './mappers.js' test('maskSecret preserves edges while hiding middle characters', () => { assert.equal(maskSecret('abcdef1234567890'), 'abcdef****567890') diff --git a/apps/backend/src/services/admin/admin-platform-config-observed-products.js b/apps/backend/src/services/admin/platform-config/observed-products.js similarity index 94% rename from apps/backend/src/services/admin/admin-platform-config-observed-products.js rename to apps/backend/src/services/admin/platform-config/observed-products.js index adef2858..0c66b338 100644 --- a/apps/backend/src/services/admin/admin-platform-config-observed-products.js +++ b/apps/backend/src/services/admin/platform-config/observed-products.js @@ -1,7 +1,7 @@ // @ts-check -import { query } from '../../db/client.js' -import { mapAdminObservedProductItem } from './admin-platform-config-domain.js' +import { query } from '../../../db/client.js' +import { mapAdminObservedProductItem } from './domain.js' export const ADMIN_OBSERVED_PRODUCTS_QUERY = ` SELECT diff --git a/apps/backend/src/services/admin/admin-platform-config-observed-products.test.js b/apps/backend/src/services/admin/platform-config/observed-products.test.js similarity index 97% rename from apps/backend/src/services/admin/admin-platform-config-observed-products.test.js rename to apps/backend/src/services/admin/platform-config/observed-products.test.js index 516bc0b6..8f1a61ce 100644 --- a/apps/backend/src/services/admin/admin-platform-config-observed-products.test.js +++ b/apps/backend/src/services/admin/platform-config/observed-products.test.js @@ -5,7 +5,7 @@ import { ADMIN_OBSERVED_PRODUCTS_QUERY, listAdminObservedProducts, mapAdminObservedProductRow, -} from './admin-platform-config-observed-products.js' +} from './observed-products.js' test('mapAdminObservedProductRow normalizes query row fields', () => { assert.deepEqual( diff --git a/apps/backend/src/services/admin/admin-platform-config-service.js b/apps/backend/src/services/admin/platform-config/service.js similarity index 84% rename from apps/backend/src/services/admin/admin-platform-config-service.js rename to apps/backend/src/services/admin/platform-config/service.js index 6350e0d7..3cdd43b8 100644 --- a/apps/backend/src/services/admin/admin-platform-config-service.js +++ b/apps/backend/src/services/admin/platform-config/service.js @@ -1,24 +1,24 @@ // @ts-check -import { query } from '../../db/client.js' +import { query } from '../../../db/client.js' import { getAgisoMessagingDefaults, getAgisoShopConfig, getAgisoShopConfigMap, getAgisoShopsFilePath, saveAgisoMessagingConfig, -} from '../platforms/agiso/shop-config-service.js' -import { enrichAgisoXianyuTradeOrder } from '../platforms/agiso/xianyu/order-detail-service.js' -import { mapKhhaoOrderPreviewList } from '../platforms/khhao/order-mapper-service.js' -import { queryKhhaoOrderList } from '../platforms/khhao/order-query-service.js' -import { syncKhhaoOrders } from '../platforms/khhao/order-sync-service.js' -import { getKhhaoSourceConfig, getKhhaoSourcesFilePath, saveKhhaoSourceConfig } from '../platforms/khhao/source-config-service.js' -import { ensureKhhaoSyncBaseline, getKhhaoSyncState, getKhhaoSyncStateFilePath } from '../platforms/khhao/sync-state-service.js' -import { loginKhhaoSession } from '../platforms/khhao/session-service.js' +} from '../../platforms/agiso/shop-config-service.js' +import { enrichAgisoXianyuTradeOrder } from '../../platforms/agiso/xianyu/order-detail-service.js' +import { mapKhhaoOrderPreviewList } from '../../platforms/khhao/order-mapper-service.js' +import { queryKhhaoOrderList } from '../../platforms/khhao/order-query-service.js' +import { syncKhhaoOrders } from '../../platforms/khhao/order-sync-service.js' +import { getKhhaoSourceConfig, getKhhaoSourcesFilePath, saveKhhaoSourceConfig } from '../../platforms/khhao/source-config-service.js' +import { ensureKhhaoSyncBaseline, getKhhaoSyncState, getKhhaoSyncStateFilePath } from '../../platforms/khhao/sync-state-service.js' +import { loginKhhaoSession } from '../../platforms/khhao/session-service.js' import { consumeKuaishouEticket, queryKuaishouEticketConsumeDetail, -} from '../platforms/kuaishou-eticket/consume-service.js' +} from '../../platforms/kuaishou-eticket/consume-service.js' import { findKuaishouEticketShopConfig, getFirstAvailableKuaishouEticketShop, @@ -27,32 +27,32 @@ import { listKuaishouEticketShopConfigs, resolveKuaishouEticketShopConfig, saveKuaishouEticketSourceConfig, -} from '../platforms/kuaishou-eticket/source-config-service.js' -import { queryKuaishouEticketStableInfo } from '../platforms/kuaishou-eticket/info-service.js' +} from '../../platforms/kuaishou-eticket/source-config-service.js' +import { queryKuaishouEticketStableInfo } from '../../platforms/kuaishou-eticket/info-service.js' import { getCloudtentaclesSourceConfig, getCloudtentaclesSourcesFilePath, saveCloudtentaclesSourceConfig, -} from '../platforms/cloudtentacles/source-config-service.js' +} from '../../platforms/cloudtentacles/source-config-service.js' import { clearCloudtentaclesSessionState, getCloudtentaclesSessionFilePath, getCloudtentaclesSessionState, saveCloudtentaclesSessionState, -} from '../platforms/cloudtentacles/session-state-service.js' +} from '../../platforms/cloudtentacles/session-state-service.js' import { loginCloudtentaclesSession, sendCloudtentaclesSmsCode, validateCloudtentaclesSession, -} from '../platforms/cloudtentacles/session-service.js' +} from '../../platforms/cloudtentacles/session-service.js' import { buyCloudtentaclesSku, getCloudtentaclesAsset, getCloudtentaclesCategories, listCloudtentaclesSku, useCloudtentaclesSku, -} from '../platforms/cloudtentacles/catalog-service.js' -import { getCloudtentaclesKnapsack } from '../platforms/cloudtentacles/knapsack-service.js' +} from '../../platforms/cloudtentacles/catalog-service.js' +import { getCloudtentaclesKnapsack } from '../../platforms/cloudtentacles/knapsack-service.js' import { appointCloudtentaclesVirtualNumber, backCloudtentaclesVirtualNumber, @@ -61,49 +61,49 @@ import { getCloudtentaclesBindUrl, listCloudtentaclesVirtualNumbers, verifyCloudtentaclesLoginCode, -} from '../platforms/cloudtentacles/virtual-number-service.js' -import { runCloudtentaclesFullDebugFlow } from '../platforms/cloudtentacles/debug-flow-service.js' +} from '../../platforms/cloudtentacles/virtual-number-service.js' +import { runCloudtentaclesFullDebugFlow } from '../../platforms/cloudtentacles/debug-flow-service.js' import { getOrderFulfillmentBindingConfigs, getOrderFulfillmentBindingsFilePath, saveOrderFulfillmentBindingConfigs, -} from '../order/fulfillment-binding-config-service.js' +} from '../../order/fulfillment-binding-config-service.js' import { getKuaishouCloudFulfillmentConfig, getKuaishouCloudFulfillmentFilePath, saveKuaishouCloudFulfillmentConfig, -} from '../order/kuaishou-cloud-fulfillment-config-service.js' -import { getFulfillmentProfileByKey } from '../../repositories/fulfillment-profile-repo.js' -import { createHttpError } from '../../utils/http.js' -import { syncConfiguredFulfillmentBindings } from '../bootstrap/fulfillment-bootstrap-service.js' -import { resolveDisplayShopName } from './admin-read-shared-helpers.js' +} from '../../order/kuaishou-cloud-fulfillment-config-service.js' +import { getFulfillmentProfileByKey } from '../../../repositories/fulfillment-profile-repo.js' +import { createHttpError } from '../../../utils/http.js' +import { syncConfiguredFulfillmentBindings } from '../../bootstrap/fulfillment-bootstrap-service.js' +import { resolveDisplayShopName } from '../admin-read-shared-helpers.js' import { hasCloudtentaclesCredentialContextChanged, isPlainObject, pickFirstNonEmpty, resolveKuaishouEticketAdminContext, -} from './admin-platform-config-context.js' +} from './context.js' import { buildFulfillmentLookupResult, normalizeFulfillmentLookupPayload, resolveFulfillmentLookupDetail, -} from './admin-platform-config-fulfillment.js' +} from './fulfillment.js' import { resolveAdminCloudtentaclesCredentialPayload, resolveAdminCloudtentaclesSessionPayload, -} from './admin-platform-config-cloudtentacles.js' -import { listAdminObservedProducts } from './admin-platform-config-observed-products.js' +} from './cloudtentacles.js' +import { listAdminObservedProducts } from './observed-products.js' import { assertAdminFulfillmentBindingsInput, buildAdminFulfillmentBindingUniqueKey, normalizeAdminFulfillmentBindingItem, -} from './admin-platform-config-validation.js' +} from './validation.js' import { applyOptionalStringField, mapAdminAgisoMessagingDefaults, mapAdminAgisoShopConfigItem, mapAdminFulfillmentBindingConfigItem, -} from './admin-platform-config-domain.js' +} from './domain.js' import { mapAdminCloudtentaclesSession, mapAdminCloudtentaclesSourceConfig, @@ -113,28 +113,28 @@ import { mapAdminKuaishouEticketSourceConfig, maskPhone, maskSecret, -} from './admin-platform-config-mappers.js' +} from './mappers.js' -/** @typedef {import('../../types/admin-write-inputs.js').AdminAgisoShopConfigSaveInput} AdminAgisoShopConfigSaveInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoSourceConfigInput} AdminKhhaoSourceConfigInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketSourceConfigInput} AdminKuaishouEticketSourceConfigInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketShopInfoInput} AdminKuaishouEticketShopInfoInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketDetailQueryInput} AdminKuaishouEticketDetailQueryInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouEticketConsumeInput} AdminKuaishouEticketConsumeInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoOrderQueryInput} AdminKhhaoOrderQueryInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKhhaoTestLoginInput} AdminKhhaoTestLoginInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSourceConfigInput} AdminCloudtentaclesSourceConfigInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminKuaishouCloudFulfillmentConfigInput} AdminKuaishouCloudFulfillmentConfigInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSendSmsCodeInput} AdminCloudtentaclesSendSmsCodeInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesTestLoginInput} AdminCloudtentaclesTestLoginInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesValidateSessionInput} AdminCloudtentaclesValidateSessionInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesCatalogQueryInput} AdminCloudtentaclesCatalogQueryInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSkuBuyInput} AdminCloudtentaclesSkuBuyInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesSkuUseInput} AdminCloudtentaclesSkuUseInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesVirtualNumberInput} AdminCloudtentaclesVirtualNumberInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminCloudtentaclesFullFlowInput} AdminCloudtentaclesFullFlowInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminFulfillmentBindingConfigSaveInput} AdminFulfillmentBindingConfigSaveInput */ -/** @typedef {import('../../types/admin-write-inputs.js').AdminFulfillmentBindingLookupInput} AdminFulfillmentBindingLookupInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminAgisoShopConfigSaveInput} AdminAgisoShopConfigSaveInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoSourceConfigInput} AdminKhhaoSourceConfigInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketSourceConfigInput} AdminKuaishouEticketSourceConfigInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketShopInfoInput} AdminKuaishouEticketShopInfoInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketDetailQueryInput} AdminKuaishouEticketDetailQueryInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouEticketConsumeInput} AdminKuaishouEticketConsumeInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoOrderQueryInput} AdminKhhaoOrderQueryInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKhhaoTestLoginInput} AdminKhhaoTestLoginInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSourceConfigInput} AdminCloudtentaclesSourceConfigInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminKuaishouCloudFulfillmentConfigInput} AdminKuaishouCloudFulfillmentConfigInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSendSmsCodeInput} AdminCloudtentaclesSendSmsCodeInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesTestLoginInput} AdminCloudtentaclesTestLoginInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesValidateSessionInput} AdminCloudtentaclesValidateSessionInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesCatalogQueryInput} AdminCloudtentaclesCatalogQueryInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuBuyInput} AdminCloudtentaclesSkuBuyInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesSkuUseInput} AdminCloudtentaclesSkuUseInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesVirtualNumberInput} AdminCloudtentaclesVirtualNumberInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminCloudtentaclesFullFlowInput} AdminCloudtentaclesFullFlowInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminFulfillmentBindingConfigSaveInput} AdminFulfillmentBindingConfigSaveInput */ +/** @typedef {import('../../../types/admin-write-inputs.js').AdminFulfillmentBindingLookupInput} AdminFulfillmentBindingLookupInput */ export async function getAdminAgisoShopConfigs() { const configMap = getAgisoShopConfigMap() diff --git a/apps/backend/src/services/admin/admin-platform-config-validation.js b/apps/backend/src/services/admin/platform-config/validation.js similarity index 94% rename from apps/backend/src/services/admin/admin-platform-config-validation.js rename to apps/backend/src/services/admin/platform-config/validation.js index d3924d99..d1f4c21f 100644 --- a/apps/backend/src/services/admin/admin-platform-config-validation.js +++ b/apps/backend/src/services/admin/platform-config/validation.js @@ -1,9 +1,9 @@ // @ts-check -import { createHttpError } from '../../utils/http.js' -import { normalizeProductName } from '../order/product-match-service.js' -import { isPlainObject } from './admin-platform-config-context.js' -import { resolveFulfillmentBindingMatchShopId } from './admin-platform-config-domain.js' +import { createHttpError } from '../../../utils/http.js' +import { normalizeProductName } from '../../order/product-match-service.js' +import { isPlainObject } from './context.js' +import { resolveFulfillmentBindingMatchShopId } from './domain.js' export function assertAdminFulfillmentBindingsInput(bindings) { if (Array.isArray(bindings)) { diff --git a/apps/backend/src/services/admin/admin-platform-config-validation.test.js b/apps/backend/src/services/admin/platform-config/validation.test.js similarity index 98% rename from apps/backend/src/services/admin/admin-platform-config-validation.test.js rename to apps/backend/src/services/admin/platform-config/validation.test.js index f3177f58..7f4eb892 100644 --- a/apps/backend/src/services/admin/admin-platform-config-validation.test.js +++ b/apps/backend/src/services/admin/platform-config/validation.test.js @@ -5,7 +5,7 @@ import { assertAdminFulfillmentBindingsInput, buildAdminFulfillmentBindingUniqueKey, normalizeAdminFulfillmentBindingItem, -} from './admin-platform-config-validation.js' +} from './validation.js' test('assertAdminFulfillmentBindingsInput rejects non-array payloads', () => { assert.doesNotThrow(() => assertAdminFulfillmentBindingsInput([]))