SETUP.zh-CN.md
English | Español | 简体中文 | 日本語
欢迎!本指南将带你在本地完成 Resume Matcher 的安装与配置。无论你是想参与开发,还是只想在本机运行应用,都可以按本文档完成上手。
<a id="prerequisites"></a>
开始前请确保系统已安装以下工具:
| 工具 | 最低版本 | 如何检查 | 安装 |
|---|---|---|---|
| Python | 3.13+ | python --version | python.org |
| Node.js | 22+ | node --version | nodejs.org |
| npm | 10+ | npm --version | 随 Node.js 一起安装 |
| uv | 最新 | uv --version | astral.sh/uv |
| Git | 任意 | git --version | git-scm.com |
Resume Matcher 使用 uv 来实现更快、更稳定的 Python 依赖管理。可通过以下方式安装:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 或通过 pip
pip install uv
<a id="quick-start"></a>
如果你对开发工具比较熟悉,想快速跑起来:
# 1. 克隆仓库
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
# 2. 启动后端(终端 1)
cd apps/backend
cp .env.example .env # 从模板创建配置
uv sync # 安装 Python 依赖
uv run uvicorn app.main:app --reload --port 8000
# 3. 启动前端(终端 2)
cd apps/frontend
npm install # 安装 Node.js 依赖
npm run dev # 启动开发服务器
浏览器打开 http://localhost:3000 即可。
注意: 使用应用前需要先配置 AI 提供商。见下方 配置 AI 提供商。
<a id="step-by-step-setup"></a>
<a id="1-clone-the-repository"></a>
先把代码拉到本机:
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
<a id="2-backend-setup"></a>
后端是 Python FastAPI 应用,负责 AI 调用、简历解析以及数据存储。
cd apps/backend
cp .env.example .env
.env# macOS/Linux
nano .env
# 或使用任意编辑器
code .env # VS Code
最关键的配置是 AI 提供商。下面是 OpenAI 的最小示例配置:
LLM_PROVIDER=openai
LLM_MODEL=gpt-5-nano-2025-08-07
LLM_API_KEY=sk-your-api-key-here
# 本地开发建议保持默认
HOST=0.0.0.0
PORT=8000
FRONTEND_BASE_URL=http://localhost:3000
CORS_ORIGINS=["http://localhost:3000", "http://127.0.0.1:3000"]
uv sync
该命令会创建虚拟环境并安装所有必需依赖。
uv run uvicorn app.main:app --reload --port 8000
你会看到类似输出:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process
保持该终端运行,然后为前端另开一个终端窗口。
<a id="3-frontend-setup"></a>
前端是 Next.js 应用,提供用户界面。
cd apps/frontend
仅当你的后端运行在不同端口时需要:
cp .env.sample .env.local
npm install
npm run dev
你会看到:
▲ Next.js 16.x.x (Turbopack)
- Local: http://localhost:3000
浏览器打开 http://localhost:3000,你应该能看到 Resume Matcher 的界面。
<a id="configuring-your-ai-provider"></a>
Resume Matcher 支持多种 AI 提供商。你可以在应用的 Settings 页面中配置,也可以直接编辑后端的 .env 文件。
<a id="option-a-cloud-providers"></a>
| 提供商 | 配置方式 | 获取 API Key |
|---|---|---|
| OpenAI | LLM_PROVIDER=openai | |
LLM_MODEL=gpt-5-nano-2025-08-07 | platform.openai.com | |
| Anthropic | LLM_PROVIDER=anthropic | |
LLM_MODEL=claude-haiku-4-5-20251001 | console.anthropic.com | |
| Google Gemini | LLM_PROVIDER=gemini | |
LLM_MODEL=gemini-3-flash-preview | aistudio.google.com | |
| OpenRouter | LLM_PROVIDER=openrouter | |
LLM_MODEL=deepseek/deepseek-chat | openrouter.ai | |
| DeepSeek | LLM_PROVIDER=deepseek | |
LLM_MODEL=deepseek-chat | platform.deepseek.com |
Anthropic 的 .env 示例:
LLM_PROVIDER=anthropic
LLM_MODEL=claude-haiku-4-5-20251001
LLM_API_KEY=sk-ant-your-key-here
<a id="option-b-local-ai-with-ollama-free"></a>
想在本机运行模型、避免 API 费用?可以使用 Ollama。
从 ollama.com 下载并安装。
ollama pull gemma3:4b
其他可选模型:mistral、codellama、neural-chat
.envLLM_PROVIDER=ollama
LLM_MODEL=gemma3:4b
LLM_API_BASE=http://localhost:11434
# Ollama 不需要 LLM_API_KEY
ollama serve
通常安装后 Ollama 会自动启动。
<a id="docker-deployment"></a>
如果你更喜欢容器化部署,Resume Matcher 已提供 Docker 支持。
# 构建并启动容器
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止容器
docker-compose down
.env 文件)<a id="accessing-the-application"></a>
当后端与前端都启动后,可通过以下地址访问:
| URL | 说明 |
|---|---|
| http://localhost:3000 | 主应用(Dashboard) |
| http://localhost:3000/settings | 配置 AI 提供商 |
| http://localhost:8000 | 后端 API 根路径 |
| http://localhost:8000/docs | 可交互的 API 文档 |
| http://localhost:8000/health | 后端健康检查 |
<a id="common-commands-reference"></a>
cd apps/backend
# 启动开发服务器(自动热重载)
uv run uvicorn app.main:app --reload --port 8000
# 启动生产服务器
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000
# 安装依赖
uv sync
# 安装开发依赖(用于测试)
uv sync --group dev
# 运行测试
uv run pytest
# 查看数据库文件(JSON 存储)
ls -la data/
cd apps/frontend
# 启动开发服务器(Turbopack 快速刷新)
npm run dev
# 生产构建
npm run build
# 启动生产服务器
npm run start
# 运行 linter
npm run lint
# 使用 Prettier 格式化
npm run format
# 指定其他端口运行
npm run dev -- -p 3001
Resume Matcher 使用 TinyDB(JSON 文件存储)。数据位于 apps/backend/data/:
# 查看数据库文件
ls apps/backend/data/
# 备份数据
cp -r apps/backend/data apps/backend/data-backup
# 重置数据(重新开始)
rm -rf apps/backend/data
<a id="troubleshooting"></a>
错误: ModuleNotFoundError
确认使用 uv 启动:
uv run uvicorn app.main:app --reload
错误: LLM_API_KEY not configured
检查你的 .env 是否为所选提供商配置了有效的 API Key。
错误: 页面加载时报 ECONNREFUSED
后端未运行,请先启动后端:
cd apps/backend && uv run uvicorn app.main:app --reload
错误: 构建或 TypeScript 报错
清理 Next.js 缓存:
rm -rf apps/frontend/.next
npm run dev
错误: Cannot connect to frontend for PDF generation
后端无法访问前端,请检查:
.env 中的 FRONTEND_BASE_URL 与前端 URL 一致CORS_ORIGINS 包含前端 URL如果前端运行在 3001 端口:
FRONTEND_BASE_URL=http://localhost:3001
CORS_ORIGINS=["http://localhost:3001", "http://127.0.0.1:3001"]
错误: Connection refused to localhost:11434
ollama listollama serveollama pull gemma3:4b<a id="project-structure-overview"></a>
Resume-Matcher/
├─ apps/
│ ├─ backend/ # Python FastAPI backend
│ │ ├─ app/
│ │ │ ├─ main.py # Application entry point
│ │ │ ├─ config.py # Environment configuration
│ │ │ ├─ database.py # TinyDB wrapper
│ │ │ ├─ llm.py # AI provider integration
│ │ │ ├─ routers/ # API endpoints
│ │ │ ├─ services/ # Business logic
│ │ │ └─ schemas/ # Data models
│ │ ├─ prompts/ # LLM prompt templates
│ │ ├─ data/ # Database storage (auto-created)
│ │ ├─ .env.example # Environment template
│ │ └─ pyproject.toml # Python dependencies
│ └─ frontend/ # Next.js React frontend
│ ├─ app/ # Pages (dashboard, builder, etc.)
│ ├─ components/ # Reusable React components
│ ├─ lib/ # Utilities and API client
│ ├─ .env.sample # Environment template
│ └─ package.json # Node.js dependencies
├─ docs/ # Additional documentation
├─ docker-compose.yml # Docker configuration
├─ Dockerfile # Container build instructions
└─ README.md # Project overview
<a id="getting-help"></a>
如果遇到问题,可以从以下渠道获得支持:
| 文档 | 说明 |
|---|---|
| backend-guide.md | 后端架构与 API 细节 |
| frontend-workflow.md | 用户流程与组件架构 |
| style-guide.md | UI 设计系统(Swiss International Style) |
祝你简历制作顺利!如果 Resume Matcher 对你有帮助,欢迎 给仓库点个 Star,以及 加入我们的 Discord。