[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76380":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":12,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},76380,"MockMate","linghuashenli65-bit\u002FMockMate","linghuashenli65-bit","基于 FastAPI 多 Agent 协同的拟真 AI模拟面试平台，支持多面试官切换、实时语音交互与 9 阶段面试流程，内置 5 层安全防护。",null,"Python",111,1,49,0,57,44.1,false,"master",true,[],"2026-06-12 04:01:21","# MockMate — AI 面试模拟陪练\n\n一款基于 FastAPI 的 AI 面试模拟工具。输入简历和目标岗位，AI 面试官出题、评分、生成报告，支持语音问答、断点续面、自定义题目、题目收藏等。\n\n---\n\n## 界面预览\n\n**准备面试** — 填写简历、选择面试轮次、生成岗位画像\n\n![准备面试页](images\u002F准备面试页.png)\n\n**岗位画像分析** — AI 搜索岗位招聘要求，生成结构化画像\n\n![岗位画像分析](images\u002F岗位画像分析.png)\n\n**模拟面试** — AI 面试官出题，支持语音、倒计时、提示\n\n![模拟面试页](images\u002F模拟面试页.png)\n\n**历史记录** — 多维度趋势图表、薄弱点分析\n\n![历史记录页](images\u002F历史记录页.png)\n\n**历史记录详情** — 雷达图评分、逐题回顾\n\n![历史记录详情页](images\u002F历史记录详情页.png)\n\n---\n\n## 快速开始\n\n### 安装依赖\n\n```bash\ncd MockMate\npip install -r requirements.txt\n```\n\n### 配置 API Key\n\nMockMate 支持三个 AI 提供商（可在网页端运行时切换）：\n\n| 提供商 | 支持能力 | 申请地址 |\n|--------|---------|---------|\n| **MiMo**（小米） | 推理出题、简历图片识别、语音合成 | [https:\u002F\u002F100t.xiaomimimo.com](https:\u002F\u002F100t.xiaomimimo.com) |\n| **DeepSeek** | 推理出题、对话（不支持图片和语音） | [https:\u002F\u002Fplatform.deepseek.com](https:\u002F\u002Fplatform.deepseek.com) |\n| **通义千问 (Qwen)** | 推理出题、对话、图片识别（vl）、语音合成（CosyVoice） | [https:\u002F\u002Fhelp.aliyun.com\u002Fzh\u002Fmodel-studio](https:\u002F\u002Fhelp.aliyun.com\u002Fzh\u002Fmodel-studio) |\n\n配置方式（二选一）：\n\n**方式一：环境变量**\n```bash\nset MIMO_API_KEY=your_key_here\nset DEEPSEEK_API_KEY=your_key_here\nset AI_PROVIDER=mimo    # 或 deepseek\n```\n\n**方式二：启动后网页配置**\n启动服务后，在浏览器打开设置页面，填入 API Key 并保存。\n\n### 启动\n\n```bash\nstart.bat        # Windows 双击 或\npython run.py    # 直接运行\n```\n\n浏览器打开 http:\u002F\u002F127.0.0.1:18633\n\n---\n\n## 架构\n\n```\n┌─────────┐     ┌─────────────────────────────────────┐     ┌───────────┐\n│ 浏览器   │────▶│           FastAPI 服务               │────▶│  MiMo API │\n│ (SPA)   │     │                                     │     │  DeepSeek │\n└─────────┘     │  ┌─────────┐  ┌──────────────────┐  │     └───────────┘\n                │  │ 路由层   │─▶│  面试引擎         │  │\n                │  │ main.py │  │  interview_engine │  │\n                │  └─────────┘  └──────────────────┘  │\n                │       │               │             │\n                │       ▼               ▼             │\n                │  ┌─────────┐  ┌──────────────────┐  │\n                │  │ 网页搜索  │  │  统一 AI 客户端   │  │\n                │  │web_resea│  │  ai_client        │──│──▶ HTTP API\n                │  │ rch.py  │  │  ┌─────┐ ┌──────┐ ┌──────┐│  │\n                │  └─────────┘  │  │MiMo │ │Deep  │ │Qwen  ││  │\n                │       │       │  │Cli  │ │Seek  │ │Cli   ││  │\n                │       ▼       │  └─────┘ └──────┘ └──────┘│  │\n                │  ┌─────────┐  └──────────────────┘  │\n                │  │ 数据库    │       │               │\n                │  │database │       ▼               │\n                │  │ .py     │  ┌──────────────────┐  │\n                │  └─────────┘  │  语音合成 TTS     │  │\n                │               │  tts.py           │  │\n                │               └──────────────────┘  │\n                └─────────────────────────────────────┘\n```\n\n### 核心模块\n\n| 模块 | 文件 | 职责 |\n|------|------|------|\n| **入口** | `run.py` | 启动入口 |\n| **Web 服务** | `backend\u002Fmain.py` | FastAPI 应用，路由注册，全局实例管理 |\n| **AI 客户端** | `backend\u002Fai_client.py` | 统一接口，三提供商自动路由和 fallback |\n| **MiMo 客户端** | `backend\u002Fmimoclient.py` | 小米 MiMo API 封装（推理、多模态、TTS） |\n| **DeepSeek 客户端** | `backend\u002Fdeepseek_client.py` | DeepSeek API 封装（推理、对话） |\n| **Qwen 客户端** | `backend\u002Fqwen_client.py` | 通义千问 API 封装（推理、对话、多模态、TTS） |\n| **面试引擎** | `backend\u002Finterview_engine.py` | 出题、评分、报告生成的 Prompt 编排 |\n| **网页搜索** | `backend\u002Fweb_research.py` | 多引擎并行搜索 + AI 整合成岗位画像 |\n| **语音合成** | `backend\u002Ftts.py` | 文字转语音 WAV |\n| **数据持久化** | `backend\u002Fdatabase.py` | MySQL \u002F JSON 文件双模式存储（会话、缓存、搜索历史） |\n| **配置** | `backend\u002Fconfig.py` | 环境变量和常量配置 |\n| **训练数据** | `backend\u002Ffinetune\u002F` | 训练数据采集、管理、LoRA 微调准备 |\n| **前端** | `frontend\u002F` | 模块化 SPA（10 个 JS 模块 + 独立 CSS） |\n\n---\n\n## API 文档\n\n所有接口前缀 `\u002Fapi`，请求\u002F响应均为 JSON。\n\n### 基础\n\n#### `GET \u002Fapi\u002Fstatus`\n服务状态和配置信息。\n\n```json\n{\n  \"status\": \"ok\",\n  \"provider\": \"mimo\",\n  \"mimo_ready\": false,\n  \"deepseek_ready\": false,\n  \"qwen_ready\": false,\n  \"db\": \"json\",\n  \"cache\": { \"total\": 0, \"valid\": 0, \"expired\": 0 }\n}\n```\n\n#### `POST \u002Fapi\u002Fconfig`\n更新 API Key 或切换提供商。\n\n```json\n\u002F\u002F 请求\n{ \"mimo_api_key\": \"sk-xxx\", \"deepseek_api_key\": \"sk-xxx\", \"provider\": \"deepseek\" }\n\u002F\u002F 响应\n{ \"message\": \"配置已更新\" }\n```\n\n### 简历\n\n#### `POST \u002Fapi\u002Fresume\u002Fparse`\n上传简历文件进行解析。\n\n- Content-Type: `multipart\u002Fform-data`\n- 支持: JPG \u002F PNG \u002F PDF \u002F DOCX \u002F MD\n- JPG\u002FPNG 需要 MiMo API Key（多模态能力）\n\n```json\n\u002F\u002F 响应\n{ \"text\": \"识别出的文字内容...\", \"source\": \"ocr\" }\n```\n\n#### `POST \u002Fapi\u002Fresume\u002Fanalyze`\nAI 分析简历文本，提取技能、经验、项目。\n\n```json\n\u002F\u002F 请求\n{ \"text\": \"简历内容...\" }\n\u002F\u002F 响应\n{ \"skills\": [\"Python\", \"FastAPI\"], \"experience_years\": \"3年\", \"projects\": [...], \"strengths\": [...], \"weaknesses\": [...] }\n```\n\n### 岗位研究\n\n#### `POST \u002Fapi\u002Fresearch`\n全网搜索目标岗位的招聘要求和面经，生成结构化岗位画像。结果缓存 90 天。\n\n```json\n\u002F\u002F 请求\n{ \"position\": \"Python后端开发 3年经验\" }\n\u002F\u002F 响应（关键字段）\n{\n  \"position\": \"Python后端开发\",\n  \"summary\": \"岗位概述...\",\n  \"required_skills\": [\"Python\", \"FastAPI\u002FDjango\", \"MySQL\", \"Redis\"],\n  \"nice_to_have\": [\"Docker\", \"K8s\", \"消息队列\"],\n  \"tech_stack\": [\"Python\", \"FastAPI\", \"MySQL\", \"Redis\", \"Docker\"],\n  \"common_interview_topics\": [\"...（5-8个常见面试题）\"],\n  \"interview_focus\": [\"...（3-5个考察重点）\"],\n  \"difficulty\": \"mid\",\n  \"years_experience\": \"1-3年\"\n}\n```\n\n### 面试流程\n\n#### `POST \u002Fapi\u002Finterview\u002Fstart`\n开始一场新面试，AI 基于简历和岗位画像生成第一道题。支持选择面试轮次，**每个轮次有独立的面试官角色定位和考察方向**。\n\n| 轮次 | 值 | 面试官角色 | 考察方向 |\n|------|-----|-----------|---------|\n| 笔试 | `written` | 笔试考官 | 理论基础与知识广度（客观题，核心 CS 基础） |\n| 技术一面 | `tech_1` | 资深工程师（Staff） | 工程实践与编码能力（代码审查、调试、API 设计） |\n| 技术二面 | `tech_2` | 架构师\u002F技术总监 | 架构设计与技术深度（系统设计、权衡分析） |\n| 综合面 | `comprehensive` | 工程 VP\u002FHR 负责人 | 综合素质与发展潜力（STAR 行为面试、领导力） |\n| 自定义练习 | `custom` | — | 使用自定义题目进行练习（需传入 `custom_question_ids`）|\n\n```json\n\u002F\u002F 请求（普通模式）\n{ \"resume\": \"简历内容...\", \"position\": \"Python后端开发\", \"company\": \"字节跳动\", \"profile\": {}, \"round\": \"tech_1\", \"enable_tts\": true }\n\u002F\u002F 请求（自定义题目模式）\n{ \"resume\": \"...\", \"position\": \"...\", \"round\": \"tech_1\", \"custom_question_ids\": [1, 2, 3], \"enable_tts\": true }\n\u002F\u002F 响应\n{\n  \"session_id\": \"a1b2c3d4e5f6\",\n  \"question\": { \"question\": \"题目内容\", \"type\": \"技术\", \"difficulty\": \"medium\", \"topic\": \"项目经验\", \"expected_points\": [...] },\n  \"question_index\": 0,\n  \"round\": \"tech_1\",\n  \"audio_url\": \"\u002Fapi\u002Faudio\u002Fa1b2c3d4e5f6_q000.wav\"\n}\n```\n\n#### `POST \u002Fapi\u002Finterview\u002Fanswer`\n提交回答，获取评分和下一题。\n\n```json\n\u002F\u002F 请求\n{ \"session_id\": \"a1b2c3d4e5f6\", \"question_index\": 0, \"answer\": \"我的回答...\" }\n\u002F\u002F 响应\n{\n  \"evaluation\": {\n    \"technical_score\": 8, \"technical_comment\": \"...\",\n    \"logic_score\": 7, \"logic_comment\": \"...\",\n    \"depth_score\": 6, \"depth_comment\": \"...\",\n    \"communication_score\": 8, \"communication_comment\": \"...\",\n    \"overall_score\": 7.3,\n    \"summary\": \"综合评价...\",\n    \"strengths\": [\"优点1\", \"优点2\"],\n    \"improvements\": [\"建议1\", \"建议2\"],\n    \"reference_answer\": \"参考回答要点\"\n  },\n  \"next_question\": { \"question\": \"下一题...\", ... },\n  \"next_index\": 1,\n  \"audio_url\": \"\u002Fapi\u002Faudio\u002Fa1b2c3d4e5f6_q001.wav\"\n}\n```\n\n#### `POST \u002Fapi\u002Finterview\u002Fend`\n结束面试，生成总结报告。\n\n```json\n\u002F\u002F 请求\n{ \"session_id\": \"a1b2c3d4e5f6\" }\n\u002F\u002F 响应\n{\n  \"report\": {\n    \"total_questions\": 5,\n    \"overall_score\": 7.2,\n    \"score_breakdown\": { \"technical\": 7.5, \"logic\": 7.0, \"depth\": 6.8, \"communication\": 7.5 },\n    \"strengths\": [\"...\", \"...\"],\n    \"weaknesses\": [\"...\", \"...\"],\n    \"skill_summary\": \"技能掌握情况总结\",\n    \"preparation_advice\": [\"复习建议1\", \"建议2\", \"建议3\"],\n    \"recommended_positions\": [\"适合的岗位\"],\n    \"final_verdict\": \"最终评价\"\n  },\n  \"history\": [\n    { \"q\": \"第一题\", \"a\": \"回答\", \"score\": {...}, \"type\": \"技术\", \"topic\": \"...\" }\n  ],\n  \"round\": \"tech_1\"\n}\n```\n\n#### `POST \u002Fapi\u002Finterview\u002Fhint`\n获取当前面试题的解题思路提示（非答案）。使用提示后评估会适当降分。\n\n```json\n\u002F\u002F 请求\n{ \"session_id\": \"a1b2c3d4e5f6\", \"question_index\": 2 }\n\u002F\u002F 响应\n{ \"hint\": \"1. 考察要点：… 2. 思考方向：… 3. 切入点：…\" }\n```\n\n#### `GET \u002Fapi\u002Finterview\u002Fsession\u002F{session_id}`\n查询历史面试会话详情。返回字段包含 `round` 表示该场面试的轮次。\n\n### 题目收藏\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| POST | `\u002Fapi\u002Ffavorites` | 收藏题目 |\n| GET | `\u002Fapi\u002Ffavorites` | 列出所有收藏 |\n| DELETE | `\u002Fapi\u002Ffavorites\u002F{id}` | 取消收藏 |\n\n```json\n\u002F\u002F POST \u002Fapi\u002Ffavorites\n{ \"session_id\": \"...\", \"question\": \"题目\", \"type\": \"技术\", \"difficulty\": \"medium\", \"topic\": \"...\", \"user_answer\": \"...\", \"overall_score\": 8 }\n```\n\n### 自定义题目\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| POST | `\u002Fapi\u002Fcustom\u002Fquestions` | 创建题目 |\n| GET | `\u002Fapi\u002Fcustom\u002Fquestions` | 列出所有题目 |\n| GET | `\u002Fapi\u002Fcustom\u002Fquestions\u002F{id}` | 获取单题 |\n| PUT | `\u002Fapi\u002Fcustom\u002Fquestions\u002F{id}` | 更新题目 |\n| DELETE | `\u002Fapi\u002Fcustom\u002Fquestions\u002F{id}` | 删除题目 |\n\n### 历史记录 \u002F 缓存\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fapi\u002Faudio\u002F{filename}` | 获取语音文件（WAV） |\n| GET | `\u002Fapi\u002Fhistory` | 列出所有面试记录（含各维度分数、薄弱点） |\n| DELETE | `\u002Fapi\u002Fhistory\u002F{session_id}` | 删除指定记录 |\n| GET | `\u002Fapi\u002Fcache\u002Fstats` | 缓存统计 |\n| POST | `\u002Fapi\u002Fcache\u002Fclear` | 清空缓存 |\n| GET | `\u002Fapi\u002Fsearch\u002Fhistory` | 搜索历史记录 |\n\n---\n\n## 项目结构\n\n```\nMockMate\u002F\n├── run.py                      # 启动入口\n├── start.bat                   # Windows 启动脚本\n├── requirements.txt            # Python 依赖\n├── mockmate.sql                # MySQL 建表脚本\n├── README.md                   # 本文件\n├── .env \u002F .env.example         # 环境配置\n├── frontend\u002F\n│   ├── index.html              # HTML 骨架\n│   ├── README.md               # 前端开发文档\n│   ├── css\u002F\n│   │   └── style.css           # 全部样式（主题、组件、动画、响应式）\n│   └── js\u002F\n│       ├── app.js              # 主入口（Tab 切换、快捷键、表单记忆）\n│       ├── api.js              # API 请求封装\n│       ├── utils.js            # 工具函数 & 常量\n│       ├── interview.js        # 面试全流程（出题、答题、评分、报告、断点续面、跳过\u002F暂挂、语音输入）\n│       ├── research.js         # 岗位画像搜索\n│       ├── history.js          # 历史记录 + Chart.js 图表（多维度趋势、薄弱点分析）\n│       ├── favorites.js        # 题目收藏管理\n│       ├── custom.js           # 自定义题目 CRUD\n│       ├── settings.js         # API Key 配置\n│       ├── auth.js             # 用户认证（邮箱验证码登录）\n│       ├── feedback.js         # 评分反馈（👍\u002F👎 点踩与修正）\n│       └── finetune.js         # 训练数据展示与管理\n└── backend\u002F\n    ├── __init__.py\n    ├── config.py               # 配置（API Key、端口、模型名称）\n    ├── main.py                 # FastAPI 服务主程序\n    ├── ai_client.py            # 统一 AI 客户端接口\n    ├── mimoclient.py           # MiMo API 客户端（异步）\n    ├── deepseek_client.py      # DeepSeek API 客户端（异步）\n    ├── qwen_client.py          # 通义千问 API 客户端（异步）\n    ├── interview_engine.py     # 面试引擎（出题、评分、报告）\n    ├── web_research.py         # 网络搜索 + 岗位画像生成\n    ├── tts.py                  # 语音合成\n    ├── database.py             # 数据持久化（MySQL \u002F JSON 回退）\n    ├── auth.py                 # 用户认证逻辑\n    ├── finetune\u002F               # 训练数据模块\n    │   ├── collector.py        # 数据采集\n    │   └── manager.py          # 数据管理（查询、统计、导出）\n    └── data\u002F                   # 运行时数据（自动创建）\n        ├── sessions\u002F           # 面试会话 JSON\n        ├── audios\u002F             # 语音 WAV 文件\n        └── mockmate.log        # 运行日志\n```\n\n---\n\n## 配置说明\n\n### 环境变量\n\n| 变量 | 默认值 | 说明 |\n|------|--------|------|\n| `MIMO_API_KEY` | 空 | 小米 MiMo API Key |\n| `DEEPSEEK_API_KEY` | 空 | DeepSeek API Key |\n| `QWEN_API_KEY` | 空 | 通义千问 API Key |\n| `AI_PROVIDER` | `mimo` | 默认 AI 提供商 |\n| `ALLOW_SHARED_API_KEY` | `false` | 是否允许未配 Key 的用户回退使用全局 Key |\n\n### 模型配置\n\n通义千问支持在设置页分别配置各用途模型，也可通过环境变量设置默认值：\n\n| 变量 | 默认值 | 说明 |\n|------|--------|------|\n| `QWEN_MODEL` | `qwen-plus` | 通用模型（fallback） |\n| `QWEN_MODEL_REASONER` | `qwen-plus` | 推理出题模型 |\n| `QWEN_MODEL_CHAT` | `qwen-plus` | 对话模型 |\n| `QWEN_MODEL_WRITTEN_EVAL` | `qwen-turbo` | 笔试判卷模型 |\n| `QWEN_MODEL_TTS` | `cosyvoice-v1` | 语音合成模型 |\n\n### 服务配置 (`backend\u002Fconfig.py`)\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `HOST` | `127.0.0.1` | 监听地址 |\n| `PORT` | `18633` | 监听端口 |\n\n### API 超时\n\n| 客户端 | 超时 | 连接池 |\n|--------|------|--------|\n| MiMo API | 120s | max 10 连接 |\n| DeepSeek API | 120s | max 10 连接 |\n| 网页搜索 | 15s\u002F请求 | max 10 连接 |\n\n---\n\n## 面试流程\n\n```\n用户输入简历 + 目标岗位\n        │\n        ▼\n  ┌─────────────┐\n  │ 岗位画像生成  │──▶ 多引擎并行搜索招聘信息+面经\n  │ (可选)       │──▶ AI 整合成结构化画像\n  └─────────────┘\n        │\n        ▼\n  ┌─────────────┐\n  │ 开始面试     │──▶ AI 基于简历+画像出第一题\n  │             │──▶ 可选生成语音\n  └─────────────┘\n        │\n        ▼\n  ┌─────────────┐      ┌─────────────┐\n  │ 用户回答     │─────▶│ AI 评分     │──▶ 五维度评分 + 参考回答\n  └─────────────┘      └─────────────┘\n        │                      │\n        ▼                      ▼\n  ┌─────────────┐      ┌─────────────┐\n  │ AI 出下一题  │◀─────│ 根据评分     │──▶ 评分高→深入追问\n  └─────────────┘      │ 动态决策     │──▶ 评分低→换方向\n        │              └─────────────┘\n        ▼\n  ┌─────────────┐\n  │ 结束面试     │──▶ 生成总结报告\n  │             │──▶ 技能评估 + 复习建议\n  └─────────────┘\n```\n\n### 评分维度\n\n所有面试（笔试除外）从 5 个维度评分，**每个轮次的评分权重不同**：\n\n| 维度 | 范围 | 技术一面权重 | 技术二面权重 | 综合面权重 |\n|------|------|------------|------------|-----------|\n| 技术分 | 1-10 | 40% | 30% | 15% |\n| 逻辑分 | 1-10 | 30% | 20% | 25% |\n| 深度分 | 1-10 | 15% | 40% | 20% |\n| 表达分 | 1-10 | 15% | 10% | 40% |\n| 综合分 | 1-10 | 加权平均 | 加权平均 | 加权平均 |\n\n- **技术一面**：侧重工程实践、代码质量、调试能力\n- **技术二面**：侧重架构设计、技术深度、权衡分析\n- **综合面**：侧重 STAR 表达、自我认知、成长思维\n- **笔试**：客观题自动判卷，直接比对正确答案\n\n---\n\n## 技术栈\n\n| 层级 | 技术 |\n|------|------|\n| 后端框架 | FastAPI + uvicorn |\n| AI 推理 | MiMo API \u002F DeepSeek API \u002F 通义千问 (Qwen) |\n| 网页搜索 | Bing + DuckDuckGo（自动 fallback）|\n| 图片识别 | MiMo 多模态 \u002F Qwen-VL |\n| 语音合成 | MiMo TTS \u002F Qwen CosyVoice |\n| 模型微调 | PEFT + LoRA (开发中) |\n| 数据存储 | MySQL \u002F JSON 文件双模式 |\n| 前端 | 原生 JS SPA（10 模块化文件 + Chart.js 图表） |\n| 图表库 | Chart.js v4（CDN 引入） |\n| 语音识别 | Web Speech API（Chrome 浏览器语音输入） |\n| 依赖管理 | pip + requirements.txt |\n\n---\n\n## 开发指南\n\n### 添加新的 AI 提供商\n\n1. 在 `backend\u002F` 下新建客户端类，参考 `mimoclient.py` 的模式\n2. 实现 `reason()`、`chat_standard()`、`written_eval()` 方法\n3. 在 `config.py` 添加配置项\n4. 在 `ai_client.py` 注册新客户端和 fallback 逻辑\n\n### 修改面试 Prompt\n\n编辑 `backend\u002Finterview_engine.py`：\n\n**轮次出题风格**：`ROUND_CONFIG` 字典定义了每个轮次的名称、描述和 `prompt_extra`（出题规则）。每个轮次有独立的面试官角色和考察方向，修改 `prompt_extra` 即可调整出题风格。\n\n**评估提示词**：`_build_evaluation_prompt_tech_1()` \u002F `_build_evaluation_prompt_tech_2()` \u002F `_build_evaluation_prompt_comprehensive()` 分别对应三个技术轮次的评估标准，各有不同的评分权重。\n\n**报告生成**：`_build_report_prompt()` 根据轮次注入不同的评价框架。\n\nPrompt 设计要点：\n- 每道题要求 AI 输出 JSON 格式，便于解析\n- 出题包含 `question\u002Ftype\u002Fdifficulty\u002Ftopic\u002Fexpected_points`\n- 评分包含 5 个维度的分数 + 评语 + 参考回答\n\n### 前端开发\n\n前端是模块化 SPA，所有文件在 `frontend\u002F` 目录：\n- `index.html` — HTML 骨架，引入 CSS 和 JS\n- `css\u002Fstyle.css` — 全部样式（CSS 变量控制主题）\n- `js\u002Fapp.js` — 主入口，通过 `MockMate.init()` 启动\n- 所有模块挂在 `window.MockMate` 命名空间下\n\n各 JS 模块职责和 API 详见 `frontend\u002FREADME.md`。\n\n### 添加新的前端 Tab 页面\n\n1. 在 `index.html` 添加 `.tab` 按钮 + `.tab-content` 容器\n2. 新建对应的 JS 模块文件\n3. 在 `index.html` 中按依赖顺序引入\n4. 在模块的 `init()` 方法中绑定事件\n5. `switchTab()` 自动处理 Tab 切换\n\n### 日志\n\n日志同时输出到控制台和 `backend\u002Fdata\u002Fmockmate.log`，格式：\n```\nHH:MM:SS [LEVEL] module: message\n```\n","MockMate 是一款基于 FastAPI 的 AI 面试模拟工具，能够根据用户输入的简历和目标岗位自动生成岗位画像与简历评分，并通过 AI 面试官出题、评分及生成面试报告。其核心功能包括支持语音问答、断点续面、自定义题目以及题目收藏等。项目使用 Python 语言开发，支持多种 AI 提供商如 MiMo、DeepSeek 和通义千问 (Qwen)，以满足不同的需求。适合求职者在准备面试时进行自我评估与练习，帮助提升面试技巧并发现自身不足之处。",2,"2026-06-11 03:55:00","CREATED_QUERY"]