Skip to content

About

智能面试系统,自学习优化系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

AI 智能面试训练与评估系统

全栈前后端分离项目,由三个可独立部署的服务组成:

  • frontend-react/:React 18 + Vite 8 + Ant Design + ECharts 用户端
  • backend/:Spring Boot 2.7 + MyBatis-Plus 业务与 AI 编排服务
  • PythonApI/:FastAPI + MediaPipe/Librosa 本地音视频特征服务

旧的原生 HTML/CSS/JS 前端已删除,frontend-react/ 是唯一前端。

模型职责

能力 模型 在项目中的职责
语音识别 qwen3-asr-flash 将逐题 MP3 片段转写为中文文本
面试评估 qwen3.8-27b 基于简历、问答和结构化特征输出 JSON 训练报告
语音合成 sambert-zhide-v1 预留用于题目播报;不是语音识别模型
多模态翻译 qwen-mt-uni 预留用于多语种材料翻译;不负责通用视频面试评分

当前 P0 已实现固定八维行为锚点评分、证据/置信度、版本化能力画像、知识缺口、两周学习行动,以及“缺口加权 + 题型覆盖 + 近 30 天去重”的可审计出题。全局“小智”采用 Web 悬浮窗,可拖拽、缩放和最小化;/api/agent/chat 只读查询训练证据,不会发起面试、评分或作招聘决定。TTS、翻译、Embedding 仅预留真实接口且默认关闭,配置方法见 API配置指南.md。

视频默认只在本地提取人脸覆盖、头姿、镜头关注代理和姿态稳定等可观察信号。系统不推断面部/声音情绪、人格、健康或敏感属性,不自动作出录用或淘汰决定。

Docker 启动

  1. 安装 Docker Desktop(Compose v2)。

  2. 创建本地环境文件并填写一枚新生成、最小权限的百炼 Key:

    Copy-Item .env.example .env
    notepad .env
  3. 将 BAILIAN_BASE_URL 中的 {WorkspaceId} 替换为实际业务空间 ID。

  4. 如果不是首次创建数据库卷,按版本顺序执行既有迁移,至少包含 V5__agent_knowledge_memory.sql、V6__question_quality_gate.sql 与 V7__personalized_review_loop.sql;新数据卷会由 Compose 自动执行这些迁移。

  5. 启动:

    docker compose up --build

访问前端 http://localhost,后端 http://localhost:8080。首次启动会用 test.sql 初始化 MySQL。

不要把 API Key 写入源码、YAML、Dockerfile 或提交到版本库。曾在聊天、截图或源码中暴露的 Key 应立即在百炼控制台轮换。

本地启动

前置条件:JDK 8、Maven、Node.js 22、Python 3.10/3.11、MySQL 8、FFmpeg。

# Python 特征服务
cd PythonApI
python -m venv .venv
.\.venv\Scripts\python -m pip install -r requirements.txt
.\.venv\Scripts\python -m uvicorn main:app --app-dir app --port 8000

# Spring Boot(另开终端)
cd backend
$env:DB_PASSWORD = '本地数据库密码'
$env:DASHSCOPE_API_KEY = '新生成的百炼密钥'
$env:BAILIAN_BASE_URL = 'https://你的WorkspaceId.cn-beijing.maas.aliyuncs.com/compatible-mode/v1'
mvn spring-boot:run

# React(另开终端)
cd frontend-react
npm ci
npm run dev

如果 ffmpeg 不在 PATH,设置 FFMPEG_PATH 与 FFPROBE_PATH。

验证

cd frontend-react
npm run build

cd ..\backend
mvn -q test

cd ..\PythonApI
.\.venv\Scripts\python -m unittest discover -s tests -v

架构决策、招聘使用边界、验收标准和后续审批项见 项目优化总方案.md 与 优化实施与审批报告.md。协作开发规则见 AGENTS.md。

本地 RAG 与个性化复习

  • V6__question_quality_gate.sql 为题目增加审核状态、来源和内容指纹;面试只读取 approved 模板题,LLM 生成题默认 pending,必须人工审核后才可能进入面试。
  • V7__personalized_review_loop.sql 保存候选人本人错题对应的相似练习题和复习节奏;它只服务训练,不参与招聘评分或自动决策。
  • Python 服务使用 BGE-M3、Chroma、BM25 与 RRF 对已审核题目检索。RAG_RERANK_ENABLED=false 是安全默认值;确认 BAAI/bge-reranker-large 已下载并完成冒烟测试后,才将其设为 true。

首次建立索引时,在可访问模型源的环境中执行:

$env:AGENT_RAG_ENABLED = 'true'
$env:RAG_STORAGE_PATH = "$PWD\PythonApI\runtime\chroma"
$env:HF_HOME = "$PWD\PythonApI\runtime\hf"
$env:DB_PASSWORD = '本地数据库密码'
cd PythonApI\app
..\.venv\Scripts\python.exe index_questions.py

随后在 .env 中设置 AGENT_RAG_ENABLED=true,重启 Compose。运行时模型和索引均位于 PythonApI/runtime/,已被 Git 忽略。

助手训练记忆

“小智”的原始会话默认不保存。用户需要先开启“保存连续对话”,再单独开启“提炼训练记忆”,并主动点击“提炼本次训练要点”;系统只从已同意的用户发言中提炼稳定的训练偏好、经历或自述待练习点。

  • 原始会话保留 30 天;提炼记忆默认保留 90 天,可通过悬浮窗逐条或全部物理删除。
  • 记忆仅作为“你此前提到”的训练上下文,绝不直接改变掌握度、八维评分或任何招聘决定。
  • 不保存联系方式、证件号、住址、账号、密码和敏感属性;模型未配置或输出不合规则不保存任何记忆。
  • 既有数据库需追加执行 database/migrations/V8__agent_memory_consent_and_retention.sql。

About

智能面试系统,自学习优化系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages