// 演示模式的模拟数据 export const demoUsers = [ { id: '1', email: 'john.doe@example.com', full_name: '张三', avatar_url: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150', user_type: 'individual' as const, phone: '+86 138 0000 0001', created_at: '2024-01-15T08:00:00Z', updated_at: '2024-01-20T10:30:00Z', is_active: true, last_login: '2024-01-20T10:30:00Z', }, { id: '2', email: 'jane.smith@company.com', full_name: '李四', avatar_url: 'https://images.unsplash.com/photo-1494790108755-2616b612b786?w=150', user_type: 'enterprise' as const, phone: '+86 138 0000 0002', created_at: '2024-01-10T09:15:00Z', updated_at: '2024-01-19T14:20:00Z', is_active: true, last_login: '2024-01-19T14:20:00Z', }, { id: '3', email: 'mike.wilson@example.com', full_name: '王五', avatar_url: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150', user_type: 'individual' as const, phone: '+86 138 0000 0003', created_at: '2024-01-12T11:45:00Z', updated_at: '2024-01-18T16:10:00Z', is_active: false, last_login: '2024-01-18T16:10:00Z', }, { id: '4', email: 'sarah.johnson@enterprise.com', full_name: '赵六', avatar_url: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150', user_type: 'enterprise' as const, phone: '+86 138 0000 0004', created_at: '2024-01-08T13:20:00Z', updated_at: '2024-01-17T09:45:00Z', is_active: true, last_login: '2024-01-17T09:45:00Z', }, ]; export const demoCalls = [ { id: '1', user_id: '1', interpreter_id: '101', from_language: 'zh', to_language: 'en', status: 'active' as const, start_time: new Date(Date.now() - 15 * 60 * 1000).toISOString(), // 15分钟前开始 created_at: new Date(Date.now() - 16 * 60 * 1000).toISOString(), cost: 45.50, duration: 15 * 60, // 15分钟 }, { id: '2', user_id: '2', interpreter_id: '102', from_language: 'en', to_language: 'zh', status: 'active' as const, start_time: new Date(Date.now() - 8 * 60 * 1000).toISOString(), // 8分钟前开始 created_at: new Date(Date.now() - 10 * 60 * 1000).toISOString(), cost: 32.00, duration: 8 * 60, // 8分钟 }, { id: '3', user_id: '1', interpreter_id: '103', from_language: 'zh', to_language: 'ja', status: 'ended' as const, start_time: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(), // 2小时前 end_time: new Date(Date.now() - 90 * 60 * 1000).toISOString(), // 1.5小时前结束 created_at: new Date(Date.now() - 125 * 60 * 1000).toISOString(), cost: 89.75, duration: 30 * 60, // 30分钟 }, ]; export const demoInterpreters = [ { id: '101', name: '翻译员A', avatar_url: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150', languages: ['zh', 'en'], rating: 4.9, status: 'busy' as 'online' | 'offline' | 'busy', specialties: ['商务', '法律'], }, { id: '102', name: '翻译员B', avatar_url: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150', languages: ['en', 'zh', 'ja'], rating: 4.8, status: 'busy' as 'online' | 'offline' | 'busy', specialties: ['技术', '医疗'], }, { id: '103', name: '翻译员C', avatar_url: 'https://images.unsplash.com/photo-1494790108755-2616b612b786?w=150', languages: ['zh', 'ja', 'ko'], rating: 4.7, status: 'online' as 'online' | 'offline' | 'busy', specialties: ['旅游', '教育'], }, { id: '104', name: '翻译员D', avatar_url: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150', languages: ['en', 'fr', 'es'], rating: 4.9, status: 'online' as 'online' | 'offline' | 'busy', specialties: ['商务', '艺术'], }, ]; export const demoStats = { todayCalls: 12, activeCalls: 2, onlineInterpreters: 8, todayRevenue: 1250.75, avgResponseTime: 45, // 秒 }; // 订单演示数据 const demoOrders = [ { id: 'order-1', order_number: 'ORD-2024-001', user_id: 'user-1', user_name: '张三', user_email: 'zhangsan@email.com', service_type: 'ai_voice_translation' as const, service_name: 'AI语音翻译', source_language: '中文', target_language: '英文', duration: 30, status: 'completed' as const, priority: 'normal' as const, cost: 180.00, currency: 'CNY', scheduled_at: '2024-01-15T14:00:00Z', started_at: '2024-01-15T14:00:00Z', completed_at: '2024-01-15T14:30:00Z', created_at: '2024-01-15T10:00:00Z', updated_at: '2024-01-15T14:30:00Z', notes: '客户会议翻译' }, { id: 'order-2', order_number: 'ORD-2024-002', user_id: 'user-2', user_name: '李四', user_email: 'lisi@alibaba.com', service_type: 'human_interpretation' as const, service_name: '人工口译', source_language: '中文', target_language: '英文', duration: 240, status: 'processing' as const, priority: 'high' as const, cost: 2400.00, currency: 'CNY', scheduled_at: '2024-01-20T09:00:00Z', started_at: '2024-01-20T09:00:00Z', created_at: '2024-01-18T16:00:00Z', updated_at: '2024-01-20T10:30:00Z', interpreter_id: 'interpreter-1', interpreter_name: '王译员', notes: '重要商务谈判' }, { id: 'order-3', order_number: 'ORD-2024-003', user_id: 'user-3', user_name: '王五', user_email: 'wangwu@tencent.com', service_type: 'document_translation' as const, service_name: '文档翻译', source_language: '中文', target_language: '英文', pages: 20, status: 'pending' as const, priority: 'normal' as const, cost: 1200.00, currency: 'CNY', created_at: '2024-01-25T11:00:00Z', updated_at: '2024-01-25T11:00:00Z', notes: '技术文档翻译' }, { id: 'order-4', order_number: 'ORD-2024-004', user_id: 'user-4', user_name: '赵六', user_email: 'zhaoliu@bytedance.com', service_type: 'ai_video_translation' as const, service_name: 'AI视频翻译', source_language: '中文', target_language: '英文', duration: 90, status: 'completed' as const, priority: 'urgent' as const, cost: 3600.00, currency: 'CNY', scheduled_at: '2024-01-18T13:00:00Z', started_at: '2024-01-18T13:00:00Z', completed_at: '2024-01-18T14:30:00Z', created_at: '2024-01-18T10:00:00Z', updated_at: '2024-01-18T14:30:00Z', notes: '产品发布会视频翻译' }, { id: 'order-5', order_number: 'ORD-2024-005', user_id: 'user-5', user_name: '孙七', user_email: 'sunqi@email.com', service_type: 'sign_language_translation' as const, service_name: '手语翻译', source_language: '中文', target_language: '手语', duration: 90, status: 'cancelled' as const, priority: 'low' as const, cost: 450.00, currency: 'CNY', created_at: '2024-01-22T13:00:00Z', updated_at: '2024-01-23T09:00:00Z', interpreter_id: 'interpreter-2', interpreter_name: '李手语师', notes: '客户取消服务' }, { id: 'order-6', order_number: 'ORD-2024-006', user_id: 'user-6', user_name: '周八', user_email: 'zhouba@email.com', service_type: 'ai_voice_translation' as const, service_name: 'AI语音翻译', source_language: '英文', target_language: '中文', duration: 45, status: 'failed' as const, priority: 'normal' as const, cost: 270.00, currency: 'CNY', scheduled_at: '2024-01-28T16:00:00Z', started_at: '2024-01-28T16:00:00Z', created_at: '2024-01-28T15:00:00Z', updated_at: '2024-01-28T16:30:00Z', notes: '音频质量问题导致翻译失败' } ]; // 企业合同演示数据 const demoEnterpriseContracts = [ { id: 'contract-001', enterprise_id: 'ent-001', enterprise_name: '阿里巴巴集团', contract_number: 'ALI-2024-001', contract_type: 'annual' as const, start_date: '2024-01-01T00:00:00Z', end_date: '2024-12-31T23:59:59Z', total_amount: 500000, currency: 'CNY', status: 'active' as const, service_rates: { ai_voice: 1.8, // 企业优惠价格 ai_video: 2.5, sign_language: 4.0, human_interpreter: 6.5, document_translation: 0.08, }, created_at: '2024-01-01T00:00:00Z', updated_at: '2024-01-01T00:00:00Z' }, { id: 'contract-002', enterprise_id: 'ent-002', enterprise_name: '腾讯科技', contract_number: 'TX-2024-002', contract_type: 'monthly' as const, start_date: '2024-02-01T00:00:00Z', end_date: '2024-07-31T23:59:59Z', total_amount: 120000, currency: 'CNY', status: 'active' as const, service_rates: { ai_voice: 1.9, ai_video: 2.7, sign_language: 4.2, human_interpreter: 7.0, document_translation: 0.09, }, created_at: '2024-02-01T00:00:00Z', updated_at: '2024-02-01T00:00:00Z' }, { id: 'contract-003', enterprise_id: 'ent-003', enterprise_name: '字节跳动', contract_number: 'BD-2024-003', contract_type: 'annual' as const, start_date: '2024-03-01T00:00:00Z', end_date: '2025-02-28T23:59:59Z', total_amount: 800000, currency: 'CNY', status: 'active' as const, service_rates: { ai_voice: 1.6, // 大客户更优惠的价格 ai_video: 2.3, sign_language: 3.8, human_interpreter: 6.0, document_translation: 0.07, }, created_at: '2024-03-01T00:00:00Z', updated_at: '2024-03-01T00:00:00Z' } ]; // 企业员工演示数据 const demoEnterpriseEmployees = [ { id: 'emp-001', enterprise_id: 'ent-001', enterprise_name: '阿里巴巴集团', name: '张三', email: 'zhangsan@alibaba.com', department: '技术部', position: '高级工程师', status: 'active' as const, total_calls: 45, total_cost: 1350.00, created_at: '2024-01-15T08:00:00Z' }, { id: 'emp-002', enterprise_id: 'ent-001', enterprise_name: '阿里巴巴集团', name: '李四', email: 'lisi@alibaba.com', department: '产品部', position: '产品经理', status: 'active' as const, total_calls: 32, total_cost: 960.00, created_at: '2024-01-20T09:30:00Z' }, { id: 'emp-003', enterprise_id: 'ent-002', enterprise_name: '腾讯科技', name: '王五', email: 'wangwu@tencent.com', department: '运营部', position: '运营专员', status: 'inactive' as const, total_calls: 18, total_cost: 540.00, created_at: '2024-02-01T10:15:00Z' }, { id: 'emp-004', enterprise_id: 'ent-003', enterprise_name: '字节跳动', name: '赵六', email: 'zhaoliu@bytedance.com', department: '市场部', position: '市场总监', status: 'active' as const, total_calls: 67, total_cost: 2010.00, created_at: '2024-02-10T11:45:00Z' } ]; // 企业结算记录演示数据 const demoEnterpriseBilling = [ { id: '1', enterprise_id: 'ent_001', enterprise_name: '华为技术有限公司', period: '2024年1月', total_calls: 128, total_duration: 7680, total_amount: 6400.00, currency: 'CNY', status: 'paid' as const, due_date: '2024-02-15', paid_date: '2024-02-10', created_at: '2024-02-01T00:00:00Z' }, { id: '2', enterprise_id: 'ent_002', enterprise_name: '腾讯科技有限公司', period: '2024年1月', total_calls: 85, total_duration: 5100, total_amount: 4250.00, currency: 'CNY', status: 'pending' as const, due_date: '2024-02-15', created_at: '2024-02-01T00:00:00Z' }, { id: '3', enterprise_id: 'ent_003', enterprise_name: '阿里巴巴集团', period: '2023年12月', total_calls: 156, total_duration: 9360, total_amount: 7800.00, currency: 'CNY', status: 'overdue' as const, due_date: '2024-01-15', created_at: '2024-01-01T00:00:00Z' } ]; // 文档演示数据 const demoDocuments = [ { id: '1', user_id: 'user_001', original_name: '商业合同_中英对照.pdf', file_size: 2048576, file_type: 'pdf', source_language: '中文', target_language: '英文', status: 'completed' as const, progress: 100, translated_url: '/documents/translated/商业合同_中英对照_translated.pdf', cost: 150.00, created_at: '2024-01-15T10:30:00Z', updated_at: '2024-01-15T11:45:00Z', user_name: '张三' }, { id: '2', user_id: 'user_002', original_name: '技术文档_API说明.docx', file_size: 1536000, file_type: 'docx', source_language: '英文', target_language: '中文', status: 'processing' as const, progress: 65, cost: 120.00, created_at: '2024-01-16T09:15:00Z', updated_at: '2024-01-16T10:30:00Z', user_name: '李四' }, { id: '3', user_id: 'user_003', original_name: '产品说明书_多语言版本.txt', file_size: 512000, file_type: 'txt', source_language: '中文', target_language: '日文', status: 'pending' as const, progress: 0, cost: 80.00, created_at: '2024-01-17T14:20:00Z', updated_at: '2024-01-17T14:20:00Z', user_name: '王五' }, { id: '4', user_id: 'user_004', original_name: '财务报告_季度总结.xlsx', file_size: 3072000, file_type: 'xlsx', source_language: '中文', target_language: '英文', status: 'failed' as const, progress: 0, cost: 200.00, created_at: '2024-01-18T08:45:00Z', updated_at: '2024-01-18T09:00:00Z', user_name: '赵六' }, { id: '5', user_id: 'user_005', original_name: '营销方案_品牌推广.pptx', file_size: 4096000, file_type: 'pptx', source_language: '中文', target_language: '韩文', status: 'completed' as const, progress: 100, translated_url: '/documents/translated/营销方案_品牌推广_translated.pptx', cost: 250.00, created_at: '2024-01-19T16:30:00Z', updated_at: '2024-01-19T18:15:00Z', user_name: '钱七' } ]; // 发票演示数据 const demoInvoices = [ { id: 'invoice-1', invoice_number: 'INV-2024-001', user_id: 'user-1', user_name: '张三', user_email: 'zhangsan@email.com', order_id: 'order-1', invoice_type: 'individual' as const, personal_name: '张三', subtotal: 180.00, tax_amount: 32.40, total_amount: 212.40, currency: 'CNY', status: 'paid' as const, issue_date: '2024-01-15T10:00:00Z', due_date: '2024-02-15T23:59:59Z', paid_date: '2024-01-16T14:30:00Z', items: [ { service_type: 'ai_voice_translation', service_name: 'AI语音翻译', quantity: 30, unit: '分钟', unit_price: 6.00, amount: 180.00 } ], created_at: '2024-01-15T09:00:00Z', updated_at: '2024-01-16T14:30:00Z' }, { id: 'invoice-2', invoice_number: 'INV-2024-002', user_id: 'user-2', user_name: '李四', user_email: 'lisi@alibaba.com', order_id: 'order-2', invoice_type: 'enterprise' as const, company_name: '阿里巴巴集团', tax_number: '91330000MA27XF6Q2X', company_address: '杭州市余杭区文一西路969号', company_phone: '0571-85022088', bank_name: '中国工商银行杭州分行', bank_account: '1202026209900012345', subtotal: 2400.00, tax_amount: 432.00, total_amount: 2832.00, currency: 'CNY', status: 'issued' as const, issue_date: '2024-01-20T15:00:00Z', due_date: '2024-02-20T23:59:59Z', items: [ { service_type: 'human_interpretation', service_name: '人工口译', quantity: 4, unit: '小时', unit_price: 600.00, amount: 2400.00 } ], created_at: '2024-01-20T14:00:00Z', updated_at: '2024-01-20T15:00:00Z' }, { id: 'invoice-3', invoice_number: 'INV-2024-003', user_id: 'user-3', user_name: '王五', user_email: 'wangwu@tencent.com', order_id: 'order-3', invoice_type: 'enterprise' as const, company_name: '腾讯科技', tax_number: '91440300708461136T', company_address: '深圳市南山区科技园', company_phone: '0755-86013388', bank_name: '招商银行深圳分行', bank_account: '755987654321098765', subtotal: 1200.00, tax_amount: 216.00, total_amount: 1416.00, currency: 'CNY', status: 'draft' as const, items: [ { service_type: 'document_translation', service_name: '文档翻译', quantity: 20, unit: '页', unit_price: 60.00, amount: 1200.00 } ], created_at: '2024-01-25T11:00:00Z', updated_at: '2024-01-25T11:00:00Z' }, { id: 'invoice-4', invoice_number: 'INV-2024-004', user_id: 'user-4', user_name: '赵六', user_email: 'zhaoliu@bytedance.com', order_id: 'order-4', invoice_type: 'enterprise' as const, company_name: '字节跳动', tax_number: '91110108396826581T', company_address: '北京市海淀区知春路63号', company_phone: '010-82600000', bank_name: '中国银行北京分行', bank_account: '104100123456789012', subtotal: 3600.00, tax_amount: 648.00, total_amount: 4248.00, currency: 'CNY', status: 'paid' as const, issue_date: '2024-01-18T16:00:00Z', due_date: '2024-02-18T23:59:59Z', paid_date: '2024-01-19T10:15:00Z', items: [ { service_type: 'ai_video_translation', service_name: 'AI视频翻译', quantity: 90, unit: '分钟', unit_price: 40.00, amount: 3600.00 } ], created_at: '2024-01-18T15:00:00Z', updated_at: '2024-01-19T10:15:00Z' }, { id: 'invoice-5', invoice_number: 'INV-2024-005', user_id: 'user-5', user_name: '孙七', user_email: 'sunqi@email.com', order_id: 'order-5', invoice_type: 'individual' as const, personal_name: '孙七', subtotal: 450.00, tax_amount: 81.00, total_amount: 531.00, currency: 'CNY', status: 'cancelled' as const, items: [ { service_type: 'sign_language_translation', service_name: '手语翻译', quantity: 1.5, unit: '小时', unit_price: 300.00, amount: 450.00 } ], created_at: '2024-01-22T13:00:00Z', updated_at: '2024-01-23T09:00:00Z' } ]; // 演示模式的数据获取函数 export const getDemoData = { users: (filters?: any) => { let filteredUsers = [...demoUsers]; if (filters?.search) { const search = filters.search.toLowerCase(); filteredUsers = filteredUsers.filter(user => user.full_name.toLowerCase().includes(search) || user.email.toLowerCase().includes(search) ); } if (filters?.userType && filters.userType !== 'all') { filteredUsers = filteredUsers.filter(user => user.user_type === filters.userType); } if (filters?.status && filters.status !== 'all') { const isActive = filters.status === 'active'; filteredUsers = filteredUsers.filter(user => user.is_active === isActive); } return Promise.resolve({ data: filteredUsers, total: filteredUsers.length, page: 1, limit: 10, has_more: false, }); }, calls: () => Promise.resolve(demoCalls), interpreters: () => Promise.resolve(demoInterpreters), orders: async () => { await new Promise(resolve => setTimeout(resolve, 500)); return demoOrders; }, stats: () => Promise.resolve(demoStats), // 企业服务数据 enterprise: async () => { await new Promise(resolve => setTimeout(resolve, 500)); // 模拟网络延迟 return { contracts: demoEnterpriseContracts, employees: demoEnterpriseEmployees, billing: demoEnterpriseBilling }; }, // 文档数据 documents: async () => { await new Promise(resolve => setTimeout(resolve, 500)); // 模拟网络延迟 return demoDocuments; }, // 发票管理 invoices: async () => { await new Promise(resolve => setTimeout(resolve, 500)); return demoInvoices; } };