184 lines
7.0 KiB
Markdown
184 lines
7.0 KiB
Markdown
# JobRadar · 职途雷达
|
||
|
||
JobRadar 是一套面向个人使用的智能岗位发现与决策系统。项目计划从指定招聘网站采集岗位信息,依据可配置规则完成筛选,并结合联网检索与大模型分析补充企业性质、岗位匹配度、判断依据和置信度,最终形成可追溯的个人岗位库。
|
||
|
||
> 当前项目处于基础骨架阶段,已完成 Django 工程初始化;岗位采集、企业研判、评分、异步任务和业务页面均在后续迭代范围内。
|
||
|
||
## 项目目标
|
||
|
||
- 通过独立站点适配器采集授权范围内的岗位信息。
|
||
- 统一不同来源的岗位字段,并识别重复岗位和内容变化。
|
||
- 使用硬性规则优先排除明显不符合要求的岗位。
|
||
- 联网补充企业主体、企业性质和行业等信息,保留来源与查询时间。
|
||
- 按可配置权重计算岗位匹配分,输出推荐理由和风险提示。
|
||
- 提供适合个人使用的岗位管理、收藏、忽略和投递跟踪页面。
|
||
- 保留原始数据、规则版本和分析证据,使每项结论可以复核。
|
||
|
||
## 技术栈
|
||
|
||
| 分类 | 选型 | 当前状态 |
|
||
| --- | --- | --- |
|
||
| 开发语言 | Python 3.13 | 已配置 |
|
||
| Web 框架 | Django 6.0.8 | 已配置 |
|
||
| 当前数据库 | SQLite | 已配置,仅用于开发起步 |
|
||
| 目标数据库 | PostgreSQL | 规划中 |
|
||
| 页面采集 | Playwright | 环境已安装,尚未接入 |
|
||
| 普通请求 | HTTPX | 规划中 |
|
||
| 异步任务 | Celery + Redis | 规划中 |
|
||
| 定时调度 | Celery Beat | 规划中 |
|
||
| AI 分析 | 兼容 OpenAI 接口的模型服务 | 规划中 |
|
||
| 用户系统 | Django 内置认证 + 简化用户资料 | 规划中 |
|
||
| WebUI | Django Admin + 自定义 Django 页面 | 规划中 |
|
||
| 部署 | Docker Compose + Nginx/Caddy + HTTPS | 规划中 |
|
||
|
||
第一阶段优先采用 Django Admin 管理站点、规则、企业和任务数据,再为岗位浏览与决策流程开发自定义页面。出现明确的前后端分离需求后,再评估是否增加 Django REST Framework 和 Vue。
|
||
|
||
## 当前目录
|
||
|
||
```text
|
||
JobRadar/
|
||
├── JobRadar/ Django 项目配置
|
||
│ ├── asgi.py
|
||
│ ├── settings.py
|
||
│ ├── urls.py
|
||
│ └── wsgi.py
|
||
├── docs/ 架构与实施文档
|
||
├── templates/ 全局 Django 模板
|
||
├── environment.yml Conda 环境定义
|
||
├── manage.py Django 管理入口
|
||
└── README.md
|
||
```
|
||
|
||
业务模块将随迭代逐步增加,暂定拆分为:
|
||
|
||
```text
|
||
accounts/ 用户认证、个人配置与数据归属
|
||
jobs/ 岗位、岗位来源及状态跟踪
|
||
companies/ 企业主体及企业证据
|
||
crawlers/ 招聘网站采集适配器
|
||
screening/ 硬性筛选规则
|
||
ranking/ 权重评分
|
||
ai_analysis/ 语义分析及结构化输出
|
||
task_center/ 采集、分析与调度任务
|
||
audit/ 日志、证据与版本追踪
|
||
```
|
||
|
||
详细边界参见 [架构设计](docs/architecture.md),开发顺序参见 [实施路线图](docs/roadmap.md)。
|
||
|
||
## 本地运行
|
||
|
||
### 1. 创建或更新 Conda 环境
|
||
|
||
如果本机还没有 `JobRadar` 环境:
|
||
|
||
```powershell
|
||
conda env create -f environment.yml
|
||
```
|
||
|
||
如果环境已经存在:
|
||
|
||
```powershell
|
||
conda env update -n JobRadar -f environment.yml --prune
|
||
```
|
||
|
||
激活环境:
|
||
|
||
```powershell
|
||
conda activate JobRadar
|
||
```
|
||
|
||
### 2. 检查数据库迁移
|
||
|
||
当前默认使用项目目录中的 SQLite 数据库:
|
||
|
||
```powershell
|
||
python manage.py migrate
|
||
```
|
||
|
||
### 3. 创建本地管理员
|
||
|
||
```powershell
|
||
python manage.py createsuperuser
|
||
```
|
||
|
||
### 4. 启动开发服务
|
||
|
||
```powershell
|
||
python manage.py runserver
|
||
```
|
||
|
||
访问地址:
|
||
|
||
- 管理后台:<http://127.0.0.1:8000/admin/>
|
||
|
||
### 5. 安装 Playwright 浏览器
|
||
|
||
首次开发采集模块时执行:
|
||
|
||
```powershell
|
||
python -m playwright install chromium
|
||
```
|
||
|
||
浏览器文件不应提交到仓库。
|
||
|
||
## 配置原则
|
||
|
||
- 本地开发密钥、数据库密码、招聘网站 Cookie 和模型 API Key 不得提交到 Git。
|
||
- 当前 `settings.py` 仍是 Django 生成的开发配置,不可直接用于生产环境。
|
||
- 接入 PostgreSQL 前,应先增加本地配置文件或环境隔离方案,并提供不含真实密钥的示例配置。
|
||
- 采集器必须设置并发、频率、超时和指数退避,不能绕过验证码、登录保护或访问控制。
|
||
- 企业性质及 AI 判断必须保存来源、判断时间和置信度;信息不足时应标记为待人工复核。
|
||
|
||
## 用户系统
|
||
|
||
系统面向公网部署,因此第一阶段即接入用户认证,但不设计复杂的角色权限体系:
|
||
|
||
- 使用 Django 内置用户、密码哈希、Session 和登录保护能力。
|
||
- 普通用户登录后只能访问自己的搜索任务、筛选配置、岗位状态和个人画像。
|
||
- 管理员使用 Django Admin 维护站点适配器、系统任务和异常数据。
|
||
- 第一阶段只区分普通用户与管理员,不增加角色表、权限组、组织机构或审批流。
|
||
- 业务数据必须记录所属用户,查询和任务执行时统一校验数据归属。
|
||
- 默认关闭公开注册,由管理员创建账号;确需开放注册时再增加邮箱验证、验证码和频率限制。
|
||
|
||
## 公网部署要求
|
||
|
||
- Django 由生产级 WSGI/ASGI 服务运行,不能使用 `manage.py runserver` 对外提供服务。
|
||
- 使用 Nginx 或 Caddy 作为反向代理,并强制启用 HTTPS。
|
||
- 正确配置 `ALLOWED_HOSTS`、可信 CSRF 来源、安全 Cookie 和代理转发头。
|
||
- PostgreSQL 和 Redis 仅在容器私有网络中开放,不映射到公网。
|
||
- 登录、注册、密码重置和耗时接口应设置频率限制与异常审计。
|
||
- 密钥、数据库密码、网站 Cookie 和模型 API Key通过部署平台密钥或受保护的环境配置注入。
|
||
- 定期备份数据库,并验证备份恢复流程。
|
||
|
||
## 开发约定
|
||
|
||
- 一个招聘网站对应一个采集适配器,禁止把站点特有解析逻辑写入公共业务模块。
|
||
- 原始数据与标准化数据分开保存,避免解析规则变化后无法追溯。
|
||
- 先执行确定性筛选,再调用联网服务和大模型,降低成本与误判范围。
|
||
- 评分权重由配置决定,大模型只输出结构化维度分析,不直接修改最终分数。
|
||
- 采集、企业补全和 AI 分析任务必须可重复执行,并通过唯一约束或幂等键防止重复入库。
|
||
- 重要判断应包含证据,不以模型生成的自然语言作为唯一依据。
|
||
|
||
## 验证命令
|
||
|
||
```powershell
|
||
python manage.py check
|
||
python manage.py test
|
||
```
|
||
|
||
涉及数据模型变更时,还应检查是否遗漏迁移文件:
|
||
|
||
```powershell
|
||
python manage.py makemigrations --check --dry-run
|
||
```
|
||
|
||
## 合规说明
|
||
|
||
JobRadar 仅用于个人岗位信息整理与求职辅助。使用前应确认目标网站的服务条款、数据授权范围和访问频率限制。项目不以绕过验证码、风控、登录限制或其他技术保护措施为目标,也不应自动投递简历或自动联系招聘人员。
|
||
|
||
## 项目状态
|
||
|
||
当前版本:`0.1.0-dev`
|
||
|
||
当前阶段:Django 基础工程和项目文档初始化。
|