跳到主要内容

C0726 系统需求规格说明文档 (SRS)

版本: 1.1 (release prepare) 日期: 2025-07-27

修订历史

版本日期作者说明
1.02025-07-27@cym初始版本
1.12025-07-28@phil616发布准备版
1.22025-07-29@phil616发布版本

目录

  1. 引言
  2. 总体描述
  3. 功能需求
  4. 非功能需求
  5. 外部接口需求
  6. 数据需求
  7. 业务流程与用例
  8. 可追溯性矩阵
  9. 术语表
  10. 附录

1. 引言​

1.1 文档目的​

本需求规格说明文档旨在定义工件质量溯源系统的所有软件需求,明确系统功能、性能及接口,为项目经理、开发、测试及运维人员提供统一、可验证的依据。

1.2 范围​

工件质量溯源系统由以下子系统组成:

  • 后端服务,混用名称:API端、后端、业务端
  • 微信小程序用户端,混用名称:用户终端,小程序端,用户端,客户端
  • 管理端,混用名称: 管理员端,Dashboard端
  • 图像识别模块 (第三方 API),混用名称:CV端,视觉处理、图像识别、图像处理端

系统支持工件类型和型号自动识别、检查员质检记录、调度流程、维修员任务管理及常规系统管理(用户、日志、通知等)。

不在范围: ERP/MES 深度集成、移动原生 App、离线模式。

1.3 术语、缩写与定义​

缩写/术语定义
SRSSoftware Requirements Specification 软件需求规格文档
APIApplication Program Interface 应用程序接口
CVComputer Vision 计算机视觉

1.3.1 系统定义说明​

缩写、术语定义、意义
api-platformAPI 平台
miniapp微信小程序
admin-dashboard管理端
cvcore-proxy图像识别模块

1.3.2 角色定义​

缩写、术语定义、意义
InspectorIndustrial Inspector 工业检验员角色
MaintenanceMaintenance Technician 维护人员角色
AdministratorDispatch Administrator 调度员管理员角色

1.3.3 实体定义​

缩写、术语定义、意义
Workpiece工件实体
WorkpieceMapping工件图片映射实体
User用户实体
AccessLog操作日志
Role权限控制
IssueTicket问题工单

1.4 参考资料​

1.5 文档结构​

本说明书依 IEEE 830 建议,按"总体描述 → 具体需求 → 附件"顺序组织,以便对应项目生命周期。

2. 总体描述​

2.1 产品视角​

系统作为独立质量管理模块,可与上层 ERP/MES 系统通过 RESTful 接口集成。下图示意其体系结构:

  • 微信小程序用户端(用户终端)
  • Dashboard管理端(管理员终端)
  • API端(服务后端)
  • 图像识别模块(第三方 API)

2.2 产品功能摘要​

  • 图像识别:工件类型、型号和 ID 自动识别
  • 质检记录:维修员上传结果、图片与备注
  • 工件检查:检察员上传工件情况。
  • 任务调度:调度员分配任务,维修员接收并反馈
  • 系统管理:用户/角色管理、日志查看、参数配置

2.3 用户特征​

用户角色对应角色使用环境
检查员Inspector现场
调度员Administrator管控中心
维修员Maintenance现场
管理员System办公室

2.4 运行环境​

  • 服务器:未定
  • 数据库:未定
  • 前端:未定

2.5 设计与实现约束​

  • 使用 RESTful API 设计原则
  • 接口遵循 OpenAPI 3.0 规范
  • JWT 鉴权机制
  • 图像识别延时必须 ≤500ms

2.6 假设与依赖​

  • 第三方图像识别服务可用且满足 SLA
  • 网络环境稳定,带宽≥10Mbps

3. 功能需求​

每项功能均需编号 (F(1 位模块)(2 位序号),例如F0301),并包含以下属性:

  • 需求 ID
  • 描述
  • 前置条件
  • 输入
  • 处理
  • 输出
  • 错误/异常处理
  • 优先级 (高、中、低)
  • 可追溯性 (关联用例)

3.1 用户认证与授权模块​

3.1.1 微信联合登录​

需求IDF101
描述允许用户通过微信身份认证体系登录小程序,并与系统用户绑定
前置条件用户已安装微信小程序
输入微信授权信息(OpenID、用户基本信息)
处理验证微信授权,检查OpenID是否已绑定,创建或关联系统用户
输出JWT令牌,用户基本信息
异常微信授权失败、网络异常、重复绑定异常
优先级高
可追溯性UC101

3.1.2 管理员登录​

