/** * 接单平台(AdminWorkerPlatformPage)的 tab key 名单与切页缓存刷新映射。 * * 抽成独立模块的原因:这些名单原先散落在页面组件里,且**同一份名单写了两遍** * (isWorkerPlatformTab 与 loadActiveTabPreference 各一份)。新增 tab 时漏改的后果 * 不是报错、也不是白屏,而是**点了没反应**——changeTab() 会在 isWorkerPlatformTab() * 返回 false 时直接 return,tab 渲染得出来却永远切不过去。 * * 因此这里只保留唯一一份 WORKER_PLATFORM_TAB_KEYS,并配套单测守住 * 「登记了查询缓存却没登记合法 tab」这类漏改。 */ /** 所有可作为 tab 的 key(新增 tab 只改这里)。 */ export const WORKER_PLATFORM_TAB_KEYS: readonly string[] = [ 'orders', 'consignment-inventory', 'consignment-contacts', 'consignment-submissions', 'leaderboard', 'cancel-requests', 'feedbacks', 'after-sales', 'announcement', 'rules', 'order-service', 'consignment-config', 'product-match', 'categories', 'workers', 'finance', 'levels', 'notifications', 'risk-control', ] /** * 切到某个 tab 时需要失效的 react-query key,用于「切入即为最新状态」。 * * 注意:这里的 key 未必都是 tab——例如 `hall-config` 是「杂项配置」tab 内部的一个区块。 * 未登记的 tab 切换时不额外失效任何查询(仍会刷新概览)。 */ export const WORKER_PLATFORM_TAB_QUERY_KEYS: Record = { 'consignment-inventory': [['admin-consignment-inventories'], ['admin-consignment-stats']], 'consignment-contacts': [['admin-consignment-contacts']], 'consignment-submissions': [ ['admin-consignment-submissions'], ['admin-consignment-submissions-pending-total'], ], orders: [['admin-worker-platform-orders'], ['admin-worker-platform-summary']], 'cancel-requests': [['admin-work-order-cancel-requests']], 'after-sales': [['admin-after-sales-orders'], ['admin-after-sales-stats']], feedbacks: [['admin-feedbacks']], rules: [['admin-product-rules']], 'order-service': [ ['admin-order-service-profiles'], ['admin-order-service-auto-publish-jobs'], ['admin-categories'], ], 'consignment-config': [['admin-consignment-profiles'], ['admin-categories']], 'product-match': [['admin-product-match']], categories: [['admin-categories']], workers: [['admin-workers'], ['admin-worker-users']], leaderboard: [['admin-leaderboard']], finance: [['admin-finance-settlements'], ['admin-finance-withdrawals']], levels: [['admin-worker-levels']], notifications: [['admin-notifications']], announcement: [['admin-announcements']], 'hall-config': [['admin-hall-config']], 'risk-control': [['admin-worker-risk-overview'], ['admin-worker-risk-events']], } /** * 只登记了查询缓存、但本身不是 tab 的 key。 * 目前只有 hall-config:它是「杂项配置」tab 内部的一个区块。 */ export const WORKER_PLATFORM_NON_TAB_QUERY_KEYS: readonly string[] = ['hall-config'] export function isWorkerPlatformTab(tab: string | null): tab is string { return WORKER_PLATFORM_TAB_KEYS.includes(String(tab || '')) }