Metadata-Version: 2.4
Name: boss-career-ops
Version: 0.10.0
Summary: BOSS直聘 AI 求职全流程系统 — 搜索、评估、投递、沟通、面试、谈判闭环
Project-URL: Repository, https://github.com/maimaigptlink9/boss-career-ops
Author: boss-career-ops contributors
License-Expression: MIT
License-File: LICENSE
Keywords: boss,career,cli,job-search,recruitment,zhipin
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Utilities
Requires-Python: >=3.12
Requires-Dist: aiohttp<4.0,>=3.9
Requires-Dist: click<9.0,>=8.1
Requires-Dist: cryptography<47.0,>=44.0
Requires-Dist: httpx<0.28,>=0.27
Requires-Dist: markdown<4.0,>=3.10.2
Requires-Dist: patchright<2.0,>=1.0
Requires-Dist: portalocker<4.0,>=3.2.0
Requires-Dist: psutil<8.0,>=7.2.2
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: rich<14.0,>=13.0
Requires-Dist: textual<1.0,>=0.50
Provides-Extra: web
Requires-Dist: fastapi<1.0,>=0.115; extra == 'web'
Requires-Dist: uvicorn<1.0,>=0.34; extra == 'web'
Description-Content-Type: text/markdown

# Boss-Career-Ops

BOSS 直聘求职全流程 CLI 工具。覆盖从职位搜索到拿到 offer 的完整闭环。

**核心原则：规则引擎评估推荐，人决定行动。系统自动执行高分职位，低分职位需人工确认。**

## 功能概览

- **职位搜索** — 关键词 + 城市 + 福利多维筛选，搜索缓存减少 API 调用
- **5 维评估** — 匹配度、薪资、地点、发展、团队自动评分，全行业同义词表，匹配/不匹配原因输出
- **阈值驱动** — batch-greet 内置阈值逻辑，B 级自动打招呼，D 级自动跳过
- **简历定制** — 根据职位 JD 生成 ATS 友好的 MD/PDF 简历，关键词注入
- **批量打招呼** — 高斯随机延迟 + 随机长停顿，最大 10 个，防封号
- **聊天管理** — 消息历史、摘要、标签、导出
- **求职流水线** — 发现→评估→投递→沟通→面试→offer 全程追踪，所有操作结果自动入库
- **面试准备** — 基于职位信息生成面试要点
- **Web 仪表盘** — 求职决策仪表盘，5 维评分可视化、Pipeline 看板、零配置可用
- **TUI Dashboard** — 终端可视化求职看板

## 快速开始

### 安装

```bash
# 推荐：uv 全局安装
uv tool install boss-career-ops

# 或 pip
pip install boss-career-ops

# 或从源码安装
uv tool install git+https://github.com/maimaigptlink9/boss-career-ops.git
```

**要求：Python >= 3.12**

### 开发模式

```bash
git clone https://github.com/maimaigptlink9/boss-career-ops.git
cd boss-career-ops
uv sync
uv run bco <cmd>
uv run pytest
```

### 初始化

```bash
# 1. 环境诊断
bco doctor

# 2. 首次使用，初始化配置
bco setup

# 3. 登录 BOSS 直聘（自动检测 Chrome Profile，4 级降级）
bco login

# 4. 确认登录态
bco status
```

### 基本使用

```bash
# 搜索职位
bco search "Golang" --city 广州 --welfare "双休,五险一金"

# 对搜索结果批量评估
bco evaluate --from-search

# 批量打招呼（内置阈值逻辑）
bco batch-greet "Golang" --city 广州

# 生成定制简历
bco resume <job_id> --format pdf

# 查看求职流水线
bco pipeline

# 启动 Web 仪表盘（零配置可用，规则引擎开箱即用）
bco web
```

## 评估引擎

### 5 维评分体系

| 维度 | 权重 | 评估内容 |
|------|------|----------|
| 匹配度 | 30% | 技能、经验、学历与 JD 的匹配程度（全行业同义词表 ~100 组） |
| 薪资 | 25% | 薪资范围与预期的对比，连续评分（非阶梯跳变） |
| 地点 | 15% | 城市偏好、邻近城市支持、远程可能性 |
| 发展 | 15% | 职业成长空间（按岗位类型选关键词：技术/产品/运营/市场/设计/数据/管理） |
| 团队 | 15% | 公司阶段、团队文化（按岗位类型选关键词） |

