287 lines
5.6 KiB
TypeScript
287 lines
5.6 KiB
TypeScript
// 用户角色类型
|
|
export type UserRole = 'user' | 'interpreter' | 'admin'
|
|
|
|
// 用户相关类型
|
|
export interface User {
|
|
id: string
|
|
name: string
|
|
email: string
|
|
phone: string
|
|
avatar?: string
|
|
balance: number
|
|
status: 'active' | 'inactive' | 'suspended'
|
|
role: UserRole
|
|
totalOrders?: number
|
|
completedOrders?: number
|
|
createdAt: string
|
|
updatedAt: string
|
|
}
|
|
|
|
// 认证相关类型
|
|
export interface AuthUser {
|
|
id: string
|
|
email: string
|
|
name: string
|
|
role: UserRole
|
|
avatar?: string
|
|
}
|
|
|
|
// 登录请求
|
|
export interface LoginRequest {
|
|
email: string
|
|
password: string
|
|
}
|
|
|
|
// 登录响应
|
|
export interface LoginResponse {
|
|
user: AuthUser
|
|
token: string
|
|
expiresIn: number
|
|
}
|
|
|
|
// 注册请求
|
|
export interface RegisterRequest {
|
|
name: string
|
|
email: string
|
|
phone: string
|
|
password: string
|
|
role: UserRole
|
|
verificationCode?: string
|
|
}
|
|
|
|
// 口译员相关类型
|
|
export interface Interpreter {
|
|
id: string
|
|
name: string
|
|
email: string
|
|
phone: string
|
|
avatar?: string
|
|
languages: string[]
|
|
specialties: string[]
|
|
rating: number
|
|
totalOrders: number
|
|
status: 'active' | 'inactive' | 'busy'
|
|
hourlyRate: number
|
|
createdAt: string
|
|
updatedAt: string
|
|
certifications?: string[]
|
|
experience?: number
|
|
}
|
|
|
|
// 订单相关类型
|
|
export interface Order {
|
|
id: string
|
|
userId: string
|
|
interpreterId?: string
|
|
type: 'voice' | 'video' | 'on-site'
|
|
status: 'pending' | 'confirmed' | 'in-progress' | 'completed' | 'cancelled'
|
|
scheduledAt: string
|
|
duration: number
|
|
amount: number
|
|
sourceLanguage: string
|
|
targetLanguage: string
|
|
description?: string
|
|
createdAt: string
|
|
updatedAt: string
|
|
user?: User
|
|
interpreter?: Interpreter
|
|
rating?: number
|
|
feedback?: string
|
|
}
|
|
|
|
// 文档翻译类型
|
|
export interface DocumentTranslation {
|
|
id: string
|
|
userId: string
|
|
title: string
|
|
sourceLanguage: string
|
|
targetLanguage: string
|
|
status: 'pending' | 'in-progress' | 'completed' | 'rejected'
|
|
originalFile: string
|
|
translatedFile?: string
|
|
wordCount: number
|
|
amount: number
|
|
deadline: string
|
|
createdAt: string
|
|
updatedAt: string
|
|
user?: User
|
|
translator?: Interpreter
|
|
}
|
|
|
|
// 充值记录类型
|
|
export interface RechargeRecord {
|
|
id: string
|
|
userId: string
|
|
amount: number
|
|
method: 'alipay' | 'wechat' | 'bank_card' | 'admin'
|
|
status: 'pending' | 'completed' | 'failed'
|
|
transactionId?: string
|
|
createdAt: string
|
|
user?: User
|
|
}
|
|
|
|
// 收费配置类型
|
|
export interface PricingConfig {
|
|
id: string
|
|
type: 'voice' | 'video' | 'on-site' | 'document'
|
|
timeSlot: 'peak' | 'normal' | 'off-peak'
|
|
basePrice: number
|
|
perMinutePrice?: number
|
|
perWordPrice?: number
|
|
createdAt: string
|
|
updatedAt: string
|
|
}
|
|
|
|
// 统计数据类型
|
|
export interface DashboardStats {
|
|
totalUsers: number
|
|
newUsers: number
|
|
voiceOrders: number
|
|
videoOrders: number
|
|
totalRevenue: number
|
|
pendingOrders: number
|
|
activeInterpreters: number
|
|
completedTranslations: number
|
|
}
|
|
|
|
// 财务统计类型
|
|
export interface FinanceStats {
|
|
totalRevenue: number
|
|
monthlyRevenue: number
|
|
platformBalance: number
|
|
pendingWithdraw: number
|
|
}
|
|
|
|
// 订单统计类型
|
|
export interface OrderStats {
|
|
pending: number
|
|
confirmed: number
|
|
inProgress: number
|
|
completed: number
|
|
cancelled: number
|
|
todayRevenue: number
|
|
}
|
|
|
|
export interface UserStats {
|
|
total: number
|
|
users: number
|
|
interpreters: number
|
|
admins: number
|
|
active: number
|
|
inactive: number
|
|
suspended: number
|
|
newThisMonth: number
|
|
totalBalance: number
|
|
}
|
|
|
|
export interface InterpreterStats {
|
|
total: number
|
|
online: number
|
|
busy: number
|
|
inactive: number
|
|
averageRating: number
|
|
averageHourlyRate: number
|
|
}
|
|
|
|
export interface Transaction {
|
|
id: string
|
|
type: 'order_payment' | 'interpreter_payout' | 'platform_fee' | 'refund' | 'withdraw'
|
|
amount: number
|
|
fee: number
|
|
status: 'completed' | 'pending' | 'failed'
|
|
userName: string
|
|
userType: string
|
|
orderId?: string
|
|
createdAt: string
|
|
}
|
|
|
|
export interface WithdrawalRequest {
|
|
id: string
|
|
interpreterId: string
|
|
interpreterName: string
|
|
interpreterAvatar?: string
|
|
amount: number
|
|
bankInfo: string
|
|
status: 'pending' | 'approved' | 'rejected'
|
|
createdAt: string
|
|
}
|
|
|
|
// 分页参数类型
|
|
export interface PaginationParams {
|
|
page: number
|
|
limit: number
|
|
total?: number
|
|
}
|
|
|
|
// API响应类型
|
|
export interface ApiResponse<T> {
|
|
success: boolean
|
|
data: T
|
|
message?: string
|
|
pagination?: PaginationParams
|
|
}
|
|
|
|
// 筛选参数类型
|
|
export interface FilterParams {
|
|
search?: string
|
|
status?: string
|
|
type?: string
|
|
dateRange?: string
|
|
startDate?: string
|
|
endDate?: string
|
|
}
|
|
|
|
// 系统设置相关类型
|
|
export interface SystemSettings {
|
|
// 基础设置
|
|
platformName: string
|
|
customerServicePhone: string
|
|
customerServiceEmail: string
|
|
workingHours: string
|
|
platformDescription: string
|
|
maintenanceMode: boolean
|
|
|
|
// 费率设置
|
|
platformFeeRate: number
|
|
minimumOrderAmount: number
|
|
maximumOrderAmount: number
|
|
minimumWithdrawAmount: number
|
|
serviceTypes: ServiceType[]
|
|
|
|
// 订单设置
|
|
orderCancelTimeout: number
|
|
reviewTimeLimit: number
|
|
interpreterResponseTime: number
|
|
advanceBookingTime: number
|
|
allowCancellation: boolean
|
|
requireDeposit: boolean
|
|
autoAssignInterpreter: boolean
|
|
|
|
// 通知设置
|
|
emailNotifications: NotificationSetting[]
|
|
smsNotifications: NotificationSetting[]
|
|
|
|
// 安全设置
|
|
passwordMinLength: number
|
|
maxLoginAttempts: number
|
|
lockoutDuration: number
|
|
sessionTimeout: number
|
|
requireEmailVerification: boolean
|
|
requirePhoneVerification: boolean
|
|
enableTwoFactorAuth: boolean
|
|
}
|
|
|
|
export interface ServiceType {
|
|
type: string
|
|
name: string
|
|
description: string
|
|
basePrice: number
|
|
pricePerMinute: number
|
|
}
|
|
|
|
export interface NotificationSetting {
|
|
type: string
|
|
name: string
|
|
description: string
|
|
enabled: boolean
|
|
}
|