Files
JobRadar/README.md
2026-08-14 15:12:05 +08:00

184 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 基础工程和项目文档初始化。