Skip to content

lvecho/habit-word-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

好习惯单词速记学习平台

License Node TypeScript

一个专为K-12阶段学生设计的英语单词学习平台,支持听说读写四维一体的科学学习流程。

✨ 核心特性

🎯 学习功能

  • 5词循环学习 - 科学的微循环学习流程,确保学习效果
  • 听说读写训练 - 全方位单词能力培养
  • 智能语音评测 - 集成讯飞ISE专业发音评测
  • 拼写练习 - 交互式字母格输入,即时反馈
  • 昨日复习 - 首登自动引导,巩固学习成果

📊 智能管理

  • 错误样本机制 - 当日错误>20自动触发错误样本保存
  • 学习统计 - 详细的学习数据分析和可视化展示
  • 年级课程管理 - 智能匹配年级课程,支持多教材版本
  • 进度跟踪 - 实时学习进度和成就展示

👨‍🏫 教师端功能

  • 学生管理 - 账号管理、年级调整、学习监督
  • 成绩分析 - 多维度学习数据分析和导出
  • 课程管理 - CSV批量导入,资源管理
  • 错误诊断 - 7天内发音错误样本回放,90天拼写错误记录

🏗️ 技术架构

后端技术栈

  • 框架: NestJS + TypeScript
  • 数据库: MySQL + TypeORM
  • 缓存: Redis (错误计数/限流)
  • 认证: JWT + Passport
  • 语音评测: 讯飞ISE WebSocket
  • 文件存储: 阿里云OSS + CDN
  • 音频处理: ffmpeg + WebRTC

前端技术栈

  • 框架: React 18 + TypeScript
  • 构建工具: Vite
  • 路由: React Router v6
  • UI: 自定义组件 (Material Design风格)
  • 图表: ECharts
  • 音频: Web Audio API + MediaRecorder

核心业务逻辑

// 5词循环学习流程
interface LearningFlow {
  1: '单词展示' // 图片+音标+释义
  2: '听音跟读' // 讯飞ISE评测
  3: '拼写练习' // 字母格输入
  4: '完成反馈' // 结果展示
  5: '下一单词' // 自动切换
}

// 错误样本触发机制
if (dailyErrors.speak + dailyErrors.spell > 20) {
  triggerErrorSampling(); // 保存到errors/前缀,7天生命周期
}

🚀 快速开始

环境要求

  • Node.js >= 18.0.0
  • MySQL >= 8.0
  • Redis >= 6.0 (可选)

1. 克隆项目

git clone <repository-url>
cd habit-word-learning

2. 环境配置

# 复制环境变量文件
cp .env.example .env

# 编辑 .env 文件配置数据库等信息
vi .env

3. 一键启动开发环境

# 安装依赖 + 启动服务
./scripts/start-dev.sh

4. 初始化数据库

# 导入基础数据
mysql -u root -p habit_word_learning < scripts/init-database.sql

5. 访问应用

测试账号

  • 学生账号: student1 / admin123
  • 教师账号: teacher1 / admin123
  • 管理员: admin / admin123

🔧 开发指南

项目结构

├── frontend/          # React前端应用
│   ├── src/
│   │   ├── components/    # 可复用组件
│   │   ├── pages/         # 页面组件
│   │   ├── services/      # API服务
│   │   ├── hooks/         # 自定义Hook
│   │   └── types/         # TypeScript类型
├── backend/           # NestJS后端API
│   ├── src/
│   │   ├── modules/       # 业务模块
│   │   ├── database/      # 数据模型
│   │   └── common/        # 公共模块
├── scripts/           # 构建和部署脚本
└── docs/             # 项目文档

开发命令

# 安装所有依赖
npm run install:all

# 启动开发服务器
npm run dev

# 类型检查
npm run typecheck

# 代码检查
npm run lint

# 运行测试
npm run test

# 构建生产版本
npm run build

📋 核心业务规则

🔴 业务红线(严格遵守)

  1. 评测方式: 仅支持讯飞ISE"读单词(英文)",禁止自研STT
  2. 错误阈值: 当日累计错误>20触发样本保存,不得随意修改
  3. 数据生命周期: 静态资源长期、raw录音90天、errors录音7天
  4. 签名URL TTL: 静态≤1年、raw≤30天、errors≤7天
  5. 年级选择: 学生一次性选择,教师端可单个修改,禁止批量操作

📊 关键指标

  • 评测延迟: P95 ≤ 2.5s
  • API响应: P95 ≤ 300ms
  • 页面加载: < 3s
  • 音频上传成功率: > 98%
  • 并发限制: ≤2个/用户

🔌 API接口

认证接口

POST /api/auth/login       # 用户登录
POST /api/auth/register    # 用户注册  
POST /api/auth/select-grade # 选择年级
GET  /api/auth/profile     # 获取用户信息

学习接口

POST /api/learning/sessions           # 开始学习会话
GET  /api/learning/sessions/:id       # 获取会话详情
PUT  /api/learning/items/:id          # 更新学习项目
GET  /api/learning/yesterday-words    # 获取昨日单词
GET  /api/learning/stats             # 学习统计

课程接口

GET /api/courses/my                    # 我的课程
GET /api/courses/:id/units            # 课程单元
GET /api/courses/units/:id/learning-group # 学习单词组

🎨 UI设计规范

色彩系统

  • 主色: #2563eb (蓝色)
  • 成功: #10b981 (绿色)
  • 警告: #f59e0b (黄色)
  • 错误: #ef4444 (红色)
  • 文字: #1f2937 (深灰)

组件规范

  • 按钮:圆角8px,最小高度44px
  • 输入框:边框1px,圆角8px,聚焦时蓝色边框
  • 卡片:白色背景,圆角12px,阴影
  • 录音按钮:圆形80px,状态变色

🧪 测试

单元测试

# 后端测试
cd backend && npm test

# 前端测试  
cd frontend && npm test

关键测试场景

  • 5词学习循环完整流程
  • 讯飞ISE评测超时降级
  • 错误样本阈值触发(第21次错误)
  • 首登昨日复习重定向
  • 年级选择锁定机制

📈 部署

生产环境配置

# 构建生产版本
npm run build

# 设置环境变量
export NODE_ENV=production
export DB_HOST=your-production-db
export OSS_ACCESS_KEY_ID=your-key
export ISE_APP_ID=your-app-id

# 启动生产服务
cd backend && npm run start:prod

Docker部署

# 构建镜像
docker build -t habit-word-learning .

# 运行容器
docker run -d -p 3001:3001 \
  -e DB_HOST=your-db \
  -e JWT_SECRET=your-secret \
  habit-word-learning

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

提交规范

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

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

📞 联系我们

如有问题或建议,请提交 Issue 或联系开发团队。


⭐ 如果这个项目对你有帮助,请给一个 Star!

About

好习惯单词速记 - K-12英语单词学习平台 | 听说读写四维一体单词学习系统,集成讯飞ISE语音评测,支持错误样本智能管理

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors