Add detailed system documentation

This commit is contained in:
不会编码@海山了
2026-01-11 15:20:10 +08:00
parent 8165561005
commit 5a183681bf

193
文档.md Normal file
View File

@@ -0,0 +1,193 @@
# 规划
1. 明确系统边界、参与者、核心业务流程与数据范围,形成研究对象与约束说明。
2. 按科研论文规范补充可行性、需求、数据流、数据字典与性能指标,给出可验证的描述。
3. 细化总体设计中的功能模块、E-R 实体联系、关系模式与规范化说明。
4. 完善详细设计与编码描述,补充关键实现细节与创新点。
5. 扩展测试设计,给出测试用例思路、问题与解决方案、结论。
6. 总结与展望与职业道德章节保持结构严谨、用语规范、内容可追溯。
---
# 第2章 系统分析
## 2.1 可行性分析
### 2.1.1 技术可行性
系统采用后端 Spring Boot + MyBatis-Plus + MySQL/Redis 的组合,提供 REST 风格服务接口;前端采用 Vue 3 + Vite + Vue Router + Pinia + Ant Design Vue具备成熟的前后端分离开发与部署能力。该技术栈对招聘系统的用户、岗位、简历、投递、面试等业务具备充足的支撑能力且社区生态完善便于问题定位与迭代维护。后端还提供分页、上传、静态资源与跨域配置能力为系统可用性提供基础保障。【F:BOSSBackEnd/pom.xml†L5-L125】【F:BOSSFrontEnd/BOSS/package.json†L1-L42】【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MyBatisPlusConfig.java†L10-L24】【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MultipartConfig.java†L16-L45】【F:BOSSBackEnd/src/main/java/com/zds/boss/config/WebConfig.java†L16-L81】【F:BOSSBackEnd/src/main/java/com/zds/boss/config/CorsConfig.java†L9-L25】
### 2.1.2 经济可行性
系统依赖开源组件部署仅需通用服务器环境JDK 17 + Node.js + MySQL开发与维护成本可控后端接口与数据库设计清晰可支撑小规模到中规模的数据量增长降低扩展成本。开源许可明确满足教学实训与中小项目的资源约束。【F:BOSSBackEnd/pom.xml†L5-L125】【F:BOSSFrontEnd/BOSS/package.json†L1-L42】
### 2.1.3 运行可行性
前端路由覆盖用户登录、注册、岗位浏览、简历管理、投递管理、Boss 公司与岗位管理、管理员投递管理等页面业务闭环完整后端控制器覆盖用户、公司、岗位、简历、投递、投递处理与面试安排全流程具备可运行演示条件。【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L34-L188】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L24-L88】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L22-L83】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L30-L226】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L24-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L20-L80】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L22-L84】
## 2.2 需求分析
### 2.2.1 功能需求
1. **用户与权限管理**
- 注册、登录、登出、获取登录用户信息。
- 管理员可查询与删除用户,普通用户可更新自身信息。
- 支持获取 Boss 列表以供展示与筛选。
【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L47-L188】
2. **公司管理**
- Boss 新增、更新、删除公司信息。
- 支持公司详情查询与分页查询,控制分页大小。
【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L32-L88】
3. **岗位管理**
- Boss 发布岗位、更新岗位信息、下架岗位。
- 求职者浏览岗位详情与分页列表。
【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L30-L81】
4. **简历管理**
- 求职者新增、编辑、删除简历。
- 管理员/Boss/本人可查看简历详情,非授权用户不可访问。
- 支持简历附件上传PDF/Word并生成访问地址。
【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L226】
5. **投递与流程管理**
- 求职者投递岗位、撤回与更新投递记录。
- Boss/管理员查看投递列表并进行处理(接受/拒绝/待定)。
- 面试安排与状态更新。
【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L28-L80】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L30-L84】
### 2.2.2 非功能需求
1. **性能与可用性**支持分页查询限制单页大小简历附件上传限制大小与类型避免资源耗尽。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L164-L173】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L77-L85】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L153-L203】
2. **安全性**接口层基于登录态与角色控制访问权限防止越权访问简历与投递信息。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L108-L127】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L83-L101】
3. **兼容性**:前端支持主流现代浏览器,后端通过 CORS 允许本地开发环境访问。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/CorsConfig.java†L12-L25】【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】
## 2.3 数据流图DFD
### 2.3.1 上下文级 DFD文字描述
外部实体求职者、Boss、管理员。
系统处理:用户管理、公司管理、岗位管理、简历管理、投递管理、投递处理、面试管理。
数据存储:用户、公司、岗位、简历、投递、投递处理、面试安排。
该层级描述系统作为整体与外部实体的数据交互关系体现输入注册、投递、更新与输出岗位列表、投递状态、面试安排。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】
### 2.3.2 一级 DFD文字描述
1. 求职者注册/登录 → 用户管理处理 → 写入用户表 → 返回登录信息。
2. Boss 维护公司/岗位 → 公司/岗位管理处理 → 写入公司表与岗位表 → 前端展示岗位列表。
3. 求职者维护简历 → 简历管理处理 → 写入简历表 → 简历可见性受角色控制。
4. 求职者投递岗位 → 投递管理处理 → 写入投递表 → Boss 处理 → 写入投递处理表 → 可生成面试安排表数据。
以上流程分别对应用户、公司、岗位、简历、投递、投递处理、面试表的数据流转关系。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L47-L188】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L32-L88】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L30-L81】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L226】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L28-L80】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L30-L84】
## 2.4 数据字典
为保证科研规范与可追溯性,字段均来自数据库建表脚本:
1. **user用户表**:用户 ID、账号、密码、联系方式、角色、公司关联、状态与时间戳信息。【F:BOSSBackEnd/sql/new_structure.sql†L31-L49】
2. **company公司表**:公司 ID、名称、行业、规模、官网、地址、简介、状态与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L58-L73】
3. **job_posting岗位表**:岗位 ID、Boss/公司关联、职位信息、薪资区间、状态与发布时间。【F:BOSSBackEnd/sql/new_structure.sql†L78-L99】
4. **resume简历表**:简历 ID、所属用户、标题、摘要、正文、附件 URL 与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L104-L117】
5. **application投递表**:投递 ID、求职者/岗位/简历关联、投递状态与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】
6. **boss_application_decision投递处理表**:处理 ID、投递关联、处理结果、阶段与备注。【F:BOSSBackEnd/sql/new_structure.sql†L142-L155】
7. **interview面试表**:面试 ID、投递/用户关联、面试时间、方式、地点与状态。【F:BOSSBackEnd/sql/new_structure.sql†L160-L175】
## 2.5 系统性能需求
1. **分页性能指标**:用户与简历查询分页上限为 20公司分页上限为 50以控制查询耗时与返回体积。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L164-L173】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L153-L156】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L77-L85】
2. **文件上传性能指标**:单文件与请求总量限制为 10MB降低大文件导致的 I/O 与存储压力。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MultipartConfig.java†L33-L45】
3. **响应稳定性**统一分页插件保证分页查询稳定与一致性降低全表扫描风险。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MyBatisPlusConfig.java†L16-L24】
4. **静态资源缓存**:静态文件缓存 1 小时降低重复请求压力提高访问响应速度。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/WebConfig.java†L64-L81】
---
# 第3章 总体设计
## 3.1 系统模块图(文字描述)
系统采用“前端展示层 + 后端服务层 + 数据存储层”的分层结构:
1. **前端展示层**负责页面路由、用户交互与鉴权跳转包含首页、登录注册、岗位列表、简历管理、投递管理、Boss 公司/岗位管理、管理员投递管理等模块。【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】
2. **后端服务层**:提供用户、公司、岗位、简历、投递、投递处理、面试等 REST 接口模块承担业务规则与权限控制。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L34-L188】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L24-L88】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L22-L83】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L30-L226】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L24-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L20-L80】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L22-L84】
3. **数据存储层**采用关系数据库存储核心实体结构化字段满足一致性与可扩展性要求。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】
## 3.2 数据库设计
### 3.2.1 E-R 实体联系分析
1. **User—Company1:N**Boss 用户可关联公司,`user.company_id` 指向公司实体。【F:BOSSBackEnd/sql/new_structure.sql†L31-L73】
2. **Company—JobPosting1:N**:公司可发布多个岗位,`job_posting.company_id` 建立关联。【F:BOSSBackEnd/sql/new_structure.sql†L78-L99】
3. **User—Resume1:N**:用户可拥有多个简历,`resume.user_id` 建立关联。【F:BOSSBackEnd/sql/new_structure.sql†L104-L117】
4. **User—Application—JobPostingN:M**:求职者与岗位通过投递记录建立多对多关系,`application.user_id``application.job_id` 联合唯一约束避免重复投递。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】
5. **Application—Decision/Interview1:1 或 1:N**:投递记录可扩展为处理与面试安排,`boss_application_decision.application_id``interview.application_id` 形成流程节点。【F:BOSSBackEnd/sql/new_structure.sql†L142-L175】
### 3.2.2 关系模式转换
- User(`id`, `user_account`, `password`, `phone`, `email`, `username`, `user_role`, `company_id`, `status`, `profile`, `created_at`, `updated_at`, `is_deleted`, `deleted_at`)
- Company(`id`, `name`, `industry`, `size_range`, `website`, `address`, `intro`, `status`, `created_at`, `updated_at`, `is_deleted`)
- JobPosting(`id`, `boss_id`, `company_id`, `title`, `location`, `job_type`, `salary_min`, `salary_max`, `description`, `requirement`, `status`, `publish_at`, `created_at`, `updated_at`, `is_deleted`)
- Resume(`id`, `user_id`, `resume_title`, `is_default`, `summary`, `content`, `attachment_url`, `created_at`, `updated_at`, `is_deleted`)
- Application(`id`, `user_id`, `resume_id`, `job_id`, `boss_id`, `status`, `applied_at`, `updated_at`, `is_deleted`)
- BossApplicationDecision(`id`, `application_id`, `boss_id`, `decision`, `stage`, `note`, `decided_at`, `updated_at`, `is_deleted`)
- Interview(`id`, `application_id`, `boss_id`, `user_id`, `interview_time`, `mode`, `location`, `status`, `note`, `created_at`, `updated_at`, `is_deleted`)
以上均由建表脚本直接转换得到。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】
### 3.2.3 规范化优化
1. **1NF**:各表字段保持原子性(如联系方式分为电话/邮箱不存在可再拆分字段。【F:BOSSBackEnd/sql/new_structure.sql†L31-L73】
2. **2NF**:所有非主键字段完全依赖主键;投递表采用单一主键 `id`非主键字段与主键完全依赖。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】
3. **3NF**岗位、公司、简历、投递、面试等拆表避免传递依赖例如岗位不冗余公司详细信息投递处理和面试安排从投递表拆分避免多值依赖。【F:BOSSBackEnd/sql/new_structure.sql†L58-L175】
---
# 第4章 详细设计及编码
## 4.1 系统主界面
系统首页入口重定向至 `/home`未登录用户访问非公开路由将被重定向至登录页登录与注册页为系统公共入口。核心功能页面包括岗位列表、简历管理、投递管理、Boss 公司与岗位维护、管理员投递管理与用户资料等从路由层形成清晰功能分区。【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】
## 4.2 简历模块的实现
1. **新增/编辑/删除逻辑**简历增删改操作基于登录态避免越权操作分页列表默认对普通用户仅返回自身简历。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L57-L158】
2. **权限控制**简历详情查看限定为管理员、Boss 或本人防止敏感信息泄露。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L108-L127】
3. **附件上传机制**:上传接口对文件类型与扩展名双重校验,生成用户维度的存储路径并返回访问 URL日志记录上传行为便于审计与问题追溯。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L167-L224】
## 4.3 投递与面试模块的实现
1. **投递记录管理**投递新增、更新、删除均基于登录用户列表查询会根据角色自动限定范围求职者仅看本人Boss 看自己岗位投递管理员查看全量。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】
2. **投递处理逻辑**Boss 对投递进行处理(接受/拒绝/待定记录处理阶段与备注保障过程可追踪。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L28-L80】
3. **面试安排**面试安排独立于投递表存储记录时间、方式、地点与状态支持后续流程扩展如多轮面试。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L30-L84】
**系统创新点每点≤100字**
1. 简历附件上传引入“类型 + 扩展名”双校验并结合统一静态资源访问路径兼顾安全与可用性。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L167-L224】【F:BOSSBackEnd/src/main/java/com/zds/boss/config/WebConfig.java†L64-L81】
2. 投递处理与面试拆分为独立实体形成可追踪的阶段化流程降低后续迭代的耦合度。【F:BOSSBackEnd/sql/new_structure.sql†L142-L175】
---
# 第5章 系统测试
## 5.1 模块测试
1. **用户模块**:注册/登录/登出/获取登录用户/管理员查询与删除用户的完整流程验证。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L47-L188】
2. **公司模块**:新增/更新/删除/查询与分页限制测试验证分页上限逻辑生效。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L32-L88】
3. **岗位模块**岗位发布、修改、删除、详情与分页查询测试保证岗位展示正确性。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L30-L81】
4. **简历模块**:新增/更新/删除、列表与详情权限、上传限制与类型校验测试。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L224】
5. **投递与面试模块**:投递新增/删除/更新、角色范围过滤、投递处理与面试安排联动测试。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/BossApplicationDecisionController.java†L28-L80】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/InterviewController.java†L30-L84】
## 5.2 系统测试遇到的问题及解决方案
1. **文件上传报错**“no multipart boundary was found”
解决:配置延迟解析的 multipartResolver并设置上传限制避免请求预解析失败。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MultipartConfig.java†L16-L45】
2. **本地联调跨域问题**
解决:后端 CORS 配置放行本地开发端口保证前后端联调稳定性。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/CorsConfig.java†L12-L25】
## 5.3 系统测试结论
系统功能覆盖核心招聘业务流程分页、上传与权限校验稳定可用在前后端联调条件下可完成完整演示满足实训交付要求。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L224】
---
# 第6章 总结及展望
## 6.1 实训自评
系统实现了“注册登录—公司与岗位管理—简历管理—投递与面试”的完整业务链路前后端模块划分清晰具备可演示、可扩展的工程基础。【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L47-L188】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L32-L88】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L30-L81】【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L224】
## 6.2 系统不足
1. 性能监控与日志分析能力仍较基础,缺乏指标化与告警机制。
2. 投递流程可视化与消息通知尚未覆盖(例如状态变化提示)。
上述不足后续可通过新增监控组件与消息队列机制进行优化。【F:BOSSBackEnd/sql/new_structure.sql†L124-L175】
## 6.3 下一步工作展望
1. 引入消息通知与流程状态可视化,提高招聘协同效率。
2. 增加统计分析模块,为企业提供投递转化与岗位热度分析。
3. 完善权限细粒度控制与审计日志提升系统安全合规性。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】
---
# 第7章 职业道德和规范
## 7.1 IT项目开发职业道德及其规范
严格遵守开源协议与软件使用许可确保依赖版本与许可证的合法使用避免抄袭与未授权复用代码遵循“最小权限、最小暴露”的安全设计原则。【F:BOSSBackEnd/pom.xml†L5-L125】【F:BOSSFrontEnd/BOSS/package.json†L1-L42】
## 7.2 领域交叉职业道德及规范
招聘场景涉及求职者个人信息与简历内容应遵循隐私保护与数据最小化原则避免超范围采集与无授权传播符合数据治理与职业伦理要求。【F:BOSSBackEnd/sql/new_structure.sql†L31-L117】
## 7.3 开源代码使用及声明
本系统使用 Spring Boot、MyBatis-Plus、Redis、Vue、Ant Design Vue、Axios 等开源组件应在提交成果中标注主要开源依赖与版本信息尊重许可证与署名要求。【F:BOSSBackEnd/pom.xml†L5-L125】【F:BOSSFrontEnd/BOSS/package.json†L1-L42】
## 7.4 有关数据和代码保密的规范性要求
涉及用户账号、投递记录、简历内容等数据应设置访问控制与审计策略代码仓库中不应提交敏感密钥与真实用户数据确保实验数据与业务数据隔离。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】