尝试一个简单的任务管理系统
1. 组件定位
1.1 核心职责
本组件负责管理任务的全生命周期,实现任务的高效创建、跟踪、更新与状态流转。
1.2 核心输入
- 用户发起的任务创建请求,包含任务名称、描述、优先级、责任人、计划时间等信息
- 用户发起的任务更新请求,包含任务状态变更、实际完成时间填写等操作
- 用户发起的任务查询请求,包含按条件筛选、排序、分页等参数
- 用户发起的任务删除/取消请求
1.3 核心输出
- 返回给用户的任务创建/更新/删除操作结果(成功/失败及原因)
- 返回给用户的任务列表及任务详情数据
- 推送给用户的状态变更通知(任务状态发生变化时)
- 返回给用户的校验错误提示信息
1.4 职责边界
- 本组件不负责用户认证与权限管理,仅接收已认证用户的操作请求
- 本组件不负责人员组织架构管理,仅引用已有的责任人信息
- 本组件不负责项目级别的资源调度与排程优化
- 本组件不负责与其他业务系统(如工单系统、邮件系统)的深度集成
2. 领域术语
任务
: 用户需要完成的一项工作单元,包含名称、描述、优先级、责任人、时间计划和状态等属性。
优先级
: 任务紧急程度的分级标识,取值为高、中、低三级,用于决定任务的处理顺序。
责任人
: 对任务完成结果负责的人员或团队,是任务的唯一执行主体。
任务状态
: 任务在其生命周期中所处的阶段,取值为未开始、进行中、已完成、已取消。
计划开始时间
: 任务预期开始执行的日期和时间,由创建者在创建任务时设定。
计划完成时间
: 任务预期完成的日期和时间,由创建者在创建任务时设定。
实际完成时间
: 任务实际完成时的日期和时间,仅在任务状态变更为已完成时记录。
3. 角色与边界
3.1 核心角色
- 任务创建者:创建任务并设定任务初始属性(名称、描述、优先级、责任人、计划时间等)的用户
- 任务执行者:被指定为任务责任人,负责执行任务并更新任务状态的用户
- 任务管理者:查看任务列表、跟踪任务进度、对任务进行管理操作的用户
3.2 外部系统
- 用户管理系统:提供用户身份信息和组织架构数据,用于责任人选择与校验
- 通知服务:接收任务状态变更事件,向相关用户推送通知
3.3 交互上下文
@startuml
left to right direction
actor "任务创建者" as Creator
actor "任务执行者" as Executor
actor "任务管理者" as Manager
rectangle "任务管理系统" as TaskSystem {
}
rectangle "用户管理系统" as UserSystem
rectangle "通知服务" as NotifyService
Creator --> TaskSystem : 创建/编辑任务
Executor --> TaskSystem : 更新状态/填写完成时间
Manager --> TaskSystem : 查询/跟踪/管理任务
TaskSystem --> UserSystem : 查询用户信息
TaskSystem --> NotifyService : 推送状态变更通知
@enduml
4. DFX约束
4.1 性能
- 任务创建接口响应时间不超过 500ms
- 任务列表查询接口响应时间不超过 1000ms(单次返回不超过100条记录)
- 系统支持至少 500 并发用户的任务操作请求
4.2 可靠性
- 系统可用性不低于 99.9%
- 任务数据操作支持事务一致性,确保状态流转不会出现中间态
- 任务数据变更支持审计追踪,可追溯每次变更的操作人、时间和内容
4.3 安全性
- 所有任务操作接口必须经过身份认证
- 敏感操作(删除任务、取消任务)必须进行操作权限校验
- 关键操作(创建、状态变更、删除)必须记录审计日志
4.4 可维护性
- 任务状态变更事件必须接入监控指标,可统计各状态任务数量
- 操作日志必须记录操作人、操作时间、操作类型和变更内容
- 接口变更遵循向后兼容策略,旧版本接口至少保留3个月过渡期
4.5 兼容性
- 任务数据格式变更时,必须提供存量数据迁移方案
- API接口版本化管理,主版本升级时提供兼容说明
5. 核心能力
5.1 任务创建
5.1.1 业务规则
-
任务名称必填规则:创建任务时,任务名称必须提供且不能为空字符串
a. 验收条件:[用户提交任务创建请求且任务名称为空] → [系统拒绝创建并返回"任务名称不能为空"提示]
-
任务名称长度限制:任务名称长度不得超过200个字符
a. 验收条件:[用户输入任务名称超过200个字符] → [系统拒绝创建并返回"任务名称长度超出限制"提示]
-
优先级取值规则:优先级必须为高、中、低三者之一,默认值为中
a. 验收条件:[用户创建任务时未指定优先级] → [系统自动将优先级设为中]
b. 验收条件:[用户指定优先级为非高/中/低的值] → [系统拒绝创建并返回"优先级取值无效"提示]
-
责任人必填规则:创建任务时,责任人必须指定
a. 验收条件:[用户提交任务创建请求且责任人为空] → [系统拒绝创建并返回"责任人不能为空"提示]
-
计划时间规则:计划开始时间和计划完成时间均为可选项;若同时提供,计划完成时间不得早于计划开始时间
a. 验收条件:[用户指定计划完成时间早于计划开始时间] → [系统拒绝创建并返回"计划完成时间不得早于计划开始时间"提示]
-
初始状态规则:新建任务的初始状态必须为"未开始"
a. 验收条件:[用户成功创建任务] → [系统将任务状态设为未开始]
-
实际完成时间初始规则:新建任务的实际完成时间必须为空
a. 验收条件:[用户成功创建任务] → [任务的实际完成时间为空]
5.1.2 交互流程
@startuml
actor "任务创建者" as User
participant "任务管理系统" as System
participant "用户管理系统" as UserMgmt
User -> System : 提交任务创建请求(名称、描述、优先级、责任人、计划时间)
System -> UserMgmt : 校验责任人是否存在
UserMgmt --> System : 返回责任人校验结果
System -> System : 校验任务数据合法性
System -> System : 创建任务记录(状态=未开始)
System --> User : 返回创建成功结果(含任务ID)
@enduml
5.1.3 异常场景
-
任务名称为空
a. 触发条件:用户提交的任务创建请求中任务名称为空或仅包含空白字符
b. 系统行为:拒绝创建请求,不生成任务记录
c. 用户感知:提示"任务名称不能为空"
-
责任人不存在
a. 触发条件:用户指定的责任人在用户管理系统中不存在
b. 系统行为:拒绝创建请求,不生成任务记录
c. 用户感知:提示"指定的责任人不存在"
-
计划时间逻辑冲突
a. 触发条件:计划完成时间早于计划开始时间
b. 系统行为:拒绝创建请求,不生成任务记录
c. 用户感知:提示"计划完成时间不得早于计划开始时间"
5.2 任务状态流转
5.2.1 业务规则
-
状态流转规则:任务状态必须按照以下合法路径流转
- 未开始 → 进行中
- 进行中 → 已完成
- 进行中 → 已取消
- 未开始 → 已取消
a. 验收条件:[用户将任务状态从"未开始"变更为"进行中"] → [系统允许变更并更新任务状态]
b. 验收条件:[用户将任务状态从"未开始"变更为"已完成"] → [系统拒绝变更并返回"非法状态流转"提示]
-
完成时间自动填充规则:当任务状态变更为"已完成"时,系统必须自动记录实际完成时间为当前时间
a. 验收条件:[用户将任务状态从"进行中"变更为"已完成"] → [系统自动将实际完成时间设为当前时间]
-
已完成任务不可变更规则:状态为"已完成"的任务,禁止变更任何属性
a. 验收条件:[用户尝试修改已完成的任务属性] → [系统拒绝修改并返回"已完成的任务不可修改"提示]
-
已取消任务不可变更规则:状态为"已取消"的任务,禁止变更任何属性
a. 验收条件:[用户尝试修改已取消的任务属性] → [系统拒绝修改并返回"已取消的任务不可修改"提示]
-
取消任务不可恢复规则:任务一旦取消,不可恢复到其他状态
a. 验收条件:[用户尝试将已取消任务变更为其他状态] → [系统拒绝变更并返回"已取消的任务不可恢复"提示]
5.2.2 交互流程
@startuml
actor "任务执行者" as User
participant "任务管理系统" as System
participant "通知服务" as Notify
User -> System : 提交状态变更请求(任务ID,目标状态)
System -> System : 校验当前状态与目标状态的流转合法性
System -> System : 更新任务状态
alt 目标状态=已完成
System -> System : 自动填充实际完成时间为当前时间
end
System -> Notify : 发布状态变更事件
System --> User : 返回状态变更成功结果
@enduml
5.2.3 异常场景
-
非法状态流转
a. 触发条件:用户请求的状态变更不在合法流转路径中
b. 系统行为:拒绝状态变更请求,保持原状态不变
c. 用户感知:提示"非法状态流转,不允许从[当前状态]变更为[目标状态]"
-
已完成任务修改
a. 触发条件:用户尝试修改状态为"已完成"的任务
b. 系统行为:拒绝修改请求,保持任务数据不变
c. 用户感知:提示"已完成的任务不可修改"
5.3 任务信息更新
5.3.1 业务规则
-
可更新字段规则:对于未开始或进行中的任务,允许更新以下字段:任务名称、任务描述、优先级、责任人、计划开始时间、计划完成时间
a. 验收条件:[用户修改进行中任务的优先级] → [系统允许修改并保存新值]
-
实际完成时间禁止手动修改规则:实际完成时间由系统在任务完成时自动填充,禁止用户手动修改
a. 验收条件:[用户尝试手动修改实际完成时间] → [系统拒绝修改并返回"实际完成时间由系统自动管理"提示]
-
更新时计划时间校验规则:更新计划时间时,仍需满足计划完成时间不早于计划开始时间的约束
a. 验收条件:[用户将计划完成时间修改为早于计划开始时间] → [系统拒绝修改并返回"计划完成时间不得早于计划开始时间"提示]
-
更新时名称校验规则:更新任务名称时,仍需满足名称非空且长度不超过200字符的约束
a. 验收条件:[用户将任务名称修改为空] → [系统拒绝修改并返回"任务名称不能为空"提示]
5.3.2 交互流程
@startuml
actor "任务创建者/执行者" as User
participant "任务管理系统" as System
User -> System : 提交任务更新请求(任务ID,更新字段及值)
System -> System : 校验任务当前状态是否允许修改
System -> System : 校验更新数据的合法性
System -> System : 更新任务字段
System --> User : 返回更新成功结果
@enduml
5.3.3 异常场景
-
任务状态不允许修改
a. 触发条件:用户尝试修改已完成或已取消的任务
b. 系统行为:拒绝更新请求,保持任务数据不变
c. 用户感知:提示"当前任务状态不允许修改"
-
更新数据校验失败
a. 触发条件:用户提交的更新数据不满足校验规则(如名称为空、时间逻辑冲突等)
b. 系统行为:拒绝更新请求,保持任务数据不变
c. 用户感知:返回具体的校验错误提示信息
5.4 任务查询与列表
5.4.1 业务规则
-
默认排序规则:任务列表默认按优先级降序(高→中→低),同优先级按计划开始时间升序排列
a. 验收条件:[用户查询任务列表且未指定排序方式] → [系统按优先级降序、计划开始时间升序返回结果]
-
状态筛选规则:支持按任务状态筛选,可单选或多选状态值
a. 验收条件:[用户选择筛选条件为"进行中"] → [系统仅返回状态为进行中的任务]
-
责任人筛选规则:支持按责任人筛选任务
a. 验收条件:[用户选择筛选条件为责任人"张三"] → [系统仅返回责任人为张三的任务]
-
优先级筛选规则:支持按优先级筛选任务
a. 验收条件:[用户选择筛选条件为优先级"高"] → [系统仅返回优先级为高的任务]
-
分页规则:任务列表必须支持分页查询,每页默认20条,最大100条
a. 验收条件:[用户查询任务列表且未指定每页条数] → [系统默认每页返回20条记录]
b. 验收条件:[用户指定每页条数超过100] → [系统最多返回100条记录]
-
任务详情查询规则:支持通过任务ID查询单个任务的完整信息
a. 验收条件:[用户通过有效任务ID查询任务详情] → [系统返回该任务的全部属性信息]
b. 验收条件:[用户通过不存在的任务ID查询任务详情] → [系统返回"任务不存在"提示]
5.4.2 交互流程
@startuml
actor "任务管理者" as User
participant "任务管理系统" as System
User -> System : 提交任务查询请求(筛选条件、排序方式、分页参数)
System -> System : 构建查询条件
System -> System : 执行查询并排序
System -> System : 分页处理
System --> User : 返回任务列表(含总数、当前页数据)
@enduml
5.4.3 异常场景
-
任务不存在
a. 触发条件:用户查询的任务ID在系统中不存在
b. 系统行为:返回查询失败结果
c. 用户感知:提示"任务不存在"
-
查询参数格式错误
a. 触发条件:用户提供的筛选条件或分页参数格式不合法
b. 系统行为:拒绝查询请求
c. 用户感知:提示"查询参数格式错误"
5.5 任务删除
5.5.1 业务规则
-
可删除状态规则:仅允许删除状态为"未开始"或"已取消"的任务
a. 验收条件:[用户删除状态为"未开始"的任务] → [系统允许删除并移除任务记录]
b. 验收条件:[用户删除状态为"进行中"的任务] → [系统拒绝删除并返回"进行中的任务不可删除"提示]
-
删除确认规则:删除操作必须经过用户二次确认
a. 验收条件:[用户发起删除请求] → [系统要求用户确认删除操作]
-
删除不可恢复规则:任务一旦删除,不可恢复
a. 验收条件:[用户确认删除任务] → [系统永久移除任务记录,不可恢复]
5.5.2 交互流程
@startuml
actor "任务创建者/管理者" as User
participant "任务管理系统" as System
User -> System : 提交任务删除请求(任务ID)
System -> System : 校验任务状态是否允许删除
System --> User : 返回删除确认提示
User -> System : 确认删除
System -> System : 删除任务记录
System --> User : 返回删除成功结果
@enduml
5.5.3 异常场景
-
任务状态不允许删除
a. 触发条件:用户尝试删除状态为"进行中"或"已完成"的任务
b. 系统行为:拒绝删除请求,保持任务数据不变
c. 用户感知:提示"当前任务状态不允许删除"
-
任务不存在
a. 触发条件:用户尝试删除的任务ID在系统中不存在
b. 系统行为:返回删除失败结果
c. 用户感知:提示"任务不存在"
6. 数据约束
6.1 任务
- 任务ID:系统自动生成的唯一标识,全局不可重复
- 任务名称:必填,长度1~200个字符,不允许仅包含空白字符
- 任务描述:选填,最大长度2000个字符,支持富文本格式
- 优先级:必填,取值范围为{高, 中, 低},默认值为"中"
- 责任人:必填,必须为用户管理系统中存在的有效用户或团队标识
- 计划开始时间:选填,格式为ISO 8601日期时间格式(如2026-06-11T09:00:00+08:00)
- 计划完成时间:选填,格式为ISO 8601日期时间格式;若计划开始时间已填写,则计划完成时间不得早于计划开始时间
- 实际完成时间:由系统自动管理,仅在任务状态变更为"已完成"时自动填充为当前时间,禁止用户手动修改
- 任务状态:取值范围为{未开始, 进行中, 已完成, 已取消},初始值为"未开始",必须遵循合法状态流转路径
- 创建时间:系统自动记录的任务创建时间,不可修改
- 更新时间:系统自动记录的任务最后更新时间,每次任务属性变更时自动更新
- 点赞
- 收藏
- 关注作者
评论(0)