/** * AI 员工组织页面 * * 展示玄谋智脑的 10 个 AI 员工角色,包括经营参谋长(首席)和 9 个专业员工。 * 今日交付数从对应 API 动态获取。 */ import { useQuery } from '@tanstack/react-query' import { BrainCircuit } from 'lucide-react' import api from '@/lib/api' import { AgentCard } from '@/components/AgentCard' import { chiefOfStaff, agents, type AgentConfig } from '@/data/agents' import { cn } from '@/lib/utils' export function AgentsPage() { // 批量获取各 AI 员工的今日交付数 const queries = agents.map((agent, idx) => useQuery({ queryKey: ['agent-delivery', agent.code], queryFn: () => api.get(agent.deliveryApi || ''), enabled: !!agent.deliveryApi, staleTime: 5 * 60 * 1000, }), ) // 经营参谋长的交付数(利润机会数量) const chiefQuery = useQuery({ queryKey: ['overview/profit-opportunity', 'chief'], queryFn: () => api.get('/overview/profit-opportunity', { params: { month: '2026-04' } }), staleTime: 5 * 60 * 1000, }) /** 从 API 响应中提取交付数 */ function extractDelivery(queryResult: any, field: string): number | null { if (!queryResult) return null const data = (queryResult as any)?.data if (!data) return null // 支持 a.b.c 路径 const parts = field.split('.') let val: any = data for (const p of parts) { val = val?.[p] if (val === undefined) return null } const num = typeof val === 'number' ? val : parseInt(String(val), 10) return isNaN(num) ? null : num } const chiefDeliveries = chiefQuery.data ? extractDelivery(chiefQuery.data, 'items.length') ?? (chiefQuery.data as any)?.data?.items?.length ?? 0 : null return (
每个 AI 员工都有岗位目标、门店范围、权限边界、SOP、交付物与绩效责任
{chiefOfStaff.roleTarget}
今日生成决策
{chiefDeliveries ?? '…'}项
自治等级说明: L1 人工审批 · L2 受控执行 · L3 全自动
今日交付数从各 AI 员工对应的业务 API 实时统计,阶段二将支持配置管理。