// ── Enums ──────────────────────────────────────────────── export enum TaskMetaStatus { PENDING = "PENDING", IN_PROGRESS = "IN_PROGRESS", COMPLETED = "COMPLETED", FAILED = "FAILED", STOPPED = "STOPPED", CANCELLED = "CANCELLED", } export enum SplitStrategy { BY_COUNT = "BY_COUNT", BY_FILE = "BY_FILE", BY_PERCENTAGE = "BY_PERCENTAGE", MANUAL = "MANUAL", } export enum TaskModule { ANNOTATION = "ANNOTATION", CLEANING = "CLEANING", EVALUATION = "EVALUATION", SYNTHESIS = "SYNTHESIS", COLLECTION = "COLLECTION", RATIO = "RATIO", } export enum AssignmentAction { ASSIGN = "ASSIGN", REASSIGN = "REASSIGN", REVOKE = "REVOKE", } // ── Response Interfaces ────────────────────────────────── export interface AssigneeInfo { id: number; username: string; fullName?: string; } export interface TaskMetaDto { id: string; parentId?: string; module: string; refTaskId: string; taskName: string; status: TaskMetaStatus; assignedTo?: number; assigneeName?: string; progress: number; totalItems: number; completedItems: number; failedItems: number; splitStrategy?: string; splitConfig?: string; priority: number; deadline?: string; remark?: string; createdBy?: number; createdAt: string; updatedAt: string; childCount: number; assignee?: AssigneeInfo; } export interface TaskAssignmentLogDto { id: number; taskMetaId: string; action: AssignmentAction; userId?: number; userName?: string; remark?: string; operatorId?: number; operatorName?: string; createdAt: string; } export interface ChildTaskProgressDto { taskId: string; taskName: string; assignee?: AssigneeInfo; progress: number; totalItems: number; completedItems: number; failedItems: number; status: TaskMetaStatus; } export interface TaskProgressResponse { taskId: string; taskName: string; overallProgress: number; totalItems: number; completedItems: number; failedItems: number; status: TaskMetaStatus; children: ChildTaskProgressDto[]; } // ── Request Interfaces ─────────────────────────────────── export interface CreateTaskMetaRequest { module: string; refTaskId: string; taskName: string; assignedTo?: number; totalItems?: number; priority?: number; deadline?: string; } export interface SplitAssignment { userId?: number; proportion?: number; itemCount?: number; taskName?: string; } export interface SplitTaskRequest { strategy: SplitStrategy; splitConfig?: Record; assignments: SplitAssignment[]; } export interface AssignTaskRequest { userId: number; remark?: string; } export interface BatchTaskAssignment { taskMetaId: string; userId: number; remark?: string; } export interface BatchAssignRequest { assignments: BatchTaskAssignment[]; } export interface UpdateProgressRequest { progress?: number; totalItems?: number; completedItems?: number; failedItems?: number; status?: TaskMetaStatus; } // ── User (for assignment selectors) ────────────────────── export interface UserOption { id: number; username: string; fullName?: string; }