# Requirements Document ## Introduction 本文档定义了标注平台的任务分配与模板管理功能需求。该功能将完善现有平台的工作流程,实现从管理员(数据源)→ 任务派发 → 人员标注任务分配 → 数据收集 → 数据导出的完整闭环。主要包含两大模块: 1. **人员分配管理**:支持管理员将任务分配给特定标注人员,标注人员只能看到分配给自己的任务 2. **标注模板管理**:提供类似 LabelStudio 的模板选择界面和自定义 XML 配置编辑器 ## Glossary - **Task_Assignment_System**: 任务分配系统,负责将标注任务分配给特定用户 - **Template_Manager**: 模板管理器,提供预设模板和自定义配置功能 - **Annotator**: 标注人员,负责执行具体的标注工作 - **Admin**: 管理员,负责创建项目、分配任务和管理用户 - **Label_Config**: 标注配置,使用 XML 格式定义标注界面和工具 - **Template**: 预设模板,包含常用的标注配置(如图像分类、文本标注等) - **Config_Editor**: 配置编辑器,支持可视化编辑和代码编辑两种模式 - **Assignment_Batch**: 批量分配,支持一次性将多个任务分配给多个用户 - **User_Workload**: 用户工作量,统计用户的任务分配和完成情况 - **Data_Export**: 数据导出,将标注结果导出为标准格式 ## Requirements ### Requirement 1: 用户管理与角色权限 **User Story:** 作为管理员,我想要管理系统用户和查看用户列表,以便我可以将任务分配给合适的标注人员。 #### Acceptance Criteria 1. WHEN 管理员访问用户管理页面 THEN THE Task_Assignment_System SHALL 显示所有用户列表,包括用户名、邮箱、角色和创建时间 2. WHEN 管理员筛选用户角色 THEN THE Task_Assignment_System SHALL 只显示匹配角色的用户 3. WHEN 管理员搜索用户 THEN THE Task_Assignment_System SHALL 支持按用户名或邮箱模糊搜索 4. THE Task_Assignment_System SHALL 显示每个用户的任务统计(已分配任务数、已完成任务数) 5. WHEN 管理员查看用户详情 THEN THE Task_Assignment_System SHALL 显示该用户的所有任务列表和完成进度 ### Requirement 2: 任务分配功能 **User Story:** 作为管理员,我想要将任务分配给特定的标注人员,以便合理分配工作量。 #### Acceptance Criteria 1. WHEN 管理员在任务列表选择任务 THEN THE Task_Assignment_System SHALL 显示分配按钮 2. WHEN 管理员点击分配按钮 THEN THE Task_Assignment_System SHALL 显示用户选择对话框,列出所有标注人员 3. WHEN 管理员选择用户并确认分配 THEN THE Task_Assignment_System SHALL 更新任务的 assigned_to 字段 4. WHEN 任务被分配 THEN THE Task_Assignment_System SHALL 记录分配时间和分配人 5. THE Task_Assignment_System SHALL 支持批量选择多个任务进行分配 6. WHEN 管理员批量分配任务 THEN THE Task_Assignment_System SHALL 支持平均分配给多个用户 7. IF 任务已有分配人员 THEN THE Task_Assignment_System SHALL 显示当前分配人员并允许重新分配 ### Requirement 3: 标注人员任务视图 **User Story:** 作为标注人员,我想要只看到分配给我的任务,以便专注于自己的工作。 #### Acceptance Criteria 1. WHEN 标注人员访问任务列表 THEN THE Task_Assignment_System SHALL 只显示分配给该用户的任务 2. WHEN 标注人员筛选任务状态 THEN THE Task_Assignment_System SHALL 在已分配任务范围内筛选 3. THE Task_Assignment_System SHALL 显示任务的优先级和截止时间(如果设置) 4. WHEN 标注人员点击任务 THEN THE Task_Assignment_System SHALL 打开标注界面 5. THE Task_Assignment_System SHALL 在任务列表显示每个任务的完成进度 6. WHEN 标注人员完成任务 THEN THE Task_Assignment_System SHALL 自动更新任务状态 ### Requirement 4: 预设模板库 **User Story:** 作为管理员,我想要从预设模板中选择标注配置,以便快速创建项目。 #### Acceptance Criteria 1. WHEN 管理员创建项目时 THEN THE Template_Manager SHALL 显示模板选择界面 2. THE Template_Manager SHALL 提供以下预设模板类别: - 图像分类(Image Classification) - 目标检测(Object Detection) - 图像分割(Image Segmentation) - 文本分类(Text Classification) - 命名实体识别(Named Entity Recognition) - 文本标注(Text Labeling) - 音频转写(Audio Transcription) - 视频标注(Video Annotation) 3. WHEN 管理员选择模板 THEN THE Template_Manager SHALL 显示模板预览和说明 4. WHEN 管理员确认选择模板 THEN THE Template_Manager SHALL 将模板配置填充到项目配置字段 5. THE Template_Manager SHALL 支持模板搜索和筛选功能 6. WHEN 管理员选择模板后 THEN THE Template_Manager SHALL 允许进一步自定义配置 ### Requirement 5: 自定义配置编辑器 **User Story:** 作为管理员,我想要自定义标注配置,以便满足特定的标注需求。 #### Acceptance Criteria 1. THE Config_Editor SHALL 提供代码编辑模式,支持 XML 语法高亮 2. THE Config_Editor SHALL 提供可视化编辑模式,通过拖拽组件构建配置 3. WHEN 用户编辑配置 THEN THE Config_Editor SHALL 实时验证 XML 语法 4. IF XML 语法错误 THEN THE Config_Editor SHALL 显示错误位置和错误信息 5. THE Config_Editor SHALL 提供实时预览功能,显示标注界面效果 6. WHEN 用户切换编辑模式 THEN THE Config_Editor SHALL 保持配置内容同步 7. THE Config_Editor SHALL 提供常用标签的快捷插入功能 8. THE Config_Editor SHALL 支持配置的导入和导出 ### Requirement 6: 可视化配置构建器 **User Story:** 作为管理员,我想要通过可视化界面构建标注配置,以便无需编写 XML 代码。 #### Acceptance Criteria 1. THE Config_Editor SHALL 提供组件面板,包含所有可用的标注组件 2. THE Config_Editor SHALL 支持以下组件类型: - 数据源组件:Image, Text, Audio, Video, HyperText - 标注工具:Choices, Labels, Rectangle, Polygon, Brush, KeyPoint - 布局组件:View, Header, Style 3. WHEN 用户拖拽组件到画布 THEN THE Config_Editor SHALL 自动生成对应的 XML 代码 4. WHEN 用户选择组件 THEN THE Config_Editor SHALL 显示属性面板,允许编辑组件属性 5. THE Config_Editor SHALL 支持组件的复制、删除和重新排序 6. WHEN 用户修改组件属性 THEN THE Config_Editor SHALL 实时更新 XML 代码和预览 ### Requirement 7: 配置预览功能 **User Story:** 作为管理员,我想要预览标注配置的效果,以便在保存前确认配置正确。 #### Acceptance Criteria 1. THE Config_Editor SHALL 提供预览面板,显示标注界面效果 2. WHEN 配置更新 THEN THE Config_Editor SHALL 自动刷新预览 3. THE Config_Editor SHALL 支持使用示例数据进行预览 4. WHEN 用户提供自定义预览数据 THEN THE Config_Editor SHALL 使用该数据渲染预览 5. IF 配置无效 THEN THE Config_Editor SHALL 在预览面板显示错误信息 6. THE Config_Editor SHALL 支持预览面板的全屏模式 ### Requirement 8: 数据导出功能 **User Story:** 作为管理员,我想要导出标注结果,以便用于模型训练或其他用途。 #### Acceptance Criteria 1. WHEN 管理员在项目详情页点击导出 THEN THE Data_Export SHALL 显示导出选项对话框 2. THE Data_Export SHALL 支持以下导出格式: - JSON(原始格式) - CSV(表格格式) - COCO(目标检测格式) - YOLO(YOLO 格式) 3. WHEN 管理员选择导出格式并确认 THEN THE Data_Export SHALL 生成并下载导出文件 4. THE Data_Export SHALL 支持筛选导出范围(全部、已完成、指定状态) 5. THE Data_Export SHALL 在导出文件中包含任务元数据和标注结果 6. WHEN 导出大量数据 THEN THE Data_Export SHALL 显示进度指示器 ### Requirement 9: 标注进度与完成度统计 **User Story:** 作为管理员,我想要查看标注工作的进度和完成度统计,以便监控项目进度和人员工作量。 #### Acceptance Criteria 1. THE Task_Assignment_System SHALL 在项目详情页显示统计面板 2. THE Task_Assignment_System SHALL 统计以下项目级指标: - 总任务数、已完成数、进行中数、待处理数 - 项目整体完成进度百分比 - 总标注数据条数、已标注条数、未标注条数 3. THE Task_Assignment_System SHALL 统计以下人员级指标: - 各标注人员的任务分配数和完成数 - 各标注人员的标注数据条数 - 各标注人员的完成率 4. WHEN 管理员查看任务详情 THEN THE Task_Assignment_System SHALL 显示该任务的标注进度(已标注/总数) 5. THE Task_Assignment_System SHALL 提供进度条可视化展示完成度 6. WHEN 标注人员完成一条数据标注 THEN THE Task_Assignment_System SHALL 实时更新进度统计 7. THE Task_Assignment_System SHALL 在任务列表显示每个任务的完成进度百分比