21 KiB
规划
- 明确系统边界、参与者、核心业务流程与数据范围,形成研究对象与约束说明。
- 按科研论文规范补充可行性、需求、数据流、数据字典与性能指标,给出可验证的描述。
- 细化总体设计中的功能模块、E-R 实体联系、关系模式与规范化说明。
- 完善详细设计与编码描述,补充关键实现细节与创新点。
- 扩展测试设计,给出测试用例思路、问题与解决方案、结论。
- 总结与展望与职业道德章节保持结构严谨、用语规范、内容可追溯。
第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 功能需求
-
用户与权限管理
- 注册、登录、登出、获取登录用户信息。
- 管理员可查询与删除用户,普通用户可更新自身信息。
- 支持获取 Boss 列表以供展示与筛选。 【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java†L47-L188】
-
公司管理
- Boss 新增、更新、删除公司信息。
- 支持公司详情查询与分页查询,控制分页大小。 【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/CompanyController.java†L32-L88】
-
岗位管理
- Boss 发布岗位、更新岗位信息、下架岗位。
- 求职者浏览岗位详情与分页列表。 【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/JobPostingController.java†L30-L81】
-
简历管理
- 求职者新增、编辑、删除简历。
- 管理员/Boss/本人可查看简历详情,非授权用户不可访问。
- 支持简历附件上传(PDF/Word)并生成访问地址。 【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L51-L226】
-
投递与流程管理
- 求职者投递岗位、撤回与更新投递记录。
- 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 非功能需求
- 性能与可用性:支持分页查询,限制单页大小;简历附件上传限制大小与类型,避免资源耗尽。【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】
- 安全性:接口层基于登录态与角色控制访问权限,防止越权访问简历与投递信息。【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】
- 兼容性:前端支持主流现代浏览器,后端通过 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(文字描述)
- 求职者注册/登录 → 用户管理处理 → 写入用户表 → 返回登录信息。
- Boss 维护公司/岗位 → 公司/岗位管理处理 → 写入公司表与岗位表 → 前端展示岗位列表。
- 求职者维护简历 → 简历管理处理 → 写入简历表 → 简历可见性受角色控制。
- 求职者投递岗位 → 投递管理处理 → 写入投递表 → 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 数据字典
为保证科研规范与可追溯性,字段均来自数据库建表脚本:
- user(用户表):用户 ID、账号、密码、联系方式、角色、公司关联、状态与时间戳信息。【F:BOSSBackEnd/sql/new_structure.sql†L31-L49】
- company(公司表):公司 ID、名称、行业、规模、官网、地址、简介、状态与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L58-L73】
- job_posting(岗位表):岗位 ID、Boss/公司关联、职位信息、薪资区间、状态与发布时间。【F:BOSSBackEnd/sql/new_structure.sql†L78-L99】
- resume(简历表):简历 ID、所属用户、标题、摘要、正文、附件 URL 与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L104-L117】
- application(投递表):投递 ID、求职者/岗位/简历关联、投递状态与时间戳。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】
- boss_application_decision(投递处理表):处理 ID、投递关联、处理结果、阶段与备注。【F:BOSSBackEnd/sql/new_structure.sql†L142-L155】
- interview(面试表):面试 ID、投递/用户关联、面试时间、方式、地点与状态。【F:BOSSBackEnd/sql/new_structure.sql†L160-L175】
2.5 系统性能需求
- 分页性能指标:用户与简历查询分页上限为 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】
- 文件上传性能指标:单文件与请求总量限制为 10MB,降低大文件导致的 I/O 与存储压力。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MultipartConfig.java†L33-L45】
- 响应稳定性:统一分页插件保证分页查询稳定与一致性,降低全表扫描风险。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MyBatisPlusConfig.java†L16-L24】
- 静态资源缓存:静态文件缓存 1 小时,降低重复请求压力,提高访问响应速度。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/WebConfig.java†L64-L81】
第3章 总体设计
3.1 系统模块图(文字描述)
系统采用“前端展示层 + 后端服务层 + 数据存储层”的分层结构:
- 前端展示层:负责页面路由、用户交互与鉴权跳转;包含首页、登录注册、岗位列表、简历管理、投递管理、Boss 公司/岗位管理、管理员投递管理等模块。【F:BOSSFrontEnd/BOSS/src/router/index.ts†L7-L109】
- 后端服务层:提供用户、公司、岗位、简历、投递、投递处理、面试等 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】
- 数据存储层:采用关系数据库存储核心实体,结构化字段满足一致性与可扩展性要求。【F:BOSSBackEnd/sql/new_structure.sql†L31-L175】
3.2 数据库设计
3.2.1 E-R 实体联系分析
- User—Company(1:N):Boss 用户可关联公司,
user.company_id指向公司实体。【F:BOSSBackEnd/sql/new_structure.sql†L31-L73】 - Company—JobPosting(1:N):公司可发布多个岗位,
job_posting.company_id建立关联。【F:BOSSBackEnd/sql/new_structure.sql†L78-L99】 - User—Resume(1:N):用户可拥有多个简历,
resume.user_id建立关联。【F:BOSSBackEnd/sql/new_structure.sql†L104-L117】 - User—Application—JobPosting(N:M):求职者与岗位通过投递记录建立多对多关系,
application.user_id与application.job_id联合唯一约束避免重复投递。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】 - Application—Decision/Interview(1: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 规范化优化
- 1NF:各表字段保持原子性(如联系方式分为电话/邮箱),不存在可再拆分字段。【F:BOSSBackEnd/sql/new_structure.sql†L31-L73】
- 2NF:所有非主键字段完全依赖主键;投递表采用单一主键
id,非主键字段与主键完全依赖。【F:BOSSBackEnd/sql/new_structure.sql†L124-L137】 - 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 简历模块的实现
- 新增/编辑/删除逻辑:简历增删改操作基于登录态,避免越权操作;分页列表默认对普通用户仅返回自身简历。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L57-L158】
- 权限控制:简历详情查看限定为管理员、Boss 或本人,防止敏感信息泄露。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L108-L127】
- 附件上传机制:上传接口对文件类型与扩展名双重校验,生成用户维度的存储路径并返回访问 URL,日志记录上传行为,便于审计与问题追溯。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ResumeController.java†L167-L224】
4.3 投递与面试模块的实现
- 投递记录管理:投递新增、更新、删除均基于登录用户;列表查询会根据角色自动限定范围(求职者仅看本人,Boss 看自己岗位投递,管理员查看全量)。【F:BOSSBackEnd/src/main/java/com/zds/boss/controller/ApplicationController.java†L35-L102】
- 投递处理逻辑:Boss 对投递进行处理(接受/拒绝/待定),记录处理阶段与备注,保障过程可追踪。【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】
系统创新点(每点≤100字)
- 简历附件上传引入“类型 + 扩展名”双校验,并结合统一静态资源访问路径,兼顾安全与可用性。【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】
- 投递处理与面试拆分为独立实体,形成可追踪的阶段化流程,降低后续迭代的耦合度。【F:BOSSBackEnd/sql/new_structure.sql†L142-L175】
第5章 系统测试
5.1 模块测试
- 用户模块:注册/登录/登出/获取登录用户/管理员查询与删除用户的完整流程验证。【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】
- 投递与面试模块:投递新增/删除/更新、角色范围过滤、投递处理与面试安排联动测试。【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 系统测试遇到的问题及解决方案
- 文件上传报错:“no multipart boundary was found”
解决:配置延迟解析的 multipartResolver,并设置上传限制,避免请求预解析失败。【F:BOSSBackEnd/src/main/java/com/zds/boss/config/MultipartConfig.java†L16-L45】 - 本地联调跨域问题
解决:后端 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 系统不足
- 性能监控与日志分析能力仍较基础,缺乏指标化与告警机制。
- 投递流程可视化与消息通知尚未覆盖(例如状态变化提示)。
上述不足后续可通过新增监控组件与消息队列机制进行优化。【F:BOSSBackEnd/sql/new_structure.sql†L124-L175】
6.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】