AI教学洞察引擎是一个创新的智能教学辅助平台,通过实时计算机视觉分析、大数据处理和人工智能技术,为教师提供课堂洞察,为学生提供个性化学习建议。
- 📹 实时课堂监控 - 自动分析学生专注度、情绪和行为,无需人工干预
- ⚡ 智能预警系统 - 及时发现课堂问题,帮助教师快速响应
- 🤖 AI助教支持 - 基于通义千问的智能对话,提供教学建议
- 📊 数据驱动决策 - 深度分析历史数据,生成教学效果报告
- 🎯 个性化学习 - 为每个学生定制专属学习路径
- 🏫 K12教育 - 中小学课堂教学质量提升
- 🎓 高等教育 - 大学课堂互动分析
- 💼 企业培训 - 培训效果评估和优化
- 🌐 在线教育 - 远程教学质量监控
利用先进的计算机视觉技术,实时捕捉和分析课堂动态:
- 👤 人脸检测与追踪 - 基于Google MediaPipe,精度>95%,支持多人同时追踪
- 😊 情绪识别 - 识别7种基本情绪(快乐、悲伤、愤怒、惊讶、恐惧、厌恶、中性)
- 🎯 专注度分析 - 0-100分量化评分,综合情绪、姿态、视线方向
- 🙋 行为识别 - 自动识别抬头看黑板、低头做笔记、举手提问、打瞌睡等行为
- 📈 实时指标 - 平均专注度、情绪分布、互动频率等实时统计
基于复杂事件处理(CEP)的多维度预警机制:
⚠️ 专注度预警 - 检测整体或个体专注度异常下降- 😕 困惑情绪预警 - 识别学生理解困难的知识点
- 💤 疲劳预警 - 检测学生疲劳状态,建议调整教学节奏
- 🤐 互动不足预警 - 提醒教师增加课堂互动
- 📱 实时推送 - 通过WebSocket即时通知教师
基于通义千问大语言模型的智能对话系统:
- 💬 自然对话 - 支持多轮对话,理解教师意图
- 📊 数据洞察 - 分析课堂数据,生成教学建议
- 📝 报告生成 - 自动生成教学效果分析报告
- 🎓 知识推荐 - 推荐教学资源和改进方案
- 🔒 数据脱敏 - 保护学生隐私,符合数据安全规范
基于Apache Spark的批处理分析引擎:
- 👨🎓 学生画像构建 - 分析学习风格、薄弱知识点、参与度
- 📚 知识点难度分析 - 识别难点知识,优化教学内容
- 🎯 教学效果评估 - 多维度评估教学质量
- 📊 可视化报告 - 丰富的图表展示,一目了然
为每个学生量身定制的学习方案:
- 🎯 薄弱点识别 - 基于课堂表现识别知识薄弱环节
- 📖 资源推荐 - 推荐针对性学习资源
- 📅 学习计划 - 生成个性化学习时间表
- 📈 进度追踪 - 实时跟踪学习进展
┌─────────────────────────────────────────────────────────────────┐
│ 前端层 (Frontend) │
│ Vue 3 + TypeScript + Element Plus + ECharts + WebSocket │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ API网关层 (API Gateway) │
│ JWT认证 + 请求限流 + 路由代理 + CORS + 健康检查 │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ 微服务层 (Microservices) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ User │ │ Course │ │ LLM │ │ CV │ │
│ │ Service │ │ Service │ │ Service │ │ Service │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │WebSocket │ │ Learning │ │ Health │ │
│ │ Service │ │ Path │ │ Check │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────────▼────────────────────────────────────┐
│ 消息队列层 (Message Queue) │
│ Kafka Cluster (3 Brokers + Zookeeper) │
└──────────────┬─────────────────────────────────┬────────────────┘
│ │
┌──────────────▼──────────────┐ ┌─────────────▼────────────────┐
│ 实时处理 (Stream) │ │ 批处理 (Batch) │
│ Apache Flink │ │ Apache Spark │
│ - 实时指标计算 │ │ - 教学效果分析 │
│ - CEP预警引擎 │ │ - 知识点难度分析 │
│ - 状态管理 │ │ - 学生画像构建 │
└──────────────┬──────────────┘ └─────────────┬────────────────┘
│ │
┌──────────────▼─────────────────────────────────▼────────────────┐
│ 数据存储层 (Data Storage) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │PostgreSQL│ │ClickHouse│ │ Redis │ │ MinIO │ │
│ │ 关系数据 │ │ 时序数据 │ │ 缓存 │ │ 对象存储 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
┌──────────────▼──────────────────────────────────────────────────┐
│ 监控与日志层 (Monitoring & Logging) │
│ Prometheus + Grafana + AlertManager + ELK Stack │
└─────────────────────────────────────────────────────────────────┘
- 框架: Vue 3 + Composition API
- UI库: Element Plus
- 图表: ECharts 5
- 状态管理: Pinia
- 实时通信: WebSocket
- 端口: 8080
| 服务 | 端口 | 职责 | 技术栈 |
|---|---|---|---|
| API Gateway | 5000 | 统一入口、认证、限流 | Flask + Redis |
| User Service | 5001 | 用户认证与授权 | Flask + PostgreSQL + JWT |
| Course Service | 5002 | 课程和教室管理 | Flask + PostgreSQL |
| LLM Service | 5003 | AI助教对话 | Flask + QWEN API |
| Learning Path | 5004 | 学习路径生成 | Flask + PostgreSQL |
| WebSocket | 5005 | 实时推送 | Flask-SocketIO + Redis |
| CV Service | 5300 | 计算机视觉处理 | Flask + MediaPipe + OpenCV |
- PostgreSQL (5432) - 用户、课程、教室等结构化数据
- ClickHouse (8123/9000) - 课堂事件、指标等时序数据,3节点集群
- Redis (6379) - 会话、缓存、限流计数器
- MinIO (9001/9002) - 视频、图片等对象存储
- Kafka (9092/9093/9094) - 3个broker集群,高可用
- Zookeeper (2181) - Kafka协调服务
- Flink (8081) - 实时流处理,<100ms延迟
- Spark - 批处理分析,定时任务调度
- Prometheus (9090) - 指标收集
- Grafana (3001) - 可视化监控
- AlertManager (9099) - 告警管理
- Elasticsearch (9200) - 日志存储
- Logstash (5044) - 日志处理
- Kibana (5601) - 日志查询
- Docker 20.10+ 和 Docker Compose 2.0+
- Python 3.11+
- Node.js 18+ 和 npm 9+
- Git
- Java 11+ 和 Maven 3.8+ (Flink/Spark开发)
- kubectl (Kubernetes部署)
- Helm 3.0+ (Kubernetes包管理)
- CPU: 8核心以上
- 内存: 16GB以上
- 磁盘: 50GB可用空间
- 摄像头: 用于CV服务测试(可选)
这是最简单的启动方式,只需一条命令即可体验核心的计算机视觉功能。
# 1. 克隆项目
git clone <repository-url>
cd ai-teaching-insight-engine
# 2. 一键启动
./start-cv-only.sh
# 3. 访问测试页面
# 浏览器打开: http://localhost:5300/static/index.html测试步骤:
-
在网页界面输入配置:
- 教室ID:
classroom_001 - 摄像头URL:
0(使用本地摄像头) 或视频文件路径 - 目标帧率:
10 - 处理间隔:
每2帧处理一次 - 检测精度:
平衡模式
- 教室ID:
-
点击"启动视频流"
-
观察实时检测结果:
- 视频预览中的人脸检测框
- 学生追踪列表
- 情绪和专注度数据
- FPS统计
启动所有服务,体验完整功能。
# 1. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置必要的配置(如QWEN_API_KEY)
# 2. 启动所有服务
docker-compose up -d
# 3. 等待服务启动(约2-3分钟)
docker-compose ps
# 4. 访问前端应用
# 浏览器打开: http://localhost:8080服务访问地址:
- 前端应用: http://localhost:8080
- API网关: http://localhost:5000
- CV服务测试页: http://localhost:5300/static/index.html
- Flink Dashboard: http://localhost:8081
- Grafana监控: http://localhost:3001 (admin/admin123)
- Kibana日志: http://localhost:5601
适合开发调试,只启动基础设施,应用服务本地运行。
# 1. 启动基础设施(PostgreSQL, Redis, Kafka, ClickHouse)
docker-compose -f docker-compose.dev.yml up -d
# 2. 安装Python依赖
cd backend/user-service && pip install -r requirements.txt
cd ../course-service && pip install -r requirements.txt
# ... 其他服务类似
# 3. 启动后端服务(每个服务在单独终端)
cd backend/api-gateway && python app.py
cd backend/user-service && python app.py
cd backend/course-service && python app.py
cd backend/llm-service && python app.py
cd cv-service && python app.py
# 4. 启动前端
cd frontend
npm install
npm run dev# 检查所有服务状态
./test-services.sh
# 或手动检查
curl http://localhost:5000/health # API Gateway
curl http://localhost:5001/health # User Service
curl http://localhost:5002/health # Course Service
curl http://localhost:5300/health # CV Service# 检查Docker
docker --version
docker-compose --version
# 检查Python
python --version # 应该是 3.11+
# 检查Node.js
node --version # 应该是 18+
npm --version # 应该是 9+
# 检查可用端口
lsof -i :5432 # PostgreSQL
lsof -i :6379 # Redis
lsof -i :9092 # Kafka
lsof -i :8080 # Frontend
lsof -i :5300 # CV Service# 克隆项目
git clone <repository-url>
cd ai-teaching-insight-engine
# 创建环境变量文件
cp .env.example .env
# 编辑配置(重要!)
vim .env
# 必须配置:
# - QWEN_API_KEY=你的通义千问API密钥
# - JWT_SECRET=强密码(生产环境)
# - 数据库密码(生产环境)# 使用开发配置启动基础设施
docker-compose -f docker-compose.dev.yml up -d
# 查看启动日志
docker-compose -f docker-compose.dev.yml logs -f
# 等待所有服务就绪(约30秒)# 检查容器状态
docker-compose -f docker-compose.dev.yml ps
# 应该看到以下服务都是 Up 状态:
# - postgres
# - redis
# - zookeeper
# - kafka
# - clickhouse
# 测试PostgreSQL连接
docker exec -it <postgres_container> psql -U admin -d teaching_insight -c "SELECT 1"
# 测试Redis连接
docker exec -it <redis_container> redis-cli ping
# 测试Kafka
docker exec -it <kafka_container> kafka-topics --list --bootstrap-server localhost:9092
# 测试ClickHouse
curl http://localhost:8123/ping# ClickHouse会自动执行 clickhouse/init-db.sql
# 验证表是否创建
docker exec -it <clickhouse_container> clickhouse-client --user admin --password admin123 --query "SHOW TABLES FROM teaching_insight"
# 应该看到:
# - classroom_events
# - classroom_metrics# 为每个服务安装依赖
cd backend/api-gateway
pip install -r requirements.txt
cd ../user-service
pip install -r requirements.txt
cd ../course-service
pip install -r requirements.txt
cd ../llm-service
pip install -r requirements.txt
cd ../learning-path-service
pip install -r requirements.txt
cd ../websocket-service
pip install -r requirements.txt
cd ../../cv-service
pip install -r requirements.txt终端1 - User Service
cd backend/user-service
export FLASK_ENV=development
export DATABASE_URL=postgresql://admin:admin123@localhost:5432/teaching_insight
export REDIS_URL=redis://localhost:6379/0
export JWT_SECRET_KEY=your-secret-key
python app.py
# 应该看到: Running on http://0.0.0.0:5001终端2 - Course Service
cd backend/course-service
export FLASK_ENV=development
export DATABASE_URL=postgresql://admin:admin123@localhost:5432/teaching_insight
export REDIS_URL=redis://localhost:6379/0
python app.py
# 应该看到: Running on http://0.0.0.0:5002终端3 - LLM Service
cd backend/llm-service
export FLASK_ENV=development
export DATABASE_URL=postgresql://admin:admin123@localhost:5432/teaching_insight
export REDIS_URL=redis://localhost:6379/0
export QWEN_API_KEY=你的API密钥
python app.py
# 应该看到: Running on http://0.0.0.0:5003终端4 - Learning Path Service
cd backend/learning-path-service
export FLASK_ENV=development
export DATABASE_URL=postgresql://admin:admin123@localhost:5432/teaching_insight
export REDIS_URL=redis://localhost:6379/0
python app.py
# 应该看到: Running on http://0.0.0.0:5004终端5 - WebSocket Service
cd backend/websocket-service
export FLASK_ENV=development
export REDIS_URL=redis://localhost:6379/0
python app.py
# 应该看到: Running on http://0.0.0.0:5005终端6 - CV Service
cd cv-service
export FLASK_ENV=development
export KAFKA_BOOTSTRAP_SERVERS=localhost:9092
export SERVICE_PORT=5300
python app.py
# 应该看到: Running on http://0.0.0.0:5300终端7 - API Gateway
cd backend/api-gateway
export FLASK_ENV=development
export REDIS_HOST=localhost
export REDIS_PORT=6379
export JWT_SECRET=your-secret-key
export USER_SERVICE_URL=http://localhost:5001
export COURSE_SERVICE_URL=http://localhost:5002
export LLM_SERVICE_URL=http://localhost:5003
export CV_SERVICE_URL=http://localhost:5300
python app.py
# 应该看到: Running on http://0.0.0.0:5000# 测试所有服务的健康检查
curl http://localhost:5000/health | jq # API Gateway
curl http://localhost:5001/health | jq # User Service
curl http://localhost:5002/health | jq # Course Service
curl http://localhost:5003/health | jq # LLM Service
curl http://localhost:5004/health | jq # Learning Path
curl http://localhost:5005/health | jq # WebSocket
curl http://localhost:5300/health | jq # CV Service
# 或使用测试脚本
./test-services.shcd frontend
npm install# 创建开发环境配置
cat > .env.development << EOF
VITE_API_BASE_URL=http://localhost:5000/api
VITE_WS_URL=ws://localhost:5005
EOF终端8 - Frontend
cd frontend
npm run dev
# 应该看到: Local: http://localhost:8080打开浏览器访问: http://localhost:8080
# 注册教师账号
curl -X POST http://localhost:5000/api/users/register \
-H "Content-Type: application/json" \
-d '{
"username": "teacher1",
"password": "password123",
"role": "TEACHER",
"real_name": "张老师",
"email": "teacher1@example.com"
}'
# 登录获取JWT令牌
curl -X POST http://localhost:5000/api/users/login \
-H "Content-Type: application/json" \
-d '{
"username": "teacher1",
"password": "password123"
}'
# 保存返回的access_token,后续请求需要使用方式A:使用Web界面(推荐)
- 访问: http://localhost:5300/static/index.html
- 填写配置:
- 教室ID:
classroom_001 - 摄像头URL:
0(本地摄像头) 或视频文件路径 - 目标帧率:
10 - 处理间隔:
每2帧处理一次
- 教室ID:
- 点击"启动视频流"
- 观察实时检测结果
方式B:使用API
# 启动视频流
curl -X POST http://localhost:5300/api/cv/stream/start \
-H "Content-Type: application/json" \
-d '{
"classroom_id": "classroom_001",
"camera_url": "0",
"target_fps": 10,
"process_every_n_frames": 2
}'
# 保存返回的stream_id
# 查看流状态
curl http://localhost:5300/api/cv/stream/stats/<stream_id> | jq
# 查看学生状态
curl http://localhost:5300/api/cv/stream/states/<stream_id> | jq
# 停止视频流
curl -X POST http://localhost:5300/api/cv/stream/stop \
-H "Content-Type: application/json" \
-d '{"stream_id": "<stream_id>"}'# 监听课堂事件
docker exec -it <kafka_container> kafka-console-consumer \
--bootstrap-server localhost:9092 \
--topic classroom-events \
--from-beginning
# 启动CV服务后,应该能看到实时事件消息# 查询课堂事件
docker exec -it <clickhouse_container> clickhouse-client \
--user admin --password admin123 \
--query "SELECT * FROM teaching_insight.classroom_events LIMIT 10"
# 查询课堂指标
docker exec -it <clickhouse_container> clickhouse-client \
--user admin --password admin123 \
--query "SELECT * FROM teaching_insight.classroom_metrics LIMIT 10"问题:端口被占用
# 查找占用端口的进程
lsof -i :5432 # 或其他端口
# 杀死进程
kill -9 <PID>问题:Docker容器启动失败
# 查看容器日志
docker-compose -f docker-compose.dev.yml logs <service_name>
# 重启容器
docker-compose -f docker-compose.dev.yml restart <service_name>
# 完全重建
docker-compose -f docker-compose.dev.yml down
docker-compose -f docker-compose.dev.yml up -d --force-recreate问题:Kafka启动失败
# Kafka需要Zookeeper先启动
# 使用按序启动脚本
./start-infrastructure.sh
# 或手动按顺序启动
docker-compose -f docker-compose.dev.yml up -d zookeeper
sleep 10
docker-compose -f docker-compose.dev.yml up -d kafka问题:无法连接Kafka
# 检查Kafka是否就绪
docker exec -it <kafka_container> kafka-broker-api-versions \
--bootstrap-server localhost:9092
# 检查topic是否存在
docker exec -it <kafka_container> kafka-topics \
--list --bootstrap-server localhost:9092问题:摄像头无法打开
# 检查摄像头权限(macOS)
# 系统偏好设置 > 安全性与隐私 > 摄像头
# 尝试不同的摄像头ID
# 在Web界面尝试: 0, 1, 2
# 使用视频文件测试
# 摄像头URL输入: /path/to/video.mp4问题:检测精度不够
cd cv-service
./set_accuracy_mode.sh
# 选择 1 (高精度模式)问题:性能太慢
# 在Web界面调整:
# - 处理间隔: 每3帧或每5帧
# - 目标帧率: 5-8 FPS
# - 检测精度: 高召回模式问题:PostgreSQL连接失败
# 检查容器状态
docker-compose -f docker-compose.dev.yml ps postgres
# 检查日志
docker-compose -f docker-compose.dev.yml logs postgres
# 测试连接
docker exec -it <postgres_container> psql -U admin -d teaching_insight问题:ClickHouse查询慢
# 检查表大小
docker exec -it <clickhouse_container> clickhouse-client \
--user admin --password admin123 \
--query "SELECT table, formatReadableSize(sum(bytes)) as size
FROM system.parts
WHERE database = 'teaching_insight'
GROUP BY table"
# 优化查询(添加时间范围)
# WHERE timestamp >= now() - INTERVAL 1 DAY问题:前端无法连接后端
# 检查API Gateway是否运行
curl http://localhost:5000/health
# 检查CORS配置
# 在 backend/api-gateway/app.py 中确认 CORS_ORIGINS 包含前端地址
# 检查浏览器控制台
# F12 > Console > 查看错误信息问题:WebSocket连接失败
# 检查WebSocket服务
curl http://localhost:5005/health
# 检查Redis连接
docker exec -it <redis_container> redis-cli ping# 实时查看所有日志
tail -f logs/*.log
# 查看特定服务日志
tail -f logs/cv-service.log
tail -f logs/api-gateway.log
# 搜索错误
grep -i error logs/*.log
grep -i warning logs/*.log# Docker容器资源使用
docker stats
# 系统资源使用(macOS)
top -l 1 | grep "CPU usage"
vm_stat
# 磁盘使用
df -h# API压力测试(需要安装 apache-bench)
ab -n 1000 -c 10 http://localhost:5000/health
# CV服务性能测试
cd cv-service
python test_performance_optimization.py# 停止所有Python进程
pkill -f "python app.py"
# 停止前端
pkill -f "npm run dev"
# 停止Docker容器
docker-compose -f docker-compose.dev.yml down
# 或使用停止脚本
./stop-dev.sh# 清理Docker数据卷(会删除所有数据!)
docker-compose -f docker-compose.dev.yml down -v
# 清理日志
rm -rf logs/*.log
# 清理Python缓存
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || trueai-teaching-insight-engine/
├── 📱 frontend/ # Vue 3 前端应用
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── components/ # Vue组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia状态管理
│ │ ├── types/ # TypeScript类型
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面组件
│ ├── package.json
│ └── vite.config.ts
│
├── 🔧 backend/ # Python Flask 微服务
│ ├── api-gateway/ # API网关 (5000)
│ │ ├── app.py
│ │ ├── config.py
│ │ └── requirements.txt
│ ├── user-service/ # 用户服务 (5001)
│ │ ├── app.py
│ │ ├── models/
│ │ ├── routes/
│ │ └── utils/
│ ├── course-service/ # 课程服务 (5002)
│ ├── llm-service/ # LLM服务 (5003)
│ ├── learning-path-service/ # 学习路径 (5004)
│ ├── websocket-service/ # WebSocket (5005)
│ └── monitoring_utils.py # 监控工具
│
├── 📹 cv-service/ # 计算机视觉服务 (5300)
│ ├── app.py # Flask应用
│ ├── video_capture.py # 视频采集
│ ├── face_detector.py # 人脸检测
│ ├── emotion_recognizer.py # 情绪识别
│ ├── attention_analyzer.py # 专注度分析
│ ├── tracker.py # 学生追踪
│ ├── stream_manager.py # 流管理
│ ├── event_producer.py # Kafka生产者
│ ├── static/ # 测试页面
│ └── tests/ # 测试用例
│
├── 🌊 flink-jobs/ # Flink 流处理作业 (Java)
│ ├── src/main/java/
│ │ └── com/teaching/insight/flink/
│ │ ├── ClassroomStreamingJob.java
│ │ ├── config/
│ │ ├── deserializer/
│ │ └── model/
│ └── pom.xml
│
├── ⚡ spark-jobs/ # Spark 批处理作业 (Java)
│ ├── src/main/java/
│ │ └── com/teaching/insight/spark/
│ │ ├── SparkJobApplication.java
│ │ ├── config/
│ │ ├── datasource/
│ │ ├── job/
│ │ │ ├── TeachingEffectivenessAnalysisJob.java
│ │ │ ├── KnowledgePointDifficultyAnalysisJob.java
│ │ │ └── StudentProfileBuildingJob.java
│ │ └── scheduler/
│ └── pom.xml
│
├── 🗄️ clickhouse/ # ClickHouse 配置
│ ├── config.xml
│ ├── users.xml
│ └── init-db.sql # 数据库初始化脚本
│
├── ☸️ kubernetes/ # Kubernetes 部署配置
│ ├── deploy.sh # 部署脚本
│ ├── *-deployment.yaml # 各服务部署配置
│ ├── configmaps.yaml
│ ├── secrets.yaml
│ └── ingress.yaml
│
├── 📊 monitoring/ # 监控配置
│ ├── prometheus/
│ │ ├── prometheus.yml
│ │ └── alerts.yml
│ ├── grafana/
│ │ └── dashboards/
│ ├── alertmanager/
│ │ └── alertmanager.yml
│ └── logstash/
│ └── logstash.conf
│
├── 🧪 tests/ # 集成测试
│ └── integration/
│
├── 📜 scripts/ # 工具脚本
│ ├── setup-dev.sh
│ └── validate-docker-setup.sh
│
├── 📚 docs/ # 文档
│
├── 🐳 docker-compose.yml # 完整系统Docker配置
├── 🐳 docker-compose.dev.yml # 开发环境简化配置
├── 📋 Makefile # 构建和部署命令
├── 🚀 start-cv-only.sh # 快速启动CV服务
├── 🛑 stop-dev.sh # 停止所有服务
├── ✅ test-services.sh # 测试服务状态
├── .env.example # 环境变量示例
├── .gitignore
└── 📖 README.md # 本文档
# 后端服务测试
cd backend/user-service
pytest tests/ -v
# CV服务测试
cd cv-service
pytest tests/ -v
# 前端测试
cd frontend
npm run test
# Flink作业测试
cd flink-jobs
mvn test
# Spark作业测试
cd spark-jobs
mvn test项目使用属性测试(Property-Based Testing)验证系统正确性:
# CV服务属性测试
cd cv-service
pytest tests/test_video_capture_properties.py -v
# 后端服务属性测试
cd backend
pytest test_*_properties.py -v
# Flink作业属性测试
cd flink-jobs
mvn test -Dtest=*PropertyTest# 运行所有集成测试
cd tests/integration
pytest -v
# 运行特定测试
pytest test_e2e_data_flow.py -v
pytest test_ai_assistant_flow.py -v- 处理帧率: ≥10 FPS(经属性测试验证)
- 人脸检测精度: >95%
- 情绪识别准确率: >85%
- 专注度分析延迟: <50ms
- 事件处理延迟: <100ms(经属性测试验证)
- 吞吐量: >10,000 events/sec
- Checkpoint时间: <60s
- 并发课堂数: 100+(通过HPA扩展)
- 并发用户数: 10,000+
- 数据保留: 课堂事件6个月,指标1年
- 📘 START_HERE.md - 从这里开始(最简单的启动方式)
- 📋 QUICK_REFERENCE.md - 快速参考卡片
- ✅ CHECKLIST.md - 启动检查清单
- 🔧 DEV_SETUP.md - 完整开发环境设置
- 🆘 TROUBLESHOOTING.md - 完整的故障排除指南
- 📝 ALL_FIXED.md - 已修复问题总结
- 🎯 cv-service/ACCURACY_SETUP.md - 精度设置指南
- ⚡ cv-service/PERFORMANCE_OPTIMIZATION.md - 性能优化指南
- 🏗️ cv-service/MODEL_ARCHITECTURE.md - 模型架构说明
- 📖 cv-service/README.md - CV服务完整文档
- 🚪 backend/api-gateway/README.md - API网关文档
- 🤖 backend/llm-service/README.md - LLM服务文档
- 🔌 backend/websocket-service/README.md - WebSocket服务文档
- 🌊 flink-jobs/README.md - Flink流处理文档
- ⚡ spark-jobs/README.md - Spark批处理文档
- 🗄️ backend/DATA_MODEL_README.md - 数据模型文档
- ☸️ kubernetes/README.md - Kubernetes部署指南
- 🐳 Docker部署说明 - 见本文档
- 🤝 CONTRIBUTING.md - 贡献指南
- JWT令牌: 所有API请求需要JWT认证
- 角色权限: 基于角色的访问控制(RBAC)
- 密码加密: 使用bcrypt加密存储
- 数据脱敏: LLM服务自动脱敏敏感信息
- 访问日志: 记录所有数据访问操作
- 加密传输: HTTPS/WSS加密通信
- 最小化采集: 只采集必要的课堂数据
- 数据保留: 自动清理过期数据(TTL策略)
- 匿名化: 支持数据匿名化处理
# 1. 配置kubectl
kubectl config use-context <your-cluster>
# 2. 创建命名空间
kubectl create namespace teaching-insight
# 3. 配置secrets(重要!)
# 编辑 kubernetes/secrets.yaml,替换所有密码和密钥
vim kubernetes/secrets.yaml
# 4. 执行部署
cd kubernetes
./deploy.sh
# 5. 验证部署
kubectl get pods -n teaching-insight
kubectl get services -n teaching-insight
kubectl get hpa -n teaching-insight详细部署文档请参考: kubernetes/README.md
# 1. 初始化Swarm
docker swarm init
# 2. 部署Stack
docker stack deploy -c docker-compose.yml teaching-insight
# 3. 查看服务
docker stack services teaching-insight
# 4. 扩展服务
docker service scale teaching-insight_cv-service=5生产环境自动部署完整的监控体系:
- Prometheus: http://your-domain/prometheus
- Grafana: http://your-domain/grafana (admin/admin123)
- AlertManager: http://your-domain/alertmanager
- Kibana: http://your-domain/kibana
项目包含完整的CI/CD流程:
# .github/workflows/ci.yml
- 代码检查(Lint)
- 单元测试
- 集成测试
- Docker镜像构建
- 自动部署到测试环境# 1. 构建所有Docker镜像
make docker-build
# 2. 推送到镜像仓库
docker tag ai-teaching-insight/api-gateway:latest your-registry/api-gateway:latest
docker push your-registry/api-gateway:latest
# ... 其他镜像类似
# 3. 更新Kubernetes配置
kubectl set image deployment/api-gateway \
api-gateway=your-registry/api-gateway:latest \
-n teaching-insight
# 4. 验证部署
kubectl rollout status deployment/api-gateway -n teaching-insight我们欢迎所有形式的贡献!
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交Pull Request
- Python: 遵循PEP 8,使用black格式化
- TypeScript: 使用ESLint配置
- Java: 遵循Google Java Style Guide
- 提交信息: 使用语义化提交(feat/fix/docs/style/refactor/test/chore)
所有代码提交必须包含测试:
- 单元测试覆盖率 ≥ 80%
- 属性测试覆盖核心功能
- 集成测试覆盖关键流程
详细贡献指南请参考: CONTRIBUTING.md
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 项目负责人: [Your Name]
- 技术架构: [Architect Name]
- 前端开发: [Frontend Team]
- 后端开发: [Backend Team]
- 算法工程: [AI Team]
感谢以下开源项目:
- Vue.js - 渐进式JavaScript框架
- Flask - Python Web框架
- MediaPipe - 跨平台机器学习解决方案
- Apache Kafka - 分布式流处理平台
- Apache Flink - 流处理框架
- Apache Spark - 大数据处理引擎
- ClickHouse - 列式数据库
- Element Plus - Vue 3 UI组件库
- ECharts - 数据可视化库
- 问题反馈: GitHub Issues
- 功能建议: GitHub Discussions
- 邮件: contact@example.com
- 官网: https://example.com
- ✅ 实时课堂监控
- ✅ 智能预警系统
- ✅ AI助教对话
- ✅ 学生画像构建
- 🔄 多语言支持
- 🔄 移动端应用
- 🔄 离线模式
- 🔄 更多AI模型集成
- 📋 虚拟现实课堂
- 📋 自适应学习系统
- 📋 区块链证书
- 📋 联邦学习支持
⭐ 如果这个项目对你有帮助,请给我们一个Star!⭐
Made with ❤️ by AI Teaching Insight Team