# career **Repository Path**: oneto7/career ## Basic Information - **Project Name**: career - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-06 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 职径(CareerPath) > 以「目标职位 + 简历」为活底座的成长飞轮持续学习平台。 > > 认知差距 → 针对性学习 → 反复拷打检验 → 能力沉淀 → 更新底座 → 下一圈。 不是单次面试模拟工具、不是刷题平台、不是通用 chatbot。核心差异:以目标职位为锚点,把市场真实要求翻译成个人成长路径,持续学习、持续检验、持续沉淀——长期平台,用户有理由回来。 ## 核心飞轮 ``` ┌─────────────────────────────────────────┐ │ │ ↓ │ 目标职位 + 简历(活底座,随成长更新) │ │ │ ↓ │ 能力与目标认知(评估报告:AI 语义匹配 + 竞争优势/短板/路线图) │ │ │ ↓ │ 针对性学习(AI 规划路径 + 学习笔记 RAG 索引) │ │ │ ↓ │ 反复拷打(快速练习 + 模拟面试,SSE 流式) │ │ │ ↓ │ 更新能力画像 → 更新简历 → 飞轮转下一圈 │ └─────────────────────────────────────────┘ ``` **两个关键反哺让飞轮自转**: 1. **检验 → 更新简历**:简历是活的底座,随能力成长更新(新增技能 ≥60 自动追加到简历 skills)。 2. **沉淀 → 反哺出题**:学习笔记自动索引到 RAG,下次练习/面试时被检索引用,沉淀被用上才有价值。 ## 技术栈 | 层 | 选型 | 说明 | |---|---|---| | 语言/包管理 | Python 3.12 + **uv** | | | Web | FastAPI + Pydantic v2 + uvicorn | 全链路 async,SSE 流式必备 | | ORM/迁移 | SQLAlchemy 2.0(async)+ SQLModel + Alembic | | | AI 编排 | **LangGraph**(低层 API 手写 node/edge/state/checkpoint) | 不用 `create_react_agent` 等黑盒预置 | | LLM 接入 | langchain-openai(OpenAI 兼容协议,BYOK 路由) | 覆盖 DeepSeek / GLM / Kimi | | 向量 | PostgreSQL + **pgvector**(HNSW,cosine;主库 pg18 + 0.8.6) | | | Embedding/Rerank | **bge-m3(1024 维)+ bge-reranker-v2-m3**,移动云网关服务端推理 | 无本地 torch 依赖;成本由平台通道额度承接 | | 文档解析 | PyMuPDF(PDF)+ python-docx(DOCX)+ PaddleOCR(扫描件降级,可选) | | | 任务队列 | **arq**(Redis broker,内置 cron) | 简历解析/报告生成/JD 雷达全进 worker | | 认证 | PyJWT + passlib[bcrypt];双 token(2h access + 7d refresh) | refresh 落库可吊销 | | 密钥加密 | cryptography(AES-256-GCM) | BYOK key 加密存储 | | 存储 | MinIO | 简历/知识库文件 | ## 模块结构 ``` app/ ├── common/ # 配置、异常、统一响应、trace、加密 ├── auth/ # 认证、用户、BYOK API Key 管理 ├── aicore/ # LangGraph 配置 + RAG + 记忆 + 工具 + prompt │ ├── config/ # ChatModel 工厂 + BYOK 路由 │ ├── tool/ # ProfileQueryTool / KnowledgeSearchTool 等 │ ├── rag/ # RAG service + ETL + 重排 │ └── prompt/ # 各场景 prompt ├── growth/ # 【核心飞轮】 │ ├── profile/ # 能力画像(技能矩阵 + EWMA 聚合 + AI 总结) │ ├── practice/ # 快速练习(四模式出题 + 评分 + 技能分回写 + 草稿暂存) │ ├── learning/ # 学习路径(AI 规划 + 里程碑 + stale 标记) │ ├── notes/ # 学习笔记(质量评估 + RAG 索引) │ └── trajectory/ # 进步轨迹(快照聚合) ├── resume/ # 简历解析 + 多版本 + AI 改写 + 随成长更新 ├── interview/ # 模拟面试(手写 StateGraph:出题/评分/追问/总结,SSE 流式) ├── market/ # 市场情报(JD 雷达 + 技能趋势 + 面经搜索 + 周报) ├── position/ # 目标职位(JD CRUD + 版本化 + 技能要求解析) └── knowledge/ # 知识库(文档管理 + 向量索引) ``` ## 业务逻辑红线 - **分数来自纯代码数据聚合(可信),AI 只生成总结文本**——AI 不得编造分数或事实。 - **BYOK 优先**:用户 key 优先路由(花自己的额度),平台 key 仅兜底且有日额度约束。 - **闭环红线**:每条业务逻辑必须同时满足——有业务价值(服务飞轮某一环)、有可用性(有入口有出口)、成闭环(产出回流画像/简历/知识库)。 ## 本地开发 ```bash uv sync # 安装依赖(自动准备 Python 3.12) docker compose up -d # PostgreSQL(5433)/Redis(6380)/MinIO(9000,9001) uv run alembic upgrade head # 建表 + pgvector 扩展 uv run uvicorn app.main:app --reload # API 服务,文档在 /docs uv run arq app.worker.WorkerSettings # 任务队列 worker(简历解析/报告/雷达) uv run pytest -m "not integration" # 单元测试(离线可跑) uv run pytest -m integration # 集成测试(需基础设施可达) uv run ruff check app tests # Lint(提交前必过) ``` 配置参考 `.env.example`。关键配置项: - `DATABASE_URL` — PostgreSQL(需 pgvector 扩展) - `REDIS_URL` — arq broker - `JWT_SECRET` / `API_KEY_ENCRYPTION_SECRET` — 认证与 BYOK 加密 - `PLATFORM_LLM_*` — 平台兜底 LLM 通道(留空则仅 BYOK) - `BOCHA_API_KEY` — 博查搜索 API(JD 雷达 + 面经搜索) ## 文档 - **产品方案**:`careerpath-project-plan.md`(做什么/为什么) - **技术方案**:`careerpath-tech-design.md`(怎么做:架构/数据模型/API/AI 设计/降级/测试) - **开发约定**:`AGENTS.md` ## 部署 ```bash docker compose up -d # 基础设施 uv run alembic upgrade head # 迁移 uv run gunicorn app.main:app -k uvicorn.workers.UvicornWorker -w 4 uv run arq app.worker.WorkerSettings # 独立进程 ``` 前端见 [careerpath-ui](https://gitee.com/oneto7/careerpath-ui.git)。 ## License Private.