需求IDF102
描述管理员通过用户名密码方式登录Dashboard管理端
前置条件管理员账户已创建并激活
输入用户名、密码
处理验证用户名密码,检查用户权限,生成JWT
输出JWT令牌,用户权限信息
异常用户名密码错误、账户未激活、权限不足
优先级高
可追溯性UC102

3.1.3 权限管理​

需求IDF103
描述管理员可进行用户权限管理和角色分配
前置条件管理员已登录且具有权限管理权限
输入用户ID、角色信息、权限范围
处理验证管理员权限,更新用户角色和权限配置
输出权限更新结果
异常权限不足、用户不存在、角色配置错误
优先级中
可追溯性管理功能用例

3.2 图像识别模块​

3.2.1 工件图像识别​

需求IDF201
描述通过图像识别技术自动识别工件类型、型号和ID
前置条件用户已登录,图像识别服务可用
输入工件图像文件
处理调用第三方CV API,解析识别结果,匹配工件数据库
输出工件ID、类型、型号、置信度
异常图像格式不支持、识别失败、网络超时、置信度过低
优先级高
可追溯性UC103, UC105

3.2.2 图像存储管理​

需求IDF202
描述管理工件图像的存储和映射关系
前置条件图像识别完成
输入图像文件、工件ID、识别结果
处理存储图像文件,创建工件图像映射记录
输出图像URL、映射记录ID
异常存储空间不足、文件格式错误、映射创建失败
优先级中
可追溯性F201

3.3 检查管理模块​

3.3.1 检查任务分配​

需求IDF301
描述系统自动或管理员手动分配检查任务给检查员
前置条件存在待检查工件,检查员已登录
输入工件ID、检查员ID、检查类型
处理创建检查任务记录,分配给指定检查员
输出检查任务ID、任务详情
异常工件不存在、检查员不可用、重复分配
优先级高
可追溯性UC103

3.3.2 检查结果上报​

需求IDF302
描述检查员完成检查后上报检查结果和相关图片
前置条件检查员已接收检查任务
输入检查任务ID、检查结果、问题描述、现场图片
处理更新工件状态,记录检查结果,如有问题则创建问题工单
输出检查完成确认、问题工单ID(如适用)
异常任务不存在、图片上传失败、状态更新失败
优先级高
可追溯性UC103

3.4 问题工单管理模块​

3.4.1 问题工单生成​

需求IDF401
描述当检查发现问题时自动生成问题工单
前置条件检查员上报了问题
输入工件ID、问题类型、问题描述、检查员ID
处理创建问题工单记录,设置初始状态为已生成
输出问题工单ID、工单详情
异常工件信息错误、工单创建失败
优先级高
可追溯性F302

3.4.2 维修任务分配​

需求IDF402
描述调度员将问题工单分配给维修人员
前置条件存在未分配的问题工单,调度员已登录
输入问题工单ID、维修人员ID
处理更新工单分配信息,通知维修人员
输出分配确认、通知结果
异常工单不存在、维修人员不可用、重复分配
优先级高
可追溯性UC104

3.4.3 维修结果确认​

需求IDF403
描述维修人员完成维修后上报结果,调度员进行确认
前置条件维修任务已分配,维修人员已完成维修
输入工单ID、维修结果、维修图片、维修说明
处理更新工单状态,记录维修结果,更新工件状态
输出维修完成确认、工件状态更新
异常工单状态错误、图片上传失败、状态更新失败
优先级高
可追溯性UC105

3.5 调度管理模块​

3.5.1 任务调度总览​

需求IDF501
描述调度员查看所有待处理的检查和维修任务
前置条件调度员已登录
输入查询条件(状态、时间范围、优先级等)
处理查询数据库,汇总任务信息
输出任务列表、统计信息、优先级排序
异常数据库查询失败、权限不足
优先级中
可追溯性UC104

3.5.2 自动调度规则​

需求IDF502
描述系统根据预设规则自动分配检查和维修任务
前置条件调度规则已配置
输入任务类型、人员可用性、优先级规则
处理执行调度算法,自动分配任务
输出自动分配结果、分配日志
异常规则配置错误、人员不足、分配冲突
优先级中
可追溯性UC106

3.6 系统管理模块​

3.6.1 用户管理​

需求IDF601
描述管理员进行用户账户的创建、修改、删除
前置条件管理员已登录且具有用户管理权限
输入用户信息(用户名、邮箱、角色等)
处理验证输入信息,执行用户管理操作
输出操作结果确认
异常权限不足、用户名重复、邮箱格式错误
优先级中
可追溯性管理功能用例

3.6.2 操作日志记录​

