/** * UI18n Team Collaboration System * Multi-person review workflow with assignment management and permissions */ import { TranslationStatusManager } from './translation-status-manager'; export interface TeamMember { id: string; name: string; email: string; role: 'reviewer' | 'lead_reviewer' | 'admin' | 'translator'; languages: string[]; permissions: { canReview: boolean; canAssign: boolean; canLock: boolean; canForceOverride: boolean; canManageTeam: boolean; }; statistics: { totalReviews: number; averageQuality: number; reviewsThisMonth: number; averageTimePerReview: number; }; preferences: { batchSize: number; autoAssign: boolean; notificationEmail: boolean; }; status: 'active' | 'inactive' | 'on_leave'; joinedAt: string; lastActivity: string; } export interface ReviewTask { id: string; assignmentId: string; assignedTo: string; assignedBy: string; createdAt: string; dueDate?: string; priority: 'low' | 'medium' | 'high' | 'urgent'; entries: Array<{ key: string; language: string; originalText: string; translatedText: string; currentStatus: 'machine' | 'reviewed' | 'locked'; context?: string; priority?: 'low' | 'medium' | 'high' | 'critical'; }>; status: 'pending' | 'in_progress' | 'completed' | 'cancelled' | 'expired'; progress: { total: number; completed: number; approved: number; rejected: number; locked: number; }; notes?: string; startedAt?: string; completedAt?: string; reviewTimeMinutes?: number; qualityMetrics?: { averageScore: number; totalScore: number; entryCount: number; }; } export interface TeamCollaborationConfig { workflowSettings: { requireAssignment: boolean; allowSelfAssignment: boolean; autoAssignByLanguage: boolean; maxConcurrentAssignments: number; defaultDueDays: number; }; qualitySettings: { minimumQualityScore: number; requirePeerReview: boolean; escalationThreshold: number; }; notificationSettings: { emailNotifications: boolean; deadlineReminders: boolean; completionNotifications: boolean; }; } export declare class TeamCollaborationManager { private projectPath; private statusManager; private teamMembers; private assignments; private config; constructor(projectPath: string, statusManager?: TranslationStatusManager); /** * Initialize team collaboration system */ initialize(): Promise; /** * Add team member */ addTeamMember(member: Omit): Promise<{ success: boolean; message: string; error?: string; }>; /** * Create review assignment */ createAssignment(options: { assignedTo: string; assignedBy: string; language: string; keys?: string[]; priority: 'low' | 'medium' | 'high' | 'urgent'; dueDate?: string; notes?: string; filterCriteria?: { status?: 'machine' | 'reviewed' | 'locked'; maxEntries?: number; keyPattern?: string; }; }): Promise<{ success: boolean; message: string; assignmentId?: string; taskCount?: number; error?: string; }>; /** * Get assignments for a team member */ getAssignmentsForMember(memberId: string, status?: ReviewTask['status']): Promise; /** * Start working on assignment */ startAssignment(assignmentId: string, memberId: string): Promise<{ success: boolean; message: string; error?: string; }>; /** * Complete assignment */ completeAssignment(assignmentId: string, memberId: string, summary?: { notes?: string; timeSpentMinutes?: number; qualityMetrics?: { averageScore: number; totalScore: number; entryCount: number; }; }): Promise<{ success: boolean; message: string; error?: string; }>; /** * Get team statistics and overview */ getTeamStatistics(): Promise<{ totalMembers: number; activeMembers: number; pendingAssignments: number; inProgressAssignments: number; completedThisMonth: number; averageQualityScore: number; topPerformers: Array<{ id: string; name: string; reviewsThisMonth: number; averageQuality: number; }>; workloadDistribution: Array<{ id: string; name: string; pendingTasks: number; inProgressTasks: number; capacity: number; }>; }>; /** * Auto-assign entries based on team member availability and language skills */ autoAssignEntries(language: string, maxEntries?: number): Promise<{ success: boolean; message: string; assignments: Array<{ memberId: string; memberName: string; entryCount: number; assignmentId: string; }>; error?: string; }>; /** * Private helper methods */ private loadDefaultConfig; private loadTeamMembers; private saveTeamMembers; private loadAssignments; private saveAssignments; private loadConfiguration; private logTeamEvent; } //# sourceMappingURL=team-collaboration.d.ts.map