Skip to content

考研复试英语口语AI智能体 - 西安高校定制型面试辅导平台

Notifications You must be signed in to change notification settings

blueemp/zenEnglish

Repository files navigation

zenEnglish - 考研复试英语口语AI智能体

面向西安高校考研生的「院校/专业定制型复试英语口语AI导师」

项目简介

zenEnglish 是一个基于AI技术的考研复试英语口语练习平台,专注于西安高校的本地化服务。通过模拟真实导师面试场景,帮助考生在短时间内提升复试英语口语表现。

核心特性

  • 院校/专业深度定制:针对西交、西工大、西电、西外等西安高校的专业题库
  • 导师风格数字孪生:模拟学术深挖型、实践导向型、友好交流型、刻板高压型等导师风格
  • 多维度评分:发音、流利度、词汇多样性、语法准确性、院校匹配度
  • 压力渐进式训练:温和/正常/高压三种模式
  • 实时语音交互:基于Whisper ASR和Edge-TTS的流畅对话体验

项目结构

zenEnglish/
├── backend/                      # 后端服务
│   ├── services/                 # 业务微服务
│   │   ├── user-service/         # 用户服务 (8001)
│   │   ├── question-service/     # 题库服务 (8002)
│   │   ├── practice-service/     # 练习服务 (8003)
│   │   ├── scoring-service/      # 评分服务 (8004)
│   │   ├── report-service/       # 报告服务 (8005)
│   │   ├── payment-service/      # 支付服务 (8006)
│   │   ├── notification-service/ # 通知服务 (8007)
│   │   ├── statistics-service/   # 统计服务 (8008)
│   │   └── subscription-service/ # 订阅服务 (8009)
│   └── ai-services/              # AI服务
│       ├── asr-service/          # 语音识别服务 (9001)
│       ├── tts-service/          # 语音合成服务 (9002)
│       ├── llm-service/          # 大语言模型服务 (9003)
│       ├── agent-orchestrator/   # Agent编排服务 (9004)
│       ├── scoring-engine/       # 评分引擎 (9005)
│       └── error-correction/     # 纠错引擎 (9006)
├── common/                       # 共享代码
│   ├── models/                   # 数据模型
│   ├── schemas/                  # Pydantic schemas
│   ├── utils/                    # 工具函数
│   ├── config/                   # 配置管理
│   ├── db/                       # 数据库工具
│   ├── cache/                    # 缓存工具
│   └── mq/                       # 消息队列工具
├── tests/                        # 测试代码
│   ├── unit/                     # 单元测试
│   ├── integration/              # 集成测试
│   ├── e2e/                      # 端到端测试
│   └── fixtures/                 # 测试fixtures
├── frontend/                     # 前端代码
│   ├── miniprogram/              # 微信小程序
│   ├── web/                      # H5 Web
│   └── admin/                    # 管理后台
├── deploy/                       # 部署配置
│   ├── docker/                   # Docker配置
│   ├── k8s/                      # Kubernetes配置
│   └── nginx/                    # Nginx配置
├── docs/                         # 文档
│   └── api/                      # API文档
├── scripts/                      # 脚本工具
├── PRD.md                        # 产品需求文档
├── HLD.md                        # 高阶设计文档
├── LLD.md                        # 低层设计文档
├── pyproject.toml                # 项目配置
├── pytest.ini                    # 测试配置
└── .env.example                  # 环境变量示例

技术栈

后端

  • 框架: FastAPI 0.104+
  • ORM: SQLAlchemy 2.0+
  • 数据库: MySQL 8.0, MongoDB 6.0, Redis 7.0
  • 消息队列: RabbitMQ 3.12+
  • 异步任务: Celery 5.3+

AI技术

  • ASR: Whisper / Faster-Whisper
  • LLM: Qwen2.5 / DeepSeek
  • Agent编排: LangChain + LangGraph
  • TTS: VITS / Edge-TTS
  • 向量数据库: Milvus 2.3+

