# Requirements Document ## Introduction 本文档定义了标注平台角色权限菜单优化和项目配置流程改进的需求规范。主要包括: 1. 区分管理员和标注员的菜单权限,标注员只能看到有限的菜单 2. 新增"管理外部来源数据"菜单,专门管理外部API创建的项目 3. 优化项目管理页面,仅展示已完成和进行中的项目,同时显示项目来源 4. 改进项目配置流程,支持选卡式的标注类型选择和标签配置(类似 Label Studio) 5. 内部项目创建时也使用相同的配置流程 ## Glossary - **Admin**: 管理员用户,拥有完整的系统访问权限 - **Annotator**: 标注员用户,只能访问与标注工作相关的功能 - **External_Project**: 外部项目,通过外部API(如样本中心)创建的项目 - **Internal_Project**: 内部项目,通过平台内部创建的项目 - **Task_Type**: 任务类型,包括文本分类、图像分类、目标检测、命名实体识别 - **Label_Config**: 标签配置,定义标注时可选的标签及其属性 - **XML_Config**: Label Studio 的 XML 配置,定义标注界面的结构 - **Project_Status**: 项目状态(draft/configuring/ready/in_progress/completed) - **Sidebar_Menu**: 侧边栏菜单,应用的主导航菜单 ## Requirements ### Requirement 1: 角色权限菜单区分 **User Story:** As a 系统管理员, I want to 根据用户角色显示不同的菜单, so that 标注员只能访问与其工作相关的功能,保持界面简洁。 #### Acceptance Criteria 1. WHEN 管理员登录系统 THEN THE Sidebar_Menu SHALL 显示所有菜单项:项目管理、任务管理、我的任务、我的标注、用户管理、管理外部来源数据 2. WHEN 标注员登录系统 THEN THE Sidebar_Menu SHALL 仅显示:项目管理、我的任务、我的标注 3. THE System SHALL 根据 currentUser.role 字段判断用户角色 4. IF 标注员尝试访问管理员专属页面 THEN THE System SHALL 重定向到首页或显示无权限提示 5. WHEN 用户角色为 'admin' THEN THE System SHALL 将其识别为管理员 6. WHEN 用户角色为 'annotator' THEN THE System SHALL 将其识别为标注员 ### Requirement 2: 管理外部来源数据菜单 **User Story:** As a 管理员, I want to 有一个专门的菜单来管理外部API创建的项目, so that 我可以集中处理外部项目的配置和任务分发工作。 #### Acceptance Criteria 1. THE Sidebar_Menu SHALL 包含"管理外部来源数据"菜单项,仅对管理员可见 2. WHEN 管理员点击"管理外部来源数据"菜单 THEN THE System SHALL 导航到外部项目管理页面 3. THE External_Project_Page SHALL 仅显示 source='external' 的项目 4. THE External_Project_Page SHALL 显示项目名称、任务类型、任务数量、创建时间和当前状态 5. THE External_Project_Page SHALL 支持按项目状态筛选(draft/configuring/ready/in_progress/completed) 6. WHEN 项目状态为 draft 或 configuring THEN THE System SHALL 显示"配置项目"按钮 7. WHEN 项目状态为 ready THEN THE System SHALL 显示"一键分发"按钮 8. THE External_Project_Page SHALL 显示项目的标注进度(已完成/总数) ### Requirement 3: 项目管理页面优化 **User Story:** As a 用户, I want to 在项目管理页面只看到已完成和进行中的项目, so that 我可以专注于正在进行的标注工作。 #### Acceptance Criteria 1. THE Project_List_Page SHALL 默认仅显示状态为 'in_progress' 或 'completed' 的项目 2. THE Project_List_Page SHALL 显示项目来源标签(内部/外部) 3. THE Project_List_Page SHALL 保留搜索功能,支持按项目名称和描述搜索 4. THE Project_List_Page SHALL 显示项目的标注进度 5. THE Project_List_Page SHALL 移除状态筛选器(因为只显示进行中和已完成) 6. THE Project_List_Page SHALL 保留来源筛选器(内部/外部) 7. WHEN 标注员访问项目管理页面 THEN THE System SHALL 隐藏创建项目按钮 8. WHEN 管理员访问项目管理页面 THEN THE System SHALL 显示创建项目按钮 ### Requirement 4: 选卡式标注类型配置 **User Story:** As a 管理员, I want to 通过选卡式界面选择标注类型并配置标签, so that 我可以更直观地配置项目,无需手动编写 XML。 #### Acceptance Criteria 1. THE Project_Config_Page SHALL 提供选卡式的标注类型选择界面 2. THE System SHALL 支持四种标注类型:文本分类(text_classification)、图像分类(image_classification)、目标检测(object_detection)、命名实体识别(ner) 3. WHEN 用户选择标注类型 THEN THE System SHALL 显示该类型对应的配置选项 4. THE System SHALL 提供可视化的标签编辑界面,支持添加、删除、编辑标签 5. WHEN 用户添加标签 THEN THE System SHALL 允许设置标签名称、颜色和快捷键 6. THE System SHALL 根据标注类型和标签配置自动生成 XML 配置 7. THE System SHALL 提供 XML 配置预览功能 8. THE System SHALL 验证配置的有效性 9. IF 配置无效 THEN THE System SHALL 显示错误提示并阻止保存 ### Requirement 5: 标注类型配置详情 **User Story:** As a 管理员, I want to 为不同标注类型配置特定的选项, so that 标注界面能够满足不同任务的需求。 #### Acceptance Criteria 1. WHEN 标注类型为 text_classification THEN THE System SHALL 显示文本分类配置选项 2. WHEN 标注类型为 text_classification THEN THE System SHALL 支持配置分类标签列表 3. WHEN 标注类型为 text_classification THEN THE System SHALL 支持设置单选或多选模式 4. WHEN 标注类型为 image_classification THEN THE System SHALL 显示图像分类配置选项 5. WHEN 标注类型为 image_classification THEN THE System SHALL 支持配置分类标签列表 6. WHEN 标注类型为 object_detection THEN THE System SHALL 显示目标检测配置选项 7. WHEN 标注类型为 object_detection THEN THE System SHALL 支持配置边界框标签列表 8. WHEN 标注类型为 ner THEN THE System SHALL 显示命名实体识别配置选项 9. WHEN 标注类型为 ner THEN THE System SHALL 支持配置实体标签列表 ### Requirement 6: 内部项目创建流程改进 **User Story:** As a 管理员, I want to 在创建内部项目时使用相同的选卡式配置流程, so that 内部和外部项目的配置体验一致。 #### Acceptance Criteria 1. WHEN 管理员点击创建项目 THEN THE System SHALL 显示选卡式配置向导 2. THE Create_Project_Wizard SHALL 包含以下步骤:选择标注类型 → 配置标签 → 填写项目信息 3. WHEN 用户选择标注类型 THEN THE System SHALL 显示对应的标签配置界面 4. WHEN 用户完成标签配置 THEN THE System SHALL 自动生成 XML 配置 5. THE Create_Project_Wizard SHALL 显示配置预览 6. WHEN 用户确认创建 THEN THE System SHALL 创建项目并设置状态为 'draft' 7. THE System SHALL 支持在向导中返回上一步修改配置 8. THE System SHALL 保留高级用户直接编辑 XML 的选项 ### Requirement 7: 标签配置组件 **User Story:** As a 管理员, I want to 使用可视化组件配置标签, so that 我可以快速添加和管理标注标签。 #### Acceptance Criteria 1. THE Label_Editor SHALL 显示当前已配置的标签列表 2. THE Label_Editor SHALL 提供添加新标签的按钮 3. WHEN 用户点击添加标签 THEN THE System SHALL 显示标签编辑表单 4. THE Label_Edit_Form SHALL 包含标签名称输入框 5. THE Label_Edit_Form SHALL 包含颜色选择器 6. THE Label_Edit_Form SHALL 包含快捷键输入框(可选) 7. THE Label_Editor SHALL 支持拖拽排序标签 8. THE Label_Editor SHALL 支持删除标签 9. THE Label_Editor SHALL 支持编辑已有标签 10. IF 标签名称为空 THEN THE System SHALL 显示验证错误 11. IF 标签名称重复 THEN THE System SHALL 显示验证错误 ### Requirement 8: XML 配置生成 **User Story:** As a 系统, I want to 根据标注类型和标签配置自动生成 XML, so that 用户无需手动编写配置。 #### Acceptance Criteria 1. WHEN 标注类型为 text_classification THEN THE System SHALL 生成包含 Text 和 Choices 元素的 XML 2. WHEN 标注类型为 image_classification THEN THE System SHALL 生成包含 Image 和 Choices 元素的 XML 3. WHEN 标注类型为 object_detection THEN THE System SHALL 生成包含 Image 和 RectangleLabels 元素的 XML 4. WHEN 标注类型为 ner THEN THE System SHALL 生成包含 Text 和 Labels 元素的 XML 5. THE Generated_XML SHALL 包含所有配置的标签及其属性(名称、颜色、快捷键) 6. THE Generated_XML SHALL 符合 Label Studio 的 XML 规范 7. THE System SHALL 在标签配置变化时实时更新 XML 预览