# interview-agent **Repository Path**: prja/interview-agent ## Basic Information - **Project Name**: interview-agent - **Description**: 面试助手智能体 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎯 面试助手 Agent > **Interview Assistant Agent (IAA)** — 基于 AI 的智能面试准备与辅导平台 > > 集 **题库管理、文档抽取、RAG 检索增强、模拟面试、Agent 对话、简历解析** 于一体的端到端面试辅导系统。 --- ## ✨ 功能概览 | 功能 | 说明 | 状态 | |------|------|------| | 🔐 用户认证 | 注册 / 登录 / JWT 鉴权 / 忘记密码(邮箱验证码) | ✅ | | 📚 题库管理 | 个人题目 CRUD + 默认知识库(管理员维护,全员只读) | ✅ | | 📄 文档抽取 | PDF / Word / TXT 上传,LLM 自动抽取 Q&A,人工审核入库 | ✅ | | 🧠 RAG 答题助手 | 基于 Chroma 向量库 + LangChain 的检索增强生成 | ✅ | | 🎤 模拟面试 | AI 多轮模拟面试,阶段跟踪与评分反馈 | ✅ | | 📝 答题练习 | 10 题模式,自动评分与详细解析 | ✅ | | 📋 简历管理 | 上传 / 解析简历,基于简历生成针对性面试问题 | ✅ | | 🤖 Agent 对话 | 统一对话入口,调度 JD 分析、出题、检索、模拟面试等 Tools | ✅ | | 📊 JD 分析 | 输入职位描述,提炼技术栈与高频考点 | ✅ | | 🛠️ 管理员后台 | 用户管理、字典管理、操作日志追溯 | ✅ | --- ## 🏗️ 技术栈 | 层 | 技术 | |----|------| | **前端** | React 18 + TypeScript + Vite + Ant Design 5 + Zustand + ECharts | | **后端** | Python 3.13 + FastAPI + SQLAlchemy (async) + Alembic | | **AI / LLM** | OpenAI API + LangChain + Agent 编排 + Tool Calling | | **向量库** | Chroma + LangChain Chroma(文本分块 + Embedding 检索) | | **数据库** | MySQL 8 | | **缓存** | Redis 7 | | **任务队列** | Celery + Redis Broker | | **部署** | Docker Compose | --- ## 📁 项目结构 ` ├── 代码/ │ ├── interview_server/ # 🐍 FastAPI 后端 │ │ ├── core/ # 配置、安全、邮件、Redis、字典缓存 │ │ ├── db/ # 数据库会话管理 │ │ ├── models/ # SQLAlchemy 数据模型 │ │ ├── schemas/ # Pydantic 请求/响应模型 │ │ ├── repository/ # 数据访问层 │ │ ├── routers/endpoints/ # API 路由 │ │ ├── services/ # 业务逻辑(RAG/向量库/文档抽取) │ │ ├── utils/ # 工具函数(配置/文件/日志/Prompt) │ │ ├── settings/ # YAML 配置文件 │ │ ├── tasks/ # Celery 异步任务 │ │ ├── chroma_data/ # 向量库持久化目录 │ │ ├── main.py # 应用入口 │ │ └── alembic/ # 数据库迁移 │ │ │ ├── frontend/ # ⚛️ React + TypeScript 前端 │ │ ├── src/ │ │ │ ├── api/ # Axios API 客户端 │ │ │ ├── stores/ # Zustand 状态管理 │ │ │ ├── components/ # 公共组件 │ │ │ ├── pages/ # 页面组件 │ │ │ └── App.tsx # 路由配置 │ │ └── package.json │ │ │ ├── worker/ # ⚙️ Celery 异步 Worker │ │ └── tasks/ │ │ │ ├── docker-compose.yml # 🐳 一键部署(env:interview_server/.env.production) │ └── .gitignore │ ├── 原型设计/ # 📱 HTML 高保真原型 ├── 数据库/ # 💾 SQL 建库脚本 ├── 需求分析报告.md # 📄 需求分析文档 ├── 功能设计报告.md # 📄 功能设计文档 └── backend.7z # 📦 旧版 backend 归档 ` --- ## 🚀 快速启动 ### 本地开发 前置条件: Python ≥ 3.13、Node.js ≥ 18、MySQL 8、Redis 7 ```bash # 1. 配置环境变量 cd 代码/interview_server cp .env.example .env.development cp .env.example .env.production # 编辑 .env.development(本机 DB/Redis)并填入 DASHSCOPE_API_KEY 等 # 2. 启动后端 uv sync uv run alembic upgrade head uv run uvicorn main:app --reload --port 8000 # 3. 启动前端 cd ../frontend npm install npm run dev # 4. 启动 Worker(可选) cd ../worker pip install -r requirements.txt celery -A worker.tasks.celery_app worker --loglevel=info ``` ### Docker 部署 ```bash cd 代码 # 确保 interview_server/.env.production 已配置(Docker 用 mysql/redis 主机名) docker compose up -d ``` 访问 http://localhost:3000 即可进入应用。 --- ## 📡 API 概览 | 端点 | 说明 | |------|------| | POST /api/v1/auth/register | 用户注册 | | POST /api/v1/auth/login | 用户登录,返回 JWT | | GET /api/v1/auth/send-code | 发送邮箱验证码 | | POST /api/v1/auth/reset-password | 重置密码 | | POST /api/v1/documents/upload | 上传文档(PDF/Word/TXT) | | GET /api/v1/documents | 文档列表(分页) | | GET /api/v1/documents/{id} | 文档详情 | | DELETE /api/v1/documents/{id} | 删除文档 | | GET /api/v1/sys-dict/type/list | 字典类型列表 | | GET /api/v1/sys-dict/data/list | 字典数据列表 | | GET /api/v1/sys-dict/data/type/{type} | 按类型查字典数据 | | GET /health | 健康检查 | --- ## 🧭 路线图 | 阶段 | 内容 | 状态 | |------|------|------| | Phase 1 | 用户认证、题库管理、答题练习、模拟面试、简历管理、后台管理 | ✅ 已完成 | | Phase 2 | Agent 对话、文档抽取、RAG 答题助手、JD 分析 | ✅ 已完成 | | Phase 3 | 语音/视频模拟面试、移动端适配、企业 B 端 | 📅 规划 | --- ## 📖 相关文档 - [需求分析报告](./需求分析报告.md) — 项目背景、目标、范围、用例 - [功能设计报告](./功能设计报告.md) — 模块职责、流程、接口、交互 - [原型设计](./原型设计/) — 8 个核心页面的 HTML 高保真原型 - [数据库脚本](./数据库/interview_agent.sql) — 建库建表 DDL --- ## 📄 许可证 本项目仅供学习和个人使用。 ![输入图片说明](image.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image1.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image-chat.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image-interview.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image-JD.png) ![输入图片说明](%E5%8E%9F%E5%9E%8B%E8%AE%BE%E8%AE%A1/image-log.png)