# 词素 **Repository Path**: AchieveMiniMax/morpheme ## Basic Information - **Project Name**: 词素 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-06 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Lexi 词汇学习应用

Spring Boot MyBatis-Plus MySQL 微信小程序 SM-2

> 基于科学遗忘曲线的智能英语词汇学习应用,采用 SM-2 间隔重复算法,帮助用户高效记忆单词。 --- ## 📖 项目简介 Lexi 是一款专注于英语词汇学习的微信小程序应用,结合后端 RESTful API 服务,为用户提供科学、高效的单词记忆方案。 ### 核心特性 - 🧠 **SM-2 间隔重复算法** - 智能计算下次复习时间,基于遗忘曲线优化记忆效果 - 📚 **系统化学习** - 新词学习 + 智能复习双轨并行 - 🎮 **游戏化体验** - 经验值、等级、连续学习天数激励机制 - 📊 **数据统计** - 学习进度可视化,掌握情况一目了然 - 🔐 **JWT 认证** - 安全可靠的用户身份验证 --- ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 微信小程序前端 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 首页 │ │ 学习 │ │ 复习 │ │ 我的 │ │ │ │ (index) │ │ (learn) │ │(review) │ │(profile)│ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ HTTPS/JSON ┌─────────────────────────────────────────────────────────────┐ │ Spring Boot 后端服务 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 用户模块 │ │ 单词模块 │ │ 学习模块 │ │ 复习模块 │ │ │ │ (User) │ │ (Word) │ │ (Learn) │ │(Review) │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 统计模块 │ │ SM-2算法 │ │ JWT认证 │ │ │ │ (Stats) │ │ 引擎 │ │ 拦截器 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ MySQL 8.0 │ │ Redis │ │ 文件存储 │ │ │ │ (主数据库) │ │ (缓存/会话) │ │ (音频/图片) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 🛠️ 技术栈 ### 后端技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Spring Boot | 2.7.18 | 核心框架 | | MyBatis-Plus | 3.5.5 | ORM 框架 | | MySQL | 8.0 | 主数据库 | | Redis | 6.2+ | 缓存/会话 | | JWT | 0.11.5 | 身份认证 | | Maven | 3.6+ | 构建工具 | | Lombok | 1.18.30 | 代码简化 | ### 前端技术栈 | 技术 | 用途 | |------|------| | 微信小程序原生 | 前端框架 | | WXSS | 样式系统 | | JavaScript ES6+ | 脚本语言 | | 微信原生 API | 网络/存储/媒体 | --- ## 📁 项目结构 ``` 05_词素/ ├── Backend/ # 后端项目 │ ├── src/main/java/com/lexi/backend/ │ │ ├── common/ # 公共组件(统一响应、异常处理) │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器层 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── interceptor/ # 拦截器 │ │ ├── mapper/ # 数据访问层 │ │ ├── service/ # 业务层 │ │ └── util/ # 工具类 │ ├── src/main/resources/ │ │ ├── application.yml # 配置文件 │ │ ├── schema.sql # 数据库结构 │ │ └── data.sql # 初始数据 │ ├── pom.xml # Maven配置 │ ├── api.md # API文档 │ ├── architecture.md # 架构设计 │ └── database.md # 数据库设计 │ ├── Frontend/ # 微信小程序 │ ├── pages/ # 页面 │ │ ├── index/ # 首页 │ │ ├── learn/ # 学习页 │ │ ├── review/ # 复习页 │ │ └── profile/ # 个人中心 │ ├── custom-tab-bar/ # 自定义TabBar │ ├── images/ # 图片资源 │ ├── app.js # 应用逻辑 │ ├── app.json # 应用配置 │ └── app.wxss # 全局样式 │ └── PROJECT_PLAN.md # 项目计划文档 ``` --- ## 🚀 快速开始 ### 环境要求 - JDK 11+ - Maven 3.6+ - MySQL 8.0+ - Redis (可选) - 微信开发者工具 ### 后端部署 #### 1. 创建数据库 ```sql CREATE DATABASE IF NOT EXISTS lexibackend DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 2. 配置数据库连接 编辑 `Backend/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/lexibackend?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: your_password ``` #### 3. 编译并启动 ```bash cd Backend mvn clean compile mvn spring-boot:run ``` 服务将启动在 `http://localhost:8080` ### 前端配置 1. 使用微信开发者工具打开 `Frontend` 目录 2. 在 `app.js` 中配置 API 基础地址: ```javascript App({ globalData: { apiBaseUrl: 'http://localhost:8080/api/v1', token: null } }) ``` 3. 开启"不校验合法域名"选项(开发环境) --- ## 📡 API 接口 ### 用户认证 | 接口 | 方法 | 描述 | |------|------|------| | `/api/v1/user/register` | POST | 用户注册 | | `/api/v1/user/login` | POST | 用户登录 | | `/api/v1/user/info` | GET | 获取用户信息 | ### 单词管理 | 接口 | 方法 | 描述 | |------|------|------| | `/api/v1/words` | GET | 获取单词列表 | | `/api/v1/words/{id}` | GET | 获取单词详情 | | `/api/v1/words/search` | GET | 搜索单词 | ### 学习进度 | 接口 | 方法 | 描述 | |------|------|------| | `/api/v1/learn/list` | GET | 获取学习列表 | | `/api/v1/learn/markKnown` | POST | 标记已掌握 | | `/api/v1/learn/progress` | GET | 获取学习进度 | ### 复习系统 | 接口 | 方法 | 描述 | |------|------|------| | `/api/v1/review/list` | GET | 获取复习列表 | | `/api/v1/review/submit` | POST | 提交复习结果 | ### 统计 | 接口 | 方法 | 描述 | |------|------|------| | `/api/v1/stats/user` | GET | 获取用户统计 | | `/api/v1/stats/trend` | GET | 获取学习趋势 | --- ## 🧮 SM-2 间隔重复算法 本项目核心算法采用 SuperMemo-2 间隔重复算法,根据用户对单词的记忆质量动态调整复习间隔。 ### 算法参数 - `n`:重复次数 - `EF`:简易因子 (Easiness Factor),初始值 2.5 - `I`:间隔天数 ### 算法流程 1. 根据用户对单词的记忆质量(0-5分)调整 EF 2. 根据 EF 和重复次数计算下次间隔 3. 更新下次复习时间 ### 实现位置 `Backend/src/main/java/com/lexi/backend/util/SM2Algorithm.java` --- ## 📊 数据库表结构 | 表名 | 说明 | |------|------| | `t_user` | 用户表 | | `t_word` | 单词表 | | `t_user_word` | 用户单词学习记录表 | | `t_user_progress` | 用户进度表 | 详见:`Backend/database.md` --- ## 🎯 功能模块 ### 用户模块 - 用户注册/登录 - JWT Token 认证 - 个人信息管理 ### 单词模块 - 单词列表查询 - 单词详情展示 - 单词搜索 - 分类筛选 ### 学习模块 - 标记单词学习状态 - 学习进度追踪 - 经验值计算 - 等级系统 - 连续学习天数统计 ### 复习模块 - 今日复习列表 - SM-2 算法驱动复习计划 - 复习结果提交 - 下次复习时间计算 ### 统计模块 - 用户学习统计 - 掌握率分析 - 学习趋势图表 --- ## 📈 开发进度 | 模块 | 后端完成度 | 前端完成度 | |------|-----------|-----------| | 基础架构 | ✅ 100% | ✅ 100% | | 用户模块 | ✅ 100% | 🟡 50% | | 单词模块 | ✅ 100% | 🟡 40% | | 学习模块 | ✅ 100% | 🟡 30% | | 复习模块 | ✅ 100% | 🟡 30% | | 统计模块 | ✅ 100% | ⏳ 0% | --- ## 🔒 安全性 - **密码加密**:使用 BCrypt 算法 - **身份认证**:JWT Token 机制 - **跨域支持**:CORS 配置 - **SQL 注入防护**:MyBatis-Plus 参数化查询 --- ## 📝 文档 - [API 文档](Backend/api.md) - [架构设计](Backend/architecture.md) - [数据库设计](Backend/database.md) - [项目计划](PROJECT_PLAN.md) --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request。 --- ## 📄 许可证 MIT License ---

Made with ❤️ by Speak_Lexi Team