需求IDF602
描述系统自动记录所有用户操作和系统事件
前置条件系统正常运行
输入用户操作、系统事件
处理记录操作详情到日志表
输出日志记录ID
异常日志存储失败、磁盘空间不足
优先级中
可追溯性所有功能模块

3.6.3 系统参数配置​

需求IDF603
描述管理员配置系统运行参数和业务规则
前置条件管理员已登录且具有系统配置权限
输入配置参数名称、参数值
处理验证参数有效性,更新系统配置
输出配置更新确认
异常参数格式错误、配置冲突、权限不足
优先级低
可追溯性系统管理用例

3.7 轮询检查模块​

3.7.1 定时轮询检查​

需求IDF701
描述系统定时检查工件状态,自动生成检查任务
前置条件轮询服务已启动,检查规则已配置
输入轮询间隔、检查规则、工件列表
处理定时查询数据库,根据规则生成检查任务
输出新生成的检查任务列表
异常数据库连接失败、规则配置错误、服务异常
优先级中
可追溯性UC106

3.7.2 手动触发轮询​

需求IDF702
描述管理员可手动触发系统轮询检查
前置条件管理员已登录且具有轮询管理权限
输入轮询触发请求
处理立即执行轮询检查逻辑
输出轮询执行结果、生成的任务数量
异常权限不足、轮询服务异常、并发冲突
优先级低
可追溯性UC106

4. 数据需求​

4.1 逻辑数据库设计​

  • ER 图附后
  • 主要实体: Workpiece, WorkpieceMapping, User, AccessLog, Role, IssueTicket

4.2 数据字典示例​

Workpiece 工件表workpiece​

列名类型属性说明
workpiece_idintpk工件id
workpiece_namestring(255)工件名称
workpiece_descriptionstring(255)工件描述
workpiece_specificationstring(255)工件类型
workpiece_manufacturerstring(255)工件厂商
workpiece_statusstring(255)枚举字符串(已检查checked,未检查unknow,有问题issue)工件当前状态
workpiece_last_inspectdatetime工件上一次检查时间
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

InspectTicket 检查任务表inspect_ticket​

列名类型属性说明
inspect_idintpk检查任务id
assign_toint默认-1被分配的人,-1为未分配
inspect_typestring(255)默认normal检查任务的类型
workpiece_idint工件ID
inspect_descriptionstring(255)检查任务的描述
inspect_statusstring(255)枚举字符串(系统分配system,人工分配admin)检查任务的状态
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

WorkpieceMapping 工件图像映射表workpiece_mapping​

列名类型属性说明
workpiece_idint工件id
image_idint图像id
resource_urlstring(255)图像的url
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

User 用户表user​

列名类型属性说明
user_idint用户id
usernamestring(255)用户名
passwordstring(510)密码
openidstring(255)微信的openid
emailstring(255)用户邮箱
smsstring(255)用户手机号(收短信的号码)
is_activebool是否激活
is_systembool是否是系统运维人员
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

AccessLog 动作日志表access_log​

列名类型属性说明
action_idintID
action_userint动作人
action_typestring(255)动作类型
action_resultstring(255)动作结果
action_positionstring(255)动作位置
action_datetimestring(255)动作时间
action_descriptionstring(255)动作描述
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

IssueTicket 问题工单表issue_ticket​

列名类型属性说明
issue_idint问题ID
inspectorint问题检察员(检查出问题的人)
dispatcherint调度员(应该归谁调度)
workpiece_idint工件ID(出问题的ID)
issue_statusstring(255)枚举字符串(已生成generated,已维修repaired,已确认confirmed)问题状态
issue_typestring(255)问题类型
issue_descriptionstring(255)问题描述
assign_toint默认-1分配给的维修人(-1为尚未分配)
result_actionint对应一个action id
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

Role 权限表role​

列名类型属性说明
user_idint用户id
scope_liststring(255)权限列表
scope_groupstring(255)所属组名称
created_bystring(255)数据库记录创建人
created_atdatetime数据库记录创建于
update_bystring(255)数据库记录更新人
update_atdatetime数据库记录更新于

5. 核心用例​

5.1 用例 UC101: 用户小程序登录​

步骤描述
1用户使用微信创建用户
2判断微信用户是否绑定了系统用户
3将微信用户与系统用户绑定
4颁发JWT

5.2 用例UC102:Dashboard登录​

步骤描述
1用户通过用户名密码登录
2是否涉及F2A
3颁发JWT

5.3 用例UC103:Inspector检查​

步骤描述
1查看检查任务
2前往拍照
3更新检查状态(有问题,无问题)

