跳转到正文
← 返回学习板块
项目文档 · 设备运维工单平台

工单项目需求与开发计划

业务规则、已实现功能、待办事项与开发里程碑。

项目文档目录 · 4 篇
本篇目录

返回项目首页 · 设计 · 运行与验收

核对日期:2026-10-13。当前:v0.1 开发中。

1. 项目背景 #

以园区或实验室的设备故障为场景:报修人提交故障,管理员派给工程师,工程师处理后交给报修人验收。使用模拟数据,不接入真实硬件。

最终希望能够追踪“谁提交了问题、谁负责处理、当前处理到哪一步、为什么发生状态变化”。

2. 目标用户(后续 Web 阶段) #

角色计划权限
报修人 REPORTER提交工单、查看自己的工单、评论、验收通过或驳回
工程师 ENGINEER查看分给自己的工单、评论、提交处理结果
管理员 ADMIN管理设备、查看工单、派单

当前没有用户实体、登录或权限检查。assign 接受正整数工程师编号,不会验证这个人是否存在或具有工程师角色。

3. 当前需求及验收口径 #

编号需求当前状态与验收口径
R01创建工单已实现;编号 > 0;标题非 null,trim 后非空且 length ≤ 50;初始 OPEN、处理人 null
R02修改标题已实现;沿用创建时的标题规则;失败保留原标题
R03管理工单已实现;拒绝 null 和重复编号;重复添加不能覆盖旧工单
R04编号查询已实现;找到返回工单引用,找不到返回 null
R05状态筛选已实现;拒绝 null 状态;无匹配返回空列表;结果按插入顺序排列
R06派单已实现;工程师编号 > 0,仅 OPEN 可派单;成功更新处理人和状态;失败保留原值
R07单张工单写文件Demo 已实现;UTF-8 保存编号、标题、状态、处理人及 count
R08文件读回字段Demo 已实现;UTF-8 读回字符串,检查必要字段并解析编号、枚举与处理人
R09校验并恢复工单已实现;Ticket.restore 复用构造器校验,检查状态与处理人一致性,并保留原编号、状态及处理人
R10服务集合存取待实现;保存多张工单,完整加载后恢复服务;坏记录不得被静默忽略

标题长度当前按 Java String.length() 计算,即 UTF-16 代码单元数量;没有按用户感知字符数计数。

4. 状态规则 #

操作前置状态成功后的状态实现状态
创建无OPEN已实现
派单OPENIN_PROGRESS已实现
提交处理结果IN_PROGRESSRESOLVED待实现
验收通过RESOLVEDCLOSED待实现
验收驳回RESOLVEDIN_PROGRESS待实现

RESOLVED、CLOSED 已定义为枚举值,恢复入口可以重建这两种状态,但相应的业务流转方法尚未实现。后续关闭后的工单不再进行业务变更;当前 rename 只有标题校验,完整的关闭限制尚未实现。

业务状态通过具有明确含义的方法修改,避免开放任意 setStatus 绕过规则。后续 Web 阶段同时检查操作者权限,并记录操作日志。

5. 开发里程碑 #

阶段工作内容完成标准
v0.1 Java 基础业务对象封装、集合、文件持久化、异常处理多张工单能够保存并恢复,异常数据有明确反馈,业务校验不会被恢复入口绕过
v0.5 Web 核心Maven、MySQL、Spring Boot、MyBatis、完整状态流、分页、评论、操作日志本地接口能跑通报修到验收,数据库持久化,状态变更和日志具有事务一致性
v1.0 实习展示三角色登录权限、并发派单防护、自动化测试、简单页面、部署说明从干净环境按文档启动,权限与核心异常场景通过验证,可演示完整流程

后续依赖版本在进入对应阶段时核对并固定。当前没有数据库表和 REST 接口实现,因此这里的阶段规划不能作为现有功能演示说明。

不纳入当前范围:微服务、Kubernetes、支付、真实设备通信。可选扩展在核心流程完成后安排。

6. 下一步任务 #

字段解析和受约束的对象恢复入口已完成,接下来:

  1. 将文件操作抽取到持久化类,逐步接入 TicketService。
  2. 读取并校验 count,支持多张工单及重复编号检查。
  3. 明确首次启动缺文件和存档损坏的不同处理方式;加载失败不以空集合覆盖原存档。
  4. 增加可重复运行的自动化测试,再进入构建工具、数据库与 Web 阶段。

以上四项尚未完成,按教学进度逐项实现。

7. 文档演进 #

当前需求、设计、运行验收文档随源码维护。进入数据库阶段补表结构、约束与迁移说明;进入 Web 阶段补请求响应、错误码与权限矩阵;进入部署阶段补环境变量、启动方式和数据备份恢复步骤。

← 浏览全部课程回到顶部 ↑