ADD file via upload

冉杨品飞
pxqbzjk5c 1 month ago
parent b1c9aad133
commit 54570fe521

184
SRS

@ -0,0 +1,184 @@
软件需求规格说明书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`)。
Loading…
Cancel
Save