### 评分改进

- **评分区分度提升**：发展/团队基准分从 3.0 降至 1.5，解决评分集中在 C 级的问题
- **全行业同义词表**：覆盖技术/产品/运营/市场/设计/数据/财务/人力/销售/内容/电商/法务/行政/通用共 ~100 组
- **匹配原因输出**：每个评估结果包含 `match_reasons`（优势）和 `mismatch_reasons`（不足）
- **信息不足标记**：搜索结果缺 description 时标记 `confidence: "preliminary"`，提示查看详情后评分可能变化
- **薪资连续评分**：用连续函数替代阶梯跳变，5K 差距不再导致 1.0 分跳变
- **邻近城市支持**：广州→深圳 3.5 分（而非 2.0），北京→天津同理

### 评分等级与自动动作

| 等级 | 分数 | 含义 | 自动动作 |
|------|------|------|----------|
| A | 4.5-5.0 | 强烈推荐 | 自动投递 |
| B | 3.5-4.4 | 值得投入 | 自动打招呼 |
| C | 2.5-3.4 | 一般 | 需人工确认 |
| D | 1.5-2.4 | 不太匹配 | 需人工确认 |
| F | 0.0-1.4 | 不推荐 | 跳过 |

## 命令参考

### 环境与认证

| 命令 | 说明 |
|------|------|
| `bco doctor` | 环境诊断 |
| `bco setup` | 初始化配置（首次使用） |
| `bco login` | 登录（4 级降级：Bridge Cookie→CDP→QR httpx→patchright），支持 `--profile` 指定 Chrome 配置文件 |
| `bco logout` | 清除本地登录态 |
| `bco status` | 检查登录态 |
| `bco bridge status` | 查看 Bridge Daemon 状态 |
| `bco bridge test` | Bridge 连通性诊断（3 步检查） |
| `bco skill-update` | 检查远程版本并获取最新 skill.md 内容 |

### 职位搜索与评估

| 命令 | 说明 |
|------|------|
| `bco search <keyword> --city <city> --welfare <welfare>` | 搜索职位 + 福利筛选 |
| `bco recommend` | 个性化推荐 |
| `bco evaluate [target]` 或 `--from-search` | 5 维评估 |
| `bco detail <security_id>` | 查看职位完整详情（双通道降级） |

### 投递与沟通

| 命令 | 说明 |
|------|------|
| `bco greet <security_id> <job_id>` | 打招呼 |
| `bco batch-greet <keyword> --city <city>` | 批量打招呼（最大 10 个） |
| `bco apply <security_id> <job_id>` | 投递简历 |
| `bco apply <security_id> <job_id> --resume <job_id>` | 投递前先上传简历再投递 |
| `bco resume <job_id> --format <md\|pdf>` | 生成定制简历 |
| `bco resume <job_id> --format pdf --upload` | 生成 PDF 并上传到 BOSS 直聘平台 |

### 聊天管理

| 命令 | 说明 |
|------|------|
| `bco chat --export <csv\|json\|html\|md>` | 聊天管理 + 导出 |
| `bco chatmsg <security_id>` | 聊天消息历史 |
| `bco chat-summary <security_id>` | 聊天摘要 |
| `bco mark <security_id> --tag <tag>` | 联系人标签 |

### 流水线与导出

| 命令 | 说明 |
|------|------|
| `bco pipeline` | 求职流水线追踪（数据来自搜索/评估/投递等操作的自动入库） |
| `bco export <keyword> -o <output> --format <csv\|json\|html\|md>` | 多格式导出 |

### 面试与 Dashboard

| 命令 | 说明 |
|------|------|
| `bco interview <job_id>` | 面试准备 |
| `bco dashboard` | 启动 TUI Dashboard |
| `bco web` | 启动 Web 仪表盘（求职决策仪表盘，零配置可用） |

## 配置

