diff --git a/apps/frontend/src/composables/useAdminManualRedeemPage.ts b/apps/frontend/src/composables/useAdminManualRedeemPage.ts index 2a7a5b80..7e3446af 100644 --- a/apps/frontend/src/composables/useAdminManualRedeemPage.ts +++ b/apps/frontend/src/composables/useAdminManualRedeemPage.ts @@ -22,7 +22,6 @@ import { notifyTencentActionError } from './tencent/session-errors' import { useSessionPolling, useSessionQrDisplay, - useSessionRoleFacts, useSessionResultFacts, buildRedeemBlockedReason, resolveTaskStatusLabel, @@ -92,7 +91,7 @@ export function useAdminManualRedeemPage() { } = useSessionPolling({ hasSession: computed(() => Boolean(task.value?.taskId && hasSession.value)), shouldKeepPolling: computed(() => shouldKeepPolling(detail.value)), - onPollTick: () => refreshSessionSummary({ silent: true }), + onPollTick: async () => { await refreshSessionSummary({ silent: true }) }, pollWarningPrefix: '人工兑换状态刷新失败', }) @@ -122,12 +121,6 @@ export function useAdminManualRedeemPage() { () => `请让客户使用${loginTypeLabel.value}扫码,并在手机上确认登录`, ) - useSessionRoleFacts({ - activityInfo, - statusLabel, - roleFactDefaults: { nickname: '等待客户登录' }, - }) - const proofValue = computed(() => manualRequest.value?.proofValue || order.value?.platformOrderId || '-') const { resultFacts } = useSessionResultFacts({ diff --git a/apps/frontend/src/composables/useClaimPage.ts b/apps/frontend/src/composables/useClaimPage.ts index 6f56ab04..824fc642 100644 --- a/apps/frontend/src/composables/useClaimPage.ts +++ b/apps/frontend/src/composables/useClaimPage.ts @@ -17,7 +17,6 @@ import { notifyTencentActionError } from './tencent/session-errors' import { useSessionPolling, useSessionQrDisplay, - useSessionRoleFacts, useSessionResultFacts, buildRedeemBlockedReason, resolveTaskStatusLabel, @@ -59,7 +58,7 @@ export function useClaimPage(token: string) { } = useSessionPolling({ hasSession, shouldKeepPolling: computed(() => shouldKeepPolling(detail.value)), - onPollTick: () => refreshSessionSummary({ silent: true }), + onPollTick: async () => { await refreshSessionSummary({ silent: true }) }, pollWarningPrefix: '领取状态刷新失败', }) @@ -88,12 +87,6 @@ export function useClaimPage(token: string) { () => `请使用${loginTypeLabel.value}扫描二维码,并在手机上确认登录`, ) - useSessionRoleFacts({ - activityInfo, - statusLabel, - roleFactDefaults: { nickname: '等待扫码登录' }, - }) - // Claim pages show 4 role facts, but original only had 3 (no area). // Override roleFacts to match original exactly: const claimRoleFacts = computed(() => [ diff --git a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/composables/useKuaishouCloudNinetyone.ts b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/composables/useKuaishouCloudNinetyone.ts index 54e77eb1..af95e43d 100644 --- a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/composables/useKuaishouCloudNinetyone.ts +++ b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/composables/useKuaishouCloudNinetyone.ts @@ -39,7 +39,9 @@ export function useKuaishouCloudNinetyone( function createItemFromNinetyoneOrder(item: AdminNinetyoneOrderItem): EditableItem { const productNo = String(item.productNo || '').trim() const productName = String(item.productName || productNo).trim() - const shop = config.getDefaultKuaishouConsumeShop() + const defaultShop = config.getDefaultKuaishouConsumeShop() + const shopOpts = config.getKuaishouConsumeShopOptions() + const shop = defaultShop || (shopOpts.length > 0 ? shopOpts[0] : null) return { localId: crypto.randomUUID(), id: '', diff --git a/apps/frontend/src/views/admin/inventory/AdminInventoryView.vue b/apps/frontend/src/views/admin/inventory/AdminInventoryView.vue index 8311f2b3..ab3f0761 100644 --- a/apps/frontend/src/views/admin/inventory/AdminInventoryView.vue +++ b/apps/frontend/src/views/admin/inventory/AdminInventoryView.vue @@ -48,6 +48,7 @@ const { getSkuNamingHint, formatInventoryStatus, getGroupSuggestion, + // utils formatAdminDateTime, } = useAdminInventory() diff --git a/deploy/docker/backend-dev.Dockerfile b/deploy/docker/backend-dev.Dockerfile index 3a14da9a..e54f7ab0 100644 --- a/deploy/docker/backend-dev.Dockerfile +++ b/deploy/docker/backend-dev.Dockerfile @@ -1,6 +1,6 @@ # Dev Dockerfile — single-stage, root, VNC/X11 + Playwright # For production, see backend.Dockerfile (multi-stage build) -FROM node:22-bookworm +FROM docker.m.daocloud.io/library/node:22-bookworm ARG DEBIAN_MIRROR=mirrors.cloud.tencent.com ARG NPM_REGISTRY=https://registry.npmmirror.com diff --git a/deploy/docker/backend.Dockerfile b/deploy/docker/backend.Dockerfile index 04ba5afd..268aec3d 100644 --- a/deploy/docker/backend.Dockerfile +++ b/deploy/docker/backend.Dockerfile @@ -7,7 +7,7 @@ # ============================================================================ # --------------------------- Builder Stage ----------------------------------- -FROM node:22-bookworm AS builder +FROM docker.m.daocloud.io/library/node:22-bookworm AS builder ARG DEBIAN_MIRROR=mirrors.cloud.tencent.com ARG NPM_REGISTRY=https://registry.npmmirror.com @@ -49,7 +49,7 @@ RUN npm run build \ && npm prune --omit=dev # --------------------------- Runtime Stage ----------------------------------- -FROM node:22-bookworm-slim AS runtime +FROM docker.m.daocloud.io/library/node:22-bookworm-slim AS runtime # HTTP mirrors — see builder note about OrbStack TLS ENV DEBIAN_FRONTEND=noninteractive diff --git a/deploy/docker/dev-caddy.Dockerfile b/deploy/docker/dev-caddy.Dockerfile index d456939f..08e6d2be 100644 --- a/deploy/docker/dev-caddy.Dockerfile +++ b/deploy/docker/dev-caddy.Dockerfile @@ -1,4 +1,4 @@ -FROM caddy:2-alpine +FROM docker.m.daocloud.io/library/caddy:2-alpine ENV TZ=Asia/Shanghai diff --git a/deploy/docker/frontend.Dockerfile b/deploy/docker/frontend.Dockerfile index d3a92744..d72fcaae 100644 --- a/deploy/docker/frontend.Dockerfile +++ b/deploy/docker/frontend.Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-bookworm AS builder +FROM docker.m.daocloud.io/library/node:22-bookworm AS builder ARG NPM_REGISTRY=https://registry.npmmirror.com @@ -14,7 +14,7 @@ RUN --mount=type=cache,target=/root/.npm,sharing=locked \ COPY apps/frontend/ ./ RUN npm run build -FROM caddy:2-alpine +FROM docker.m.daocloud.io/library/caddy:2-alpine ENV TZ=Asia/Shanghai diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 04448711..a2e3f92e 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,6 +1,6 @@ services: postgres: - image: postgres:16-bookworm + image: docker.m.daocloud.io/library/postgres:16-bookworm restart: unless-stopped environment: TZ: ${TZ:-Asia/Shanghai} @@ -88,7 +88,7 @@ services: - "${TENCENT_BROWSER_NOVNC_PORT:-6080}:6080" frontend: - image: node:22-bookworm-slim + image: docker.m.daocloud.io/library/node:22-bookworm-slim working_dir: /app restart: unless-stopped command: >- @@ -105,7 +105,7 @@ services: - frontend_node_modules:/app/node_modules web: - image: caddy:2-alpine + image: docker.m.daocloud.io/library/caddy:2-alpine restart: unless-stopped depends_on: backend: diff --git a/docker-compose.yml b/docker-compose.yml index ddc7357d..22e4ad42 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: postgres: - image: postgres:16-bookworm + image: docker.m.daocloud.io/library/postgres:16-bookworm restart: unless-stopped environment: TZ: ${TZ:-Asia/Shanghai} @@ -8,7 +8,11 @@ services: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-order_site}"] + test: + [ + "CMD-SHELL", + "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-order_site}", + ] interval: 5s timeout: 5s retries: 20 @@ -40,7 +44,8 @@ services: ocr-worker: condition: service_healthy healthcheck: - test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:3000/health/ready || exit 1"] + test: + ["CMD-SHELL", "curl -fsS http://127.0.0.1:3000/health/ready || exit 1"] interval: 5s timeout: 5s retries: 20