From 2b79034a98ce3b80e81f539e0dc74334b7abb79f Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 21 Aug 2026 17:25:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E5=90=8E=E5=8F=B0=E5=A4=A7?= =?UTF-8?q?=E5=8E=85=E6=B1=87=E6=80=BB=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/worker-platform/admin-service.ts | 57 ++----------------- .../admin-worker-platform-summary-service.ts | 54 ++++++++++++++++++ .../src/services/worker-platform/index.ts | 1 + 3 files changed, 60 insertions(+), 52 deletions(-) create mode 100644 apps/backend/src/services/worker-platform/admin-worker-platform-summary-service.ts diff --git a/apps/backend/src/services/worker-platform/admin-service.ts b/apps/backend/src/services/worker-platform/admin-service.ts index 6ae2eac2..ab74e8a8 100644 --- a/apps/backend/src/services/worker-platform/admin-service.ts +++ b/apps/backend/src/services/worker-platform/admin-service.ts @@ -18,7 +18,6 @@ import { listWorkOrders, listWorkProductRules, listWorkProductRuleMappings, - listWorkerUsers, updateWorkOrder, type WorkOrderRow, } from '../../repositories/worker-platform/index.js' @@ -30,13 +29,11 @@ import { nowIso } from '../../utils/time.js' import { safeParseJson } from '../admin/admin-query-utils.js' import { getWorkerFinanceConfig } from './worker-finance-config-service.js' import { getWorkerProductMatchConfig } from './worker-product-match-config-service.js' -import { getWorkerHallConfig, saveWorkerHallConfig } from './worker-hall-config-service.js' import { createWorkOrderMaterialAdminNotification, resolveAdminNotificationEntity, } from '../admin/admin-notification-service.js' import { - publishWorkerHallRealtimeRefresh, publishWorkerWalletRealtimeChange, publishWorkOrderRealtimeChange, } from '../realtime/realtime-event-service.js' @@ -577,55 +574,11 @@ export async function cancelAdminWorkOrder( return { order: mapWorkOrderAdmin(updated), action } } -export async function getAdminWorkerPlatformSummary() { - const hallConfig = getWorkerHallConfig() - const [pendingWorkers, pendingMaterial, openOrders, inProgressOrders] = await Promise.all([ - listWorkerUsers({ page: 1, pageSize: 1, status: 'pending_review' }), - listWorkOrders({ page: 1, pageSize: 1, statuses: [WORK_ORDER_STATUS.PENDING_MATERIAL] }), - listWorkOrders({ - page: 1, - pageSize: 1, - statuses: [WORK_ORDER_STATUS.OPEN], - excludeFilledSharing: true, - }), - listWorkOrders({ - page: 1, - pageSize: 1, - statuses: [WORK_ORDER_STATUS.IN_PROGRESS], - useOperationalStatus: true, - }), - ]) - return { - pendingWorkerCount: pendingWorkers.total, - pendingMaterialCount: pendingMaterial.total, - openOrderCount: Math.min(openOrders.total, hallConfig.maxVisibleOrders), - queuedHallOrderCount: Math.max(0, openOrders.total - hallConfig.maxVisibleOrders), - hallMaxVisibleOrders: hallConfig.maxVisibleOrders, - inProgressOrderCount: inProgressOrders.total, - } -} - -export async function getAdminWorkerHallConfig() { - const config = getWorkerHallConfig() - const openOrders = await listWorkOrders({ - page: 1, - pageSize: 1, - statuses: [WORK_ORDER_STATUS.OPEN], - excludeFilledSharing: true, - }) - return { - ...config, - visibleOrderCount: Math.min(openOrders.total, config.maxVisibleOrders), - queuedOrderCount: Math.max(0, openOrders.total - config.maxVisibleOrders), - } -} - -export async function saveAdminWorkerHallConfig(rawValue: unknown) { - await saveWorkerHallConfig(rawValue) - const config = await getAdminWorkerHallConfig() - publishWorkerHallRealtimeRefresh() - return config -} +export { + getAdminWorkerHallConfig, + getAdminWorkerPlatformSummary, + saveAdminWorkerHallConfig, +} from './admin-worker-platform-summary-service.js' export async function syncWorkerOrdersForSourceOrder( order: OrderRow, diff --git a/apps/backend/src/services/worker-platform/admin-worker-platform-summary-service.ts b/apps/backend/src/services/worker-platform/admin-worker-platform-summary-service.ts new file mode 100644 index 00000000..9a864a90 --- /dev/null +++ b/apps/backend/src/services/worker-platform/admin-worker-platform-summary-service.ts @@ -0,0 +1,54 @@ +import { WORK_ORDER_STATUS } from '../../domain/work-order-status.js' +import { listWorkOrders, listWorkerUsers } from '../../repositories/worker-platform/index.js' +import { publishWorkerHallRealtimeRefresh } from '../realtime/realtime-event-service.js' +import { getWorkerHallConfig, saveWorkerHallConfig } from './worker-hall-config-service.js' + +export async function getAdminWorkerPlatformSummary() { + const hallConfig = getWorkerHallConfig() + const [pendingWorkers, pendingMaterial, openOrders, inProgressOrders] = await Promise.all([ + listWorkerUsers({ page: 1, pageSize: 1, status: 'pending_review' }), + listWorkOrders({ page: 1, pageSize: 1, statuses: [WORK_ORDER_STATUS.PENDING_MATERIAL] }), + listWorkOrders({ + page: 1, + pageSize: 1, + statuses: [WORK_ORDER_STATUS.OPEN], + excludeFilledSharing: true, + }), + listWorkOrders({ + page: 1, + pageSize: 1, + statuses: [WORK_ORDER_STATUS.IN_PROGRESS], + useOperationalStatus: true, + }), + ]) + return { + pendingWorkerCount: pendingWorkers.total, + pendingMaterialCount: pendingMaterial.total, + openOrderCount: Math.min(openOrders.total, hallConfig.maxVisibleOrders), + queuedHallOrderCount: Math.max(0, openOrders.total - hallConfig.maxVisibleOrders), + hallMaxVisibleOrders: hallConfig.maxVisibleOrders, + inProgressOrderCount: inProgressOrders.total, + } +} + +export async function getAdminWorkerHallConfig() { + const config = getWorkerHallConfig() + const openOrders = await listWorkOrders({ + page: 1, + pageSize: 1, + statuses: [WORK_ORDER_STATUS.OPEN], + excludeFilledSharing: true, + }) + return { + ...config, + visibleOrderCount: Math.min(openOrders.total, config.maxVisibleOrders), + queuedOrderCount: Math.max(0, openOrders.total - config.maxVisibleOrders), + } +} + +export async function saveAdminWorkerHallConfig(rawValue: unknown) { + await saveWorkerHallConfig(rawValue) + const config = await getAdminWorkerHallConfig() + publishWorkerHallRealtimeRefresh() + return config +} diff --git a/apps/backend/src/services/worker-platform/index.ts b/apps/backend/src/services/worker-platform/index.ts index a49de7c8..ee0a2f76 100644 --- a/apps/backend/src/services/worker-platform/index.ts +++ b/apps/backend/src/services/worker-platform/index.ts @@ -33,6 +33,7 @@ export * from './admin-work-order-realtime-service.js' export * from './admin-work-order-material-service.js' export * from './admin-mock-work-order-service.js' export * from './admin-work-order-management-service.js' +export * from './admin-worker-platform-summary-service.js' export { acceptAdminWorkOrder, acceptAdminWorkOrderShare,