5.4 用例UC104:Dispatcher调度​

步骤描述
1查看所有出问题的工件ID
2给一个问题工单分配一个维修人
3维修人维修完成后确认

5.5 用例UC105:维修人维修​

步骤描述
1查看维修任务
2开始维修并完成
3拍照打卡

5.6 用例UC106:轮询检查​

步骤描述
1定时查询数据库
2手动触发轮询
3自动触发前查看上一次触发时间

6. 业务流程​

6.1 FZ101 维修人员业务流程​

  1. 任务查看:检查人员作为系统基本角色,进入小程序后,可看到调度员分配的检查任务以及自己此前未完成的任务,这些任务在调度员视角可见。

  2. 任务详情与开启:检查人员点击任务可查看详情,如应前往何处检查哪个工件,点击“开始任务”,任务正式进入检查流程。

  3. 检查结果处理:

    • 无问题情况:检查员到达舱室工件附近检查,若未发现问题,拍一张照片并报告无问题,任务结束。
    • 有问题情况:若发现问题,维修人员(此处疑似表述有误,应为检查人员)新建问题工单,上报面临的问题及状况,任务结束。
  4. 功能差异:检查人员可在Dashboard端登录账号,其主要功能与小程序端大致相同,但Dashboard端无拍照API,因此无法使用与拍照相关功能,在展示内容上需与小程序端有所区别,如Dashboard端不能出现拍照上传功能。

  5. 接口复用:Dashboard端和小程序端接口可复用,但呈现给用户的内容不一致。

6.2 FZ102 调度人员业务流程​

  1. 任务分配:调度人员即系统业务管理员,并非运维人员,无法直接操作数据库和底层API。主要工作是将检查任务分配给检查员,把维修任务分配给维修员。
  2. 问题工单处理:若检查人员报告某工件存在问题,调度人员看到该有问题工单后,将其分配给维修人员,分配完成调度员此环节工作结束。
  3. 维修确认:维修人员完成维修后上传维修完成照片,调度人员需对照片进行确认,确认无误后该工单才算完结。
  4. 检查作业分配: 调度人员可查看所有的工件信息,并且手动的未某个工件进行检查作业分配。

6.3 FZ103 维修人员业务流程​

  1. 任务查看:维修人员登录小程序后,可查看调度员分配给自己的维修任务,如维修某工件。
  2. 维修与反馈:前往指定地点完成维修后,拍摄维修完成照片上传至平台,即完成主要维修任务流程。
  3. 特殊情况:维修任务有可能被打回,但这属于额外情况。维修人员主要功能为查看并执行维修任务、上传维修完成照片。

6.4 FZ104 工件维护的检查周期管理流程​

  1. 检查方式:每个工件都设有检查周期,如每三天需检查一次是否存在问题。检查方式分为两种:
    • 系统自动检查:系统通过定时任务,轮巡检查哪些工件的检查周期超过3天。
    • 手动分配检查:调度员在发现有工件快到三天检查周期时,手动进行任务分配。
  2. 工件维护检查周期定时优化:每个工件在手动检查后,会更新检查周期,如每三天检查一次,那么下一次检查时间为当前时间加三天。

6.5 FZ201 权限管理流程​

  1. 权限赋予:调度员作为系统管理员,有权对刚注册、无任何权限或身份的账户手动赋予权限,可将其设定为调度员、管理员、维修人员或检查人员等角色。
  2. 多角色切换:若一个账户同时拥有调度员、管理员、维修人员、检查人员等多种角色,在UI界面上无需重新登录,即可进行角色切换。

6.6 FZ202 基于图像识别的工件识别管理流程​

  1. 图片资源管理:针对依赖外部API接口的图像识别,需对图片库进行管理。其中图片资源管理方面,可对存储的图片进行筛选。如存储桶内100张图片用于训练,仅20张有用,可删除无用的80张;若有用图片数量不足,可进行添加。
  2. 图片打分与管理:对每张图片进行打分,以保证识别准确性。例如,由四张图片组合识别一个商品,若其中一张误加入,需将其删除,对组合图片进行有效管理。同时系统需对这部分功能进行监控,涵盖打分、日志及记录等方面。

6.7 FZ301 OAuth2.0登录体系​

  1. 微信登录:采用微信生态登录体系,获取Openid并与后台user ID绑定。
  2. Dashboard端登录:传统userpass登录体系。适用于Dashboard端登录,可能涉及TOTP问题,系统需保留相应接口。
  3. 识别方式:userpass方式混用,支持用户名、邮箱、手机号混合。