docs: add recruitment website design spec

This commit is contained in:
TianyangZhang 2026-03-24 16:32:40 +08:00
commit 06878975b7
1 changed files with 217 additions and 0 deletions

View File

@ -0,0 +1,217 @@
# 集团招聘网站设计文档
**日期:** 2026-03-24
**状态:** 已确认
---
## 1. 项目概述
为中型集团5-20 家子公司)构建一个内部招聘网站,类似智联招聘但更简洁。支持多公司多角色管理,求职者可注册登录、搜索职位、在线填写或上传简历进行投递。
---
## 2. 技术栈
| 层级 | 技术选型 |
|------|----------|
| 前端 | Vue 3 + Vue Router + Pinia + Element Plus |
| 后端 | Django 4.2 + Django REST Framework |
| 认证 | djangorestframework-simplejwtJWT |
| 数据库 | PostgreSQL |
| 缓存 | Redis |
| 文件存储 | 本地存储 / 对象存储OSS |
| 部署 | Nginx + Gunicorn |
---
## 3. 架构方案
**方案Django 后端 + 单个 Vue3 SPA前后端分离**
前端单页应用通过 Vue Router 划分三个区域,使用路由守卫控制访问权限。后端提供 RESTful APINginx 反向代理静态资源和 API 请求。
```
用户浏览器
Nginx
├── / → Vue3 静态文件
└── /api/ → Django (Gunicorn)
├── 认证模块
├── 职位模块
├── 投递模块
└── 组织架构模块
PostgreSQL + Redis
```
---
## 4. 用户角色
| 角色 | 标识 | 权限说明 |
|------|------|----------|
| 超级管理员 | superadmin | 管理组织架构、所有用户、查看全局职位 |
| 公司管理员 | admin | 管理本公司职位、处理本公司投递记录 |
| 求职者 | seeker | 注册登录、搜索职位、管理简历、投递职位 |
---
## 5. 数据模型
### Organization 组织架构
| 字段 | 类型 | 说明 |
|------|------|------|
| id | PK | 主键 |
| name | CharField | 公司名称 |
| parent | FK(self, null) | 父级公司(集团为 null |
| logo | ImageField | 公司 Logo |
| description | TextField | 公司简介 |
| email | EmailField | 公司联系邮箱 |
| is_active | BooleanField | 是否启用 |
### User 用户
| 字段 | 类型 | 说明 |
|------|------|------|
| id | PK | 主键 |
| username | CharField | 登录账号 |
| email | EmailField | 用户邮箱 |
| phone | CharField | 手机号 |
| role | CharField | superadmin / admin / seeker |
| organization | FK(Organization, null) | 所属公司admin 角色使用) |
| is_active | BooleanField | 账号状态 |
### Job 职位
| 字段 | 类型 | 说明 |
|------|------|------|
| id | PK | 主键 |
| organization | FK(Organization) | 所属公司 |
| title | CharField | 职位名称 |
| category | CharField | 职位类别 |
| location | CharField | 工作地点 |
| salary | CharField | 薪资范围 |
| description | TextField | 职位描述(富文本) |
| status | CharField | draft / published / closed |
| created_at | DateTimeField | 创建时间 |
### Resume 简历
| 字段 | 类型 | 说明 |
|------|------|------|
| id | PK | 主键 |
| user | FK(User) | 所属求职者 |
| name | CharField | 姓名 |
| gender | CharField | 性别 |
| birthday | DateField | 出生日期 |
| education | JSONField | 教育经历列表PostgreSQL JSONB |
| experience | JSONField | 工作经历列表PostgreSQL JSONB |
| attachment | FileField | 简历附件PDF/Word |
### Application 投递记录
| 字段 | 类型 | 说明 |
|------|------|------|
| id | PK | 主键 |
| job | FK(Job) | 投递的职位 |
| applicant | FK(User) | 求职者 |
| resume | FK(Resume) | 投递时关联的简历(快照) |
| status | CharField | pending / viewed / interviewing / hired / rejected |
| note | TextField | HR 备注 |
| applied_at | DateTimeField | 投递时间 |
---
## 6. 页面结构与路由
### 公开门户(无需登录)
| 路由 | 页面 | 说明 |
|------|------|------|
| `/` | 首页 | 职位推荐、公司展示、搜索入口 |
| `/jobs` | 职位列表 | 搜索+筛选(公司/地点/薪资/类别) |
| `/jobs/:id` | 职位详情 | 职位描述、要求、投递按钮 |
| `/companies` | 公司列表 | 所有子公司展示 |
| `/companies/:id` | 公司详情 | 公司介绍 + 在招职位 |
| `/login` | 求职者登录 | - |
| `/register` | 求职者注册 | - |
### 求职者中心seeker 登录后可访问)
| 路由 | 页面 | 说明 |
|------|------|------|
| `/seeker/resume` | 我的简历 | 填写/编辑在线简历 + 上传附件 |
| `/seeker/applications` | 我的投递 | 投递记录列表 + 状态追踪 |
| `/seeker/profile` | 账号设置 | 修改密码/邮箱/手机号 |
### 管理后台admin/superadmin 登录后可访问)
| 路由 | 页面 | 权限 |
|------|------|------|
| `/admin/jobs` | 职位管理 | admin本公司/ superadmin全局只读 |
| `/admin/applications` | 投递管理 | admin本公司 |
| `/admin/organizations` | 组织架构管理 | superadmin 专属 |
| `/admin/users` | 用户管理 | superadmin 专属 |
### 路由守卫规则
- 未登录访问 `/seeker/*` → 跳转 `/login`,登录后返回原页
- 未登录访问 `/admin/*` → 跳转管理员登录页
- admin 角色访问 superadmin 专属页 → 403
- seeker 角色访问 `/admin/*` → 403
---
## 7. 关键业务流程
### 流程 1求职者投递
1. 求职者浏览职位详情,点击"投递"
2. 检查是否已登录,未登录跳转注册/登录页
3. 检查简历是否填写完整,未完善提示引导至简历页
4. 弹出投递确认框,确认后创建 Application 记录status: pending
5. 投递成功提示,可在"我的投递"查看进度
### 流程 2HR 处理投递(状态流转)
```
待查看(pending) → 已查看(viewed) → 面试中(interviewing) → 已录用(hired)
→ 已拒绝(rejected)
```
- 每次状态变更自动发送邮件通知求职者
- HR 可在任意阶段填写备注
### 流程 3公司管理员发布职位
1. 填写职位信息(标题、描述、薪资、地点、类别)
2. 保存草稿status: draft或直接发布status: published
3. 需要停止招聘时手动关闭status: closed
4. 权限隔离:管理员只能操作本公司职位
---
## 8. Django App 划分
```
offer_backend/
├── apps/
│ ├── accounts/ # 用户认证、角色管理
│ ├── organizations/ # 组织架构(集团/子公司)
│ ├── jobs/ # 职位管理
│ ├── resumes/ # 简历管理
│ └── applications/ # 投递记录
```
---
## 9. 项目目录结构
```
offer/
├── offer_backend/ # Django 后端
│ ├── apps/
│ ├── config/ # 设置、URL、wsgi
│ ├── manage.py
│ └── requirements.txt
└── offer_frontend/ # Vue3 前端
├── src/
│ ├── views/
│ │ ├── portal/ # 公开门户页面
│ │ ├── seeker/ # 求职者中心页面
│ │ └── admin/ # 管理后台页面
│ ├── stores/ # Pinia 状态管理
│ ├── router/ # Vue Router
│ └── api/ # API 请求封装
└── package.json
```