所有配置存储在 `~/.bco/` 目录（可通过 `BCO_HOME` 环境变量自定义）。

### 个人档案 — `~/.bco/config/profile.yml`

```yaml
name: ""
title: ""
experience_years: 0
skills: []
expected_salary:
  min: 0
  max: 0
preferred_cities: []
remote_ok: false
education: ""
career_goals: ""
avoid: ""
```

### 简历 — `~/.bco/cv.md`

Markdown 格式的完整简历，评估引擎和简历生成器都会读取此文件。越详细，评估越准确。

### 自动执行阈值 — `~/.bco/config/thresholds.yml`

```yaml
auto_action:
  auto_greet_threshold: 4.0    # B+ 及以上自动打招呼
  auto_apply_threshold: 4.5    # A 级自动投递
  skip_threshold: 2.0          # D 级及以下直接跳过
  confirm_required: true       # 中间分数段需人工确认

rate_limit:
  request_delay_min: 1.5       # 请求最小延迟（秒）
  request_delay_max: 3.0       # 请求最大延迟（秒）
  batch_greet_max: 10          # 批量打招呼上限
  batch_greet_delay_min: 2.0   # 批量打招呼最小延迟
  batch_greet_delay_max: 5.0   # 批量打招呼最大延迟
  burst_penalty_multiplier: 2.0  # 突发惩罚倍数
  retry_max_attempts: 3        # 最大重试次数
  retry_base_delay: 5.0        # 重试基础延迟
  retry_max_delay: 60.0        # 重试最大延迟
  search_page_delay_min: 3.0   # 搜索翻页最小延迟
  search_page_delay_max: 6.0   # 搜索翻页最大延迟
  search_max_pages: 5          # 搜索最大翻页数

cache:
  default_ttl: 3600            # 默认缓存 TTL（秒）
  search_ttl: 1800             # 搜索缓存 TTL（秒）
```

## Web 仪表盘

`bco web` 启动求职决策仪表盘（FastAPI + Alpine.js），定位是评分和 Pipeline 的可视化，不是 BOSS 网页的复刻。

### 核心页面

| 页面 | 功能 | BOSS 网页可替代 |
|------|------|-----------------|
| 决策看板 | Pipeline 看板 + 5 维评分卡片 + 优劣势分析 + 待办 | ❌ |
| 设置 | 个人档案编辑 + 阈值配置 | ❌ |

### 技术架构

```
浏览器 → FastAPI (web/server.py) → PipelineManager / BossAdapter / EvaluationEngine
```

- 后端：FastAPI，业务逻辑通过 `pipeline/manager.py`、`pipeline/analytics.py` 调用
- 前端：Alpine.js (CDN) + 原生 JS，暗色主题，无构建工具
- 安全：默认绑定 `127.0.0.1`，API Key Fernet 加密存储，写操作需认证

## 安全说明

- Token 使用 Fernet 加密存储（PBKDF2 密钥派生，绑定机器+用户）
- API Key 使用 Fernet 加密存储（Web 设置页保存时加密）
- 请求间隔使用高斯随机延迟 + 5% 概率随机长停顿，模拟人类行为
- 浏览器通道共享节流器，防止降级后请求密度失控
- Cookie 回写机制，捕获服务端 Set-Cookie 更新
- Token 自动刷新（stoken 过期时 CDP 优先刷新）
- 批量操作内置上限（batch-greet 最大 10 个）
- 敏感信息不输出到日志
- CSV 导出防止公式注入，文件导出防止路径遍历
- Web 仪表盘默认绑定 `127.0.0.1`，写操作需 `BCO_WEB_API_KEY` 认证

## 参考项目

本项目融合了以下两个开源项目的核心能力：

- [boss-agent-cli](https://github.com/can4hou6joeng4/boss-agent-cli) — AI Agent 专用的 BOSS 直聘求职 CLI 工具，提供平台操作能力（搜索、打招呼、投递、聊天等）
- [career-ops](https://github.com/santifer/career-ops/tree/main) — AI 驱动的求职评估系统，提供智能评估能力（多维评分、简历定制、面试准备等）

## License

MIT
