From 54570fe5215d939cdfa6dc8df2a9c8e2949e8b9a Mon Sep 17 00:00:00 2001 From: pxqbzjk5c <1499856873@qq.com> Date: Thu, 28 Aug 2025 20:46:57 +0800 Subject: [PATCH] ADD file via upload --- SRS | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 SRS diff --git a/SRS b/SRS new file mode 100644 index 0000000..cc01683 --- /dev/null +++ b/SRS @@ -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`)。 + +