diff --git a/apps/backend/config/default.cjs b/apps/backend/config/default.cjs index d47eadd2..017ee19a 100644 --- a/apps/backend/config/default.cjs +++ b/apps/backend/config/default.cjs @@ -95,6 +95,7 @@ module.exports = { vnVerifCodePath: '/public/vn_verif_code', vnVerifyLoginCodePath: '/vn/verify_login_code', vnBindUrlPath: '/vn/bind_url', + vnBindInfoPath: '/vn/bind_info', vnBackPath: '/vn/back', clientSource: 'ct-client', deviceId: '-', diff --git a/apps/backend/data/khhao-sync-state.json b/apps/backend/data/khhao-sync-state.json index 9bff21f7..8bffd08d 100644 --- a/apps/backend/data/khhao-sync-state.json +++ b/apps/backend/data/khhao-sync-state.json @@ -1,13 +1,13 @@ { "syncFromCreatedAt": "2026-05-02T10:53:28.550Z", - "lastRunStartedAt": "2026-05-03T15:01:47.533Z", - "lastRunFinishedAt": "2026-05-03T15:01:48.438Z", + "lastRunStartedAt": "2026-05-03T15:58:17.921Z", + "lastRunFinishedAt": "2026-05-03T15:58:18.685Z", "lastRunStatus": "success", "lastErrorMessage": "", "fetchedCount": 40, - "syncedCount": 0, - "ignoredCount": 40, - "lastOrderCreatedAt": "2026-05-03T15:01:23.000Z", + "syncedCount": 1, + "ignoredCount": 39, + "lastOrderCreatedAt": "2026-05-03T15:57:42.000Z", "watchMode": "normal", "watchOrders": [] } diff --git a/apps/backend/data/kuaishou-cloud-fulfillment.json b/apps/backend/data/kuaishou-cloud-fulfillment.json index 01ed8f5c..9cf0d641 100644 --- a/apps/backend/data/kuaishou-cloud-fulfillment.json +++ b/apps/backend/data/kuaishou-cloud-fulfillment.json @@ -1,4 +1,30 @@ { "enabled": true, - "items": [] + "items": [ + { + "id": "套装-浪漫天命", + "enabled": true, + "priority": 100, + "provider": "khhao", + "platform": "kuaishou", + "shopId": "4269276762", + "internalSkuCode": "套装-浪漫天命", + "internalSkuName": "测试1", + "externalSkuCode": "830", + "externalItemId": "830", + "externalSkuName": "测试1", + "resolvedSkuName": "测试1", + "cloudSourceKey": "default", + "cloudSkuId": 28, + "cloudSkuName": "套装-浪漫天命", + "vnKey": "1", + "autoBuyEnabled": true, + "minAssetReserve": 0, + "autoReturnNumberAfterDispatch": true, + "autoConsumeAfterDispatch": true, + "kuaishouConsumeShopId": "4269276762", + "kuaishouConsumeShopName": "稚嫩游戏交易店", + "notes": "从 khhao 订单 2612300173165561 导入" + } + ] } diff --git a/apps/backend/src/services/claim/kuaishou-cloud-claim-service.js b/apps/backend/src/services/claim/kuaishou-cloud-claim-service.js index aa7592eb..7f86c262 100644 --- a/apps/backend/src/services/claim/kuaishou-cloud-claim-service.js +++ b/apps/backend/src/services/claim/kuaishou-cloud-claim-service.js @@ -156,12 +156,22 @@ function normalizeKuaishouCloudFlow(value) { }, binding: { prepareStatus: String(binding.prepareStatus || 'pending').trim() || 'pending', + cloudSourceKey: String(binding.cloudSourceKey || '').trim(), + skuId: Number(binding.skuId || 0) || 0, + skuName: String(binding.skuName || '').trim(), + vnKey: String(binding.vnKey || '').trim(), + vnId: Number(binding.vnId || 0) || 0, + vnPhone: String(binding.vnPhone || '').trim(), bindUrl: String(binding.bindUrl || '').trim(), + bindPreparedAt: binding.bindPreparedAt || null, }, consume: { status: String(consume.status || 'pending').trim() || 'pending', shopId: String(consume.shopId || '').trim(), shopName: String(consume.shopName || '').trim(), + autoConsumeEnabled: consume.autoConsumeEnabled === true, + consumedAt: consume.consumedAt || null, + errorMessage: String(consume.errorMessage || '').trim(), }, } } diff --git a/apps/backend/src/types/runtime-config.js b/apps/backend/src/types/runtime-config.js index 9834cc5e..b1aab8db 100644 --- a/apps/backend/src/types/runtime-config.js +++ b/apps/backend/src/types/runtime-config.js @@ -115,6 +115,7 @@ export {} * vnVerifCodePath: string * vnVerifyLoginCodePath: string * vnBindUrlPath: string + * vnBindInfoPath: string * vnBackPath: string * publicKeyPem: string * clientSource: string diff --git a/apps/frontend/src/components.d.ts b/apps/frontend/src/components.d.ts index d8e20e2f..9f1844ad 100644 --- a/apps/frontend/src/components.d.ts +++ b/apps/frontend/src/components.d.ts @@ -22,6 +22,9 @@ declare module 'vue' { ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/apps/frontend/src/views/admin/AdminKuaishouCloudFulfillmentView.vue b/apps/frontend/src/views/admin/AdminKuaishouCloudFulfillmentView.vue index 90b0ebd7..45d7e6e3 100644 --- a/apps/frontend/src/views/admin/AdminKuaishouCloudFulfillmentView.vue +++ b/apps/frontend/src/views/admin/AdminKuaishouCloudFulfillmentView.vue @@ -912,80 +912,104 @@ onMounted(loadConfigs) 核销店铺:{{ getConsumeShopSummary(item) }} -
- - - - - - - +
+
+
+ 外部商品 + khhao / 快手侧命中条件 +
- - - +
+ + + + + + + +
+
- - - - - + + +
+
+ 内部履约 + 内部 SKU + cloud 资源 +
+ +
+ + + + + + + + +
+
+
+ +