|
|
|
@ -0,0 +1,184 @@
|
|
|
|
|
软件需求规格说明书(SRS)
|
|
|
|
|
|
|
|
|
|
1. 引言
|
|
|
|
|
1.1 目的
|
|
|
|
|
本SRS用于规范“企业人力资源与薪酬管理系统(ECMS)”当前已实现的软件需求,作为设计、测试与验收的依据。本文档严格依据现有代码实现与前端路由/接口编写,不包含未实现的功能。
|
|
|
|
|
|
|
|
|
|
1.2 范围
|
|
|
|
|
系统提供部门信息管理、员工信息管理、员工绩效评价管理、招聘名额管理、薪资标准管理、登录与验证码功能,并提供对应的前后端实现。
|
|
|
|
|
|
|
|
|
|
1.3 读者对象
|
|
|
|
|
开发人员、测试人员、项目管理者、指导老师与评审人员。
|
|
|
|
|
|
|
|
|
|
1.4 参考资料
|
|
|
|
|
- 后端:`backend/backend/prj-backend(Spring Boot版)` Spring Boot 应用
|
|
|
|
|
- 前端:`frontend` Vue 应用
|
|
|
|
|
- 主要代码位置:后端 `com.prj.controller.*`、`com.prj.domain.*`;前端 `src/api/*.js`、`src/router/index.js`
|
|
|
|
|
|
|
|
|
|
1.5 术语与缩略语
|
|
|
|
|
- KPI:关键绩效指标
|
|
|
|
|
- SRS:软件需求规格说明书
|
|
|
|
|
|
|
|
|
|
2. 系统概述
|
|
|
|
|
2.1 系统目标
|
|
|
|
|
为企业提供基础的人力资源与薪酬相关信息的增删改查与查询分页,支持登录鉴权及验证码。
|
|
|
|
|
|
|
|
|
|
2.2 用户角色
|
|
|
|
|
- 普通登录用户:可以访问各信息管理页面并执行相应的列表、查看、增删改操作(具体权限由后端安全配置决定,当前代码未在控制器级别区分角色)。
|
|
|
|
|
|
|
|
|
|
2.3 运行环境
|
|
|
|
|
- 后端:Java 8+/Spring Boot,接口风格为 REST;
|
|
|
|
|
- 前端:Vue,使用基于 `@/utils/request` 的 Axios 封装;
|
|
|
|
|
- 数据库:依据实体与 MyBatis/JPA 映射(如 `HireNum` 使用 JPA 注解;其余实体通过 Mapper XML 进行 CRUD)。
|
|
|
|
|
|
|
|
|
|
3. 外部接口需求(API)
|
|
|
|
|
说明:以下接口均返回统一包装对象 `AjaxResult` 或分页包装 `TableDataInfo`(后端 `BaseController` 提供 `startPage()` 和 `getDataByPage()`)。
|
|
|
|
|
|
|
|
|
|
3.1 登录与验证码
|
|
|
|
|
- GET `/captchaImage`
|
|
|
|
|
- 功能:获取验证码图片与UUID;验证码存入 Redis,键以 `Constants.CAPTCHA_CODE_KEY + uuid` 保存。
|
|
|
|
|
- 返回:`{ uuid: string, img: string(Base64) }` 以及成功标识。
|
|
|
|
|
- POST `/login`
|
|
|
|
|
- 入参:`{ username, password, code, uuid }`
|
|
|
|
|
- 功能:验证验证码并登录,成功后返回 `token`,键名为 `Constants.TOKEN`。
|
|
|
|
|
|
|
|
|
|
3.2 部门信息管理(后端 `DeptController`,前端 `src/api/dept_info.js`)
|
|
|
|
|
- GET `/dept_info/list`:分页查询;查询参数映射到 `Dept` 字段。
|
|
|
|
|
- GET `/dept_info/{id}`:按ID获取详情。
|
|
|
|
|
- POST `/dept_info`:新增部门。
|
|
|
|
|
- PUT `/dept_info`:修改部门。
|
|
|
|
|
- DELETE `/dept_info/{ids}`:删除,支持批量ID。
|
|
|
|
|
|
|
|
|
|
3.3 员工信息管理(后端 `EmployeeController`,前端 `src/api/employee.js`)
|
|
|
|
|
- GET `/employee/list`:分页查询。
|
|
|
|
|
- GET `/employee/{id}`:按ID获取详情。
|
|
|
|
|
- POST `/employee`:新增。
|
|
|
|
|
- PUT `/employee`:修改(方法含事务注解)。
|
|
|
|
|
- DELETE `/employee/{ids}`:删除(批量)。
|
|
|
|
|
|
|
|
|
|
3.4 员工评价管理(后端 `EmployeeKpiController`,前端 `src/api/employee_kpi.js`)
|
|
|
|
|
- GET `/employee_kpi/list`
|
|
|
|
|
- GET `/employee_kpi/{id}`
|
|
|
|
|
- POST `/employee_kpi`
|
|
|
|
|
- PUT `/employee_kpi`
|
|
|
|
|
- DELETE `/employee_kpi/{ids}`
|
|
|
|
|
|
|
|
|
|
3.5 招人名额管理(后端 `HireNumController`,前端 `src/api/hirenum.js`)
|
|
|
|
|
- GET `/hirenum/list`
|
|
|
|
|
- GET `/hirenum/{id}`
|
|
|
|
|
- POST `/hirenum`
|
|
|
|
|
- PUT `/hirenum`
|
|
|
|
|
- DELETE `/hirenum/{ids}`
|
|
|
|
|
|
|
|
|
|
3.6 薪资标准管理(后端 `SalaryLevelController`,前端 `src/api/salary_level.js`)
|
|
|
|
|
- GET `/salary_level/list`
|
|
|
|
|
- GET `/salary_level/{id}`
|
|
|
|
|
- POST `/salary_level`
|
|
|
|
|
- PUT `/salary_level`
|
|
|
|
|
- DELETE `/salary_level/{ids}`
|
|
|
|
|
|
|
|
|
|
4. 功能性需求
|
|
|
|
|
4.1 登录与验证码
|
|
|
|
|
- 用户访问登录页(前端路由 `/login`),先调用 `/captchaImage` 获取 `uuid` 与验证码图片;填写用户名、密码与验证码提交到 `/login`;成功后获得 `token` 并维持会话。
|
|
|
|
|
|
|
|
|
|
4.2 菜单与路由导航(前端 `src/router/index.js`)
|
|
|
|
|
- 首页 `/index`
|
|
|
|
|
- 部门信息管理 `/dept_info`
|
|
|
|
|
- 薪资标准管理 `/salary_level`
|
|
|
|
|
- 招人名额管理 `/hirenum`
|
|
|
|
|
- 员工信息管理 `/employee`
|
|
|
|
|
- 员工评价管理 `/employee_kpi`
|
|
|
|
|
|
|
|
|
|
4.3 业务模块用例(均支持列表、查看、创建、更新、删除)
|
|
|
|
|
- 部门信息:维护部门编号、名称、经理、汇报对象。
|
|
|
|
|
- 员工信息:维护员工编号、部门、姓名、职位、薪资。
|
|
|
|
|
- 员工评价:维护员工编号、考评结果、奖金、考评人。
|
|
|
|
|
- 招人名额:维护部门、名额数量、截止时间。
|
|
|
|
|
- 薪资标准:维护职位类型、标准薪资、上下浮动范围。
|
|
|
|
|
|
|
|
|
|
5. 数据需求(领域模型)
|
|
|
|
|
5.1 `Dept`
|
|
|
|
|
- `id: Long` 部门编号
|
|
|
|
|
- `name: String` 部门名
|
|
|
|
|
- `manager: String` 部门经理
|
|
|
|
|
- `reportto: String` 汇报对象
|
|
|
|
|
|
|
|
|
|
5.2 `Employee`
|
|
|
|
|
- `id: Long` 编号
|
|
|
|
|
- `dept: String` 部门
|
|
|
|
|
- `name: String` 姓名
|
|
|
|
|
- `position: String` 职位
|
|
|
|
|
- `salary: BigDecimal` 薪资
|
|
|
|
|
|
|
|
|
|
5.3 `EmployeeKpi`
|
|
|
|
|
- `id: Long` 员工编号
|
|
|
|
|
- `kpi: String` 考评结果
|
|
|
|
|
- `bonus: String` 奖金
|
|
|
|
|
- `manager: String` 考评人
|
|
|
|
|
|
|
|
|
|
5.4 `HireNum`(带JPA表映射,表名 `hire_num`)
|
|
|
|
|
- `id: Long` 主键,自增
|
|
|
|
|
- `dept: String` 部门
|
|
|
|
|
- `num: BigDecimal` 招人名额
|
|
|
|
|
- `endtime: String` 截止时间
|
|
|
|
|
|
|
|
|
|
5.5 `SalaryLevel`
|
|
|
|
|
- `id: Long`
|
|
|
|
|
- `jobType: String` 职位类型
|
|
|
|
|
- `salary: BigDecimal` 薪资水平
|
|
|
|
|
- `salaryrange: BigDecimal` 上下幅度
|
|
|
|
|
|
|
|
|
|
6. 非功能性需求
|
|
|
|
|
6.1 性能
|
|
|
|
|
- 列表查询统一分页(`startPage()`),保障大数据量场景的响应;
|
|
|
|
|
- 常规CRUD操作在单体应用内应在300ms内完成(实验室/教学环境)。
|
|
|
|
|
|
|
|
|
|
6.2 可靠性与事务
|
|
|
|
|
- 员工信息修改接口含事务边界,保障更新一致性;
|
|
|
|
|
- 其他模块使用服务层与Mapper/JPA进行持久化,错误通过 `AjaxResult.error` 反馈。
|
|
|
|
|
|
|
|
|
|
6.3 安全
|
|
|
|
|
- 登录采用验证码 + 账号密码,颁发 `token`;前端应在请求头中附加凭证(封装于 `@/utils/request`)。
|
|
|
|
|
|
|
|
|
|
6.4 可用性
|
|
|
|
|
- 前端导航清晰,模块划分为部门/员工/评价/招聘名额/薪资标准五大页面 + 登录/首页。
|
|
|
|
|
|
|
|
|
|
6.5 兼容性
|
|
|
|
|
- 后端 REST JSON;前端 Axios 调用;与现代浏览器兼容。
|
|
|
|
|
|
|
|
|
|
7. 约束与假设
|
|
|
|
|
- 代码中未体现复杂权限/角色控制,默认当前用户可访问相关模块;
|
|
|
|
|
- `HireNum` 使用JPA,其余模块使用MyBatis XML(见 `resources/mapper/*.xml`)。
|
|
|
|
|
|
|
|
|
|
8. 验收测试计划(概要)
|
|
|
|
|
8.1 登录与验证码
|
|
|
|
|
- 正常流程:获取验证码 → 正确填写四要素 → 返回 `token`。
|
|
|
|
|
- 异常流程:验证码错误/过期、账号密码错误,返回错误信息。
|
|
|
|
|
|
|
|
|
|
8.2 各模块CRUD
|
|
|
|
|
- 列表分页:参数查询与总数校验;
|
|
|
|
|
- 新增/修改:字段必填性与类型校验;
|
|
|
|
|
- 删除:单个与批量删除后列表与详情验证;
|
|
|
|
|
- 详情:按ID精确返回。
|
|
|
|
|
|
|
|
|
|
8.3 前端路由与页面
|
|
|
|
|
- 菜单项可进入对应页面并触发相应 API;
|
|
|
|
|
- 登录后可访问受限页面(如有拦截)。
|
|
|
|
|
|
|
|
|
|
9. 追踪矩阵(实现对齐)
|
|
|
|
|
- 路由 ↔ 视图 ↔ API ↔ 控制器 ↔ 领域模型
|
|
|
|
|
- `/dept_info` ↔ `views/dept_info` ↔ `src/api/dept_info.js` ↔ `DeptController` ↔ `Dept`
|
|
|
|
|
- `/employee` ↔ `views/employee` ↔ `src/api/employee.js` ↔ `EmployeeController` ↔ `Employee`
|
|
|
|
|
- `/employee_kpi` ↔ `views/employee_kpi` ↔ `src/api/employee_kpi.js` ↔ `EmployeeKpiController` ↔ `EmployeeKpi`
|
|
|
|
|
- `/hirenum` ↔ `views/hirenum` ↔ `src/api/hirenum.js` ↔ `HireNumController` ↔ `HireNum`
|
|
|
|
|
- `/salary_level` ↔ `views/salary_level` ↔ `src/api/salary_level.js` ↔ `SalaryLevelController` ↔ `SalaryLevel`
|
|
|
|
|
- `/login` ↔ `views/login` ↔ `POST /login` ↔ `LoginController`
|
|
|
|
|
- `/captchaImage` ↔ `GET /captchaImage` ↔ `CaptchaController`
|
|
|
|
|
|
|
|
|
|
10. 变更管理
|
|
|
|
|
- 本SRS将随代码与接口变更而更新;当新增/调整 API、路由、数据模型时,需同步修订第3~5章与追踪矩阵。
|
|
|
|
|
|
|
|
|
|
附录 A:错误码
|
|
|
|
|
- 采用统一 `AjaxResult` 包装;具体错误码与消息由后端 `errorCode` 与全局异常处理决定(前端 `src/utils/errorCode.js`)。
|
|
|
|
|
|
|
|
|
|
|