前端

  • 框架: uni-app + Vue 3
  • 状态管理: Pinia
  • UI组件: Vant 4.0+

快速开始

环境要求

  • Python 3.12+
  • MySQL 8.0+
  • MongoDB 6.0+
  • Redis 7.0+
  • RabbitMQ 3.12+

安装依赖

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 安装依赖
pip install -e ".[dev]"

配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑.env文件,填入实际配置
vim .env

初始化数据库

# 运行数据库迁移
alembic upgrade head

# 初始化测试数据
python scripts/init_data.py

启动服务

# 启动用户服务
uvicorn backend.services.user_service.main:app --reload --host 0.0.0.0 --port 8001

# 启动题库服务
uvicorn backend.services.question_service.main:app --reload --host 0.0.0.0 --port 8002

# 启动练习服务
uvicorn backend.services.practice_service.main:app --reload --host 0.0.0.0 --port 8003

# 启动评分服务
uvicorn backend.services.scoring_service.main:app --reload --host 0.0.0.0 --port 8004

# 启动ASR服务
uvicorn backend.ai_services.asr_service.main:app --reload --host 0.0.0.0 --port 9001

# 启动TTS服务
uvicorn backend.ai_services.tts_service.main:app --reload --host 0.0.0.0 --port 9002

# 启动LLM服务
uvicorn backend.ai_services.llm_service.main:app --reload --host 0.0.0.0 --port 9003

运行测试

# 运行所有测试
pytest

# 运行单元测试
pytest -m unit

# 运行集成测试
pytest -m integration

# 运行测试并生成覆盖率报告
pytest --cov=. --cov-report=html

# 查看覆盖率报告
open htmlcov/index.html

TDD开发流程

本项目采用测试驱动开发(TDD)模式:

  1. 编写测试:先编写测试用例,描述期望的行为
  2. 运行测试:运行测试,确认测试失败(Red)
  3. 编写代码:编写最少量的代码使测试通过(Green)
  4. 重构:优化代码,保持测试通过(Refactor)
  5. 重复:重复上述过程

TDD示例

# 1. 编写测试 (tests/unit/test_user_service.py)
def test_create_user():
    user_data = {
        "openid": "test_openid",
        "nickname": "Test User"
    }
    user = await user_service.create_user(user_data)
    assert user.id is not None
    assert user.openid == "test_openid"

# 2. 运行测试 (失败)
pytest tests/unit/test_user_service.py::test_create_user

# 3. 编写代码 (backend/services/user_service/service.py)
async def create_user(user_data: dict) -> User:
    user = User(**user_data)
    db.add(user)
    await db.commit()
    await db.refresh(user)
    return user

# 4. 运行测试 (通过)
pytest tests/unit/test_user_service.py::test_create_user

# 5. 重构优化

测试策略

测试金字塔

        /\
       /E2E\      端到端测试 (10%)
      /------\
     /Integration\ 集成测试 (30%)
    /------------\
   /   Unit Tests \  单元测试 (60%)
  /----------------\

测试分类

  • 单元测试: 测试单个函数/方法,使用mock隔离依赖
  • 集成测试: 测试多个模块协作,使用真实数据库/缓存
  • 端到端测试: 测试完整用户流程,使用真实服务

测试标记

# 运行特定类型的测试
pytest -m unit              # 单元测试
pytest -m integration       # 集成测试
pytest -m e2e               # 端到端测试
pytest -m "not slow"        # 排除慢速测试
pytest -m requires_db       # 需要数据库的测试
pytest -m requires_redis    # 需要Redis的测试

代码规范

格式化

# 使用Black格式化代码
black .

# 使用isort整理导入
isort .

代码检查

# 使用Ruff检查代码
ruff check .

# 使用Mypy进行类型检查
mypy .

提交规范

feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具相关

文档

许可证

MIT License

联系方式

About

考研复试英语口语AI智能体 - 西安高校定制型面试辅导平台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published