You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ECMS/SRS

185 lines
7.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

软件需求规格说明书SRS
1. 引言
1.1 目的
本SRS用于规范“企业人力资源与薪酬管理系统ECMS”当前已实现的软件需求作为设计、测试与验收的依据。本文档严格依据现有代码实现与前端路由/接口编写,不包含未实现的功能。
1.2 范围
系统提供部门信息管理、员工信息管理、员工绩效评价管理、招聘名额管理、薪资标准管理、登录与验证码功能,并提供对应的前后端实现。
1.3 读者对象
开发人员、测试人员、项目管理者、指导老师与评审人员。
1.4 参考资料
- 后端:`backend/backend/prj-backendSpring 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`)。