From 05a79b529a527f3d24e2950cd7a7c76c0f76c0af Mon Sep 17 00:00:00 2001
From: ouyu <1986834078@qq.com>
Date: Mon, 20 Apr 2026 20:25:58 +0800
Subject: [PATCH] =?UTF-8?q?docs:=20=E9=87=8D=E5=86=99=20README=20=E6=96=87?=
=?UTF-8?q?=E6=A1=A3=E4=BB=A5=E5=85=A8=E9=9D=A2=E4=BB=8B=E7=BB=8D=20GRE=20?=
=?UTF-8?q?=E8=AF=8D=E6=B1=87=E5=AD=A6=E4=B9=A0=E5=BA=94=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
重构 README 文档结构,详细描述项目功能、技术栈、安装指南和使用说明
新增项目结构、数据结构和核心组件说明
完善部署说明和贡献指南
---
README.md | 409 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 399 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 36b0197..5250156 100644
--- a/README.md
+++ b/README.md
@@ -2,19 +2,408 @@
-# Run and deploy your AI Studio app
+# GRE Vocabulary Builder - GRE 词汇学习应用
-This contains everything you need to run your app locally.
+一个基于 **间隔重复系统 (Spaced Repetition System, SRS)** 的现代化 GRE 词汇学习应用,帮助考生高效记忆 GRE 核心词汇。
-View your app in AI Studio: https://ai.studio/apps/drive/1VlzJ43yikTZOm1ZmNSsXBZOP_kt5SHyR
+## 目录
-## Run Locally
+- [项目简介](#项目简介)
+- [核心功能](#核心功能)
+- [技术栈](#技术栈)
+- [安装与运行](#安装与运行)
+- [使用指南](#使用指南)
+- [数据结构](#数据结构)
+- [部署说明](#部署说明)
+- [项目结构](#项目结构)
-**Prerequisites:** Node.js
+## 项目简介
+GRE Vocabulary Builder 是一个专为 GRE 考生设计的词汇学习工具。它采用科学的 **间隔重复学习法**,根据用户对单词的掌握程度智能安排复习计划,帮助用户在最短时间内高效记忆大量 GRE 核心词汇。
-1. Install dependencies:
- `npm install`
-2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
-3. Run the app:
- `npm run dev`
+该应用不仅提供基础的单词闪卡学习,还包含:
+- 思维导图式的单词关系展示
+- 自定义单词列表功能
+- 智能分类和难度追踪
+- 数据持久化和备份
+
+## 核心功能
+
+### 📚 闪卡学习系统
+
+- **单词卡片**:显示单词、词性、中文定义
+- **记忆辅助**:
+ - 词根词缀记忆法提示
+ - 谐音/联想记忆技巧
+ - 例句展示
+ - 同义词、反义词列表
+ - 派生词扩展
+ - 易混淆词辨析
+
+### 🔄 间隔重复系统 (SRS)
+
+- **8级复习间隔**:1天 → 3天 → 7天 → 14天 → 30天 → 60天 → 120天 → 240天
+- **智能调整**:
+ - 答对单词:SRS 等级提升,复习间隔延长
+ - 答错单词:SRS 等级降低(降至约1/2),次日必须复习
+- **可自定义**:用户可以在设置中调整各等级的间隔天数
+
+### 🧠 测验模式
+
+- **随机测试**:对当前列表中的单词进行随机测验
+- **即时反馈**:答题后立即统计正确率
+- **进度追踪**:自动记录每次答题结果并更新 SRS 状态
+
+### 🗺️ 词汇思维导图
+
+- **主题分类**:按语义主题分组展示相关单词
+- **关系网络**:
+ - 同义词组
+ - 反义词组
+ - 易混淆词辨析
+- **主题示例**:
+ - 变化与稳定
+ - 批评与赞扬
+ - 清晰与模糊
+ - 常见与新颖
+ - 固执与顺从
+ - 敌意与友好
+ - 短暂与持久
+ - 虚假与真实
+
+### 📋 智能列表系统
+
+#### 自动生成的列表
+
+| 列表名称 | 说明 |
+|---------|------|
+| **Today's Review** | 今日需要复习的单词(基于 SRS 系统) |
+| **My Favorites** | 用户标记为收藏的单词 |
+| **Difficult Words** | 基于答题统计的难词列表(动态难度评分) |
+| **Known Words** | 用户标记为"已掌握"的单词 |
+
+#### 自定义列表
+
+- 创建任意数量的私人单词列表
+- 自由添加/移除单词
+- 适用于:
+ - 按特定主题整理单词
+ - 临时冲刺复习
+ - 错题整理
+
+### 📅 复习日历
+
+- **月度概览**:以日历形式展示未来的复习安排
+- **每日详情**:点击任意日期查看当天需要复习的单词列表
+- **视觉提示**:当天日期高亮显示,有复习任务的日期显示单词数量
+
+### 💾 数据管理
+
+- **本地存储**:所有学习进度自动保存到浏览器 localStorage
+- **数据导出**:将进度导出为 JSON 文件(`gre_vocab_progress.json`)
+- **数据导入**:从文件恢复学习进度
+- **跨会话记忆**:自动记住用户上次浏览的位置
+
+## 技术栈
+
+| 类别 | 技术 |
+|------|------|
+| **前端框架** | React 19.1.1 |
+| **语言** | TypeScript 5.8.2 |
+| **构建工具** | Vite 6.2.0 |
+| **样式方案** | Tailwind CSS(内联类名) |
+| **AI 集成** | @google/genai 1.16.0(Gemini API) |
+
+## 安装与运行
+
+### 前置要求
+
+- Node.js (建议 v18 或更高版本)
+- npm 或 yarn
+
+### 本地安装
+
+1. **克隆项目**
+
+```bash
+git clone
+cd GRE-Basewords-Learning
+```
+
+2. **安装依赖**
+
+```bash
+npm install
+```
+
+3. **配置环境变量(可选)**
+
+项目支持 Google Gemini AI 集成(用于未来扩展功能)。如需使用,请创建 `.env.local` 文件:
+
+```bash
+# .env.local
+GEMINI_API_KEY=your_gemini_api_key_here
+```
+
+> 注意:当前版本的核心功能不需要 API Key,仅用于未来的 AI 增强功能。
+
+4. **启动开发服务器**
+
+```bash
+npm run dev
+```
+
+应用将在 `http://localhost:5173/` 启动(Vite 默认端口)。由于配置了 `--host 0.0.0.0`,也可以通过局域网 IP 访问。
+
+### 生产构建
+
+```bash
+npm run build
+```
+
+构建产物将输出到 `dist/` 目录,部署路径前缀设为 `/GRE-Basewords-Learning/`(适配 GitHub Pages)。
+
+### 预览生产构建
+
+```bash
+npm run preview
+```
+
+## 使用指南
+
+### 基本学习流程
+
+1. **选择单词列表**
+ - 从左侧边栏选择一个 Section 或智能列表
+ - 或使用自定义列表
+
+2. **闪卡学习**
+ - 查看单词和词性
+ - 点击卡片中央的"Reveal"区域显示定义和详细信息
+ - 再次点击隐藏定义,测试记忆
+
+3. **进行测验**
+ - 点击卡片下方的 "Quiz Me" 按钮
+ - 查看单词,回忆定义后点击 "Show Definition"
+ - 根据实际掌握情况选择 "I Knew It" 或 "Didn't Know"
+ - 测验完成后显示本次正确率
+
+4. **管理单词状态**
+ - **收藏**:点击星标图标标记为收藏
+ - **标记已掌握**:点击复选框标记为"已知",将从常规学习列表中移除
+ - **添加到列表**:通过顶部菜单将单词添加到自定义列表
+
+### 高级功能
+
+#### 查看思维导图
+
+1. 点击卡片下方的 "Mind Map" 按钮
+2. 浏览按主题分类的单词网络
+3. 悬停在单词上查看简要定义
+4. 查看同义词、反义词、易混淆词辨析
+
+#### 使用复习日历
+
+1. 在边栏的 "Today's Review" 旁点击日历图标
+2. 切换月份查看不同时间的复习安排
+3. 点击有复习任务的日期查看具体单词列表
+
+#### 自定义 SRS 间隔
+
+1. 点击右上角设置图标
+2. 在 "SRS Intervals" 部分调整各等级的间隔天数
+3. 点击 "Reset to Default" 恢复默认设置
+4. 点击 "Save Changes" 保存
+
+#### 数据备份与恢复
+
+**导出数据:**
+1. 打开设置
+2. 点击 "Export Data" 按钮
+3. 文件将自动下载(命名为 `gre_vocab_progress.json`)
+
+**导入数据:**
+1. 打开设置
+2. 点击 "Import Data" 按钮
+3. 选择之前导出的 JSON 文件
+4. 导入成功后进度将被覆盖
+
+## 数据结构
+
+### 单词数据结构 (`Vocabulary`)
+
+```typescript
+interface Vocabulary {
+ word: string; // 单词
+ pos: string; // 词性 (如: adj., n., v.)
+ definition: string; // 中文定义
+ examples?: string[]; // 例句
+ notes?: string; // 记忆技巧/注释
+ derivatives?: Derivative[]; // 派生词
+ antonyms?: string[]; // 反义词
+ synonyms?: string[]; // 同义词
+ distinctions?: string[]; // 易混淆词辨析
+}
+```
+
+### 学习统计数据 (`WordStats`)
+
+```typescript
+interface WordStats {
+ isFavorite: boolean; // 是否收藏
+ correctCount: number; // 答对次数
+ incorrectCount: number; // 答错次数
+ srsLevel: number; // 当前 SRS 等级 (0-8)
+ nextReview: string | null; // 下次复习日期 (YYYY-MM-DD)
+ isKnown: boolean; // 是否已标记为掌握
+ lastReviewed: string | null; // 最后复习日期
+}
+```
+
+### 默认 SRS 间隔
+
+```typescript
+const defaultSrsIntervals = {
+ 1: 1, // 等级1: 1天后复习
+ 2: 3, // 等级2: 3天后复习
+ 3: 7, // 等级3: 7天后复习
+ 4: 14, // 等级4: 14天后复习
+ 5: 30, // 等级5: 30天后复习
+ 6: 60, // 等级6: 60天后复习
+ 7: 120, // 等级7: 120天后复习
+ 8: 240, // 等级8: 240天后复习
+};
+```
+
+### 难度评分算法
+
+```typescript
+// 难词列表基于动态评分算法
+score = (incorrectCount * 5) - (correctCount * 2) + (daysSinceLastReview * 0.1)
+```
+
+- 答错惩罚:每次错误 +5 分
+- 答对奖励:每次正确 -2 分
+- 时间衰减:每多一天未复习 +0.1 分
+
+## 部署说明
+
+### GitHub Pages 部署
+
+项目已配置 GitHub Actions 自动部署流程(`.github/workflows/deploy.yml`)。
+
+**部署触发条件:**
+- 推送到 `main` 分支时自动部署
+- 可手动从 Actions 页面触发
+
+**部署步骤:**
+
+1. 确保项目推送到 GitHub 仓库
+2. 在仓库设置中启用 GitHub Pages:
+ - Source: `Deploy from a branch`
+ - Branch: `gh-pages` (由 Action 自动创建)
+3. 等待 Action 执行完成
+4. 访问 `https://.github.io/GRE-Basewords-Learning/`
+
+### 手动部署到其他平台
+
+1. 构建项目:
+```bash
+npm run build
+```
+
+2. 根据部署目标调整 `vite.config.ts` 中的 `base` 路径:
+```typescript
+// vite.config.ts
+build: {
+ base: '/your-deploy-path/', // 修改为实际路径
+}
+```
+
+3. 将 `dist/` 目录的内容上传到服务器
+
+## 项目结构
+
+```
+GRE-Basewords-Learning/
+├── .github/
+│ └── workflows/
+│ └── deploy.yml # GitHub Pages 自动部署配置
+├── components/
+│ ├── AddToListPopover.tsx # 添加到列表的弹出层
+│ ├── AppHeader.tsx # 应用顶部导航栏
+│ ├── Badge.tsx # 标签组件(同义词/反义词)
+│ ├── CardSection.tsx # 卡片内部分区组件
+│ ├── CreateListModal.tsx # 创建自定义列表模态框
+│ ├── MindMapModal.tsx # 词汇思维导图模态框
+│ ├── QuizModal.tsx # 测验模态框
+│ ├── ReviewCalendarModal.tsx # 复习日历模态框
+│ ├── SettingsModal.tsx # 设置模态框
+│ ├── Sidebar.tsx # 左侧边栏
+│ ├── VocabularyCard.tsx # 单词闪卡组件
+│ └── icons.tsx # 图标组件集合
+├── public/
+│ ├── list.json # 主词汇数据(多个 Section)
+│ └── mindmap.json # 思维导图主题数据
+├── utils/
+│ └── srs.ts # SRS 间隔重复系统核心逻辑
+├── App.tsx # 主应用组件(状态管理核心)
+├── index.html # HTML 入口
+├── index.tsx # React 入口
+├── package.json # 项目依赖和脚本
+├── tsconfig.json # TypeScript 配置
+├── types.ts # 全局类型定义
+└── vite.config.ts # Vite 构建配置
+```
+
+## 核心组件说明
+
+### App.tsx
+
+应用的核心状态管理组件,负责:
+- 加载词汇数据和用户进度
+- 管理所有模态框状态
+- 处理 SRS 逻辑的更新
+- 数据导入导出功能
+- localStorage 数据持久化
+
+### VocabularyCard.tsx
+
+单词闪卡组件,实现:
+- 3D 翻转动画效果
+- 响应式字体大小(根据单词长度)
+- 结构化展示单词详细信息
+- 支持键盘和鼠标操作
+
+### QuizModal.tsx
+
+测验模态框,实现:
+- 单词随机打乱
+- 分步答题流程
+- 答题结果即时更新 SRS 状态
+- 完成后统计正确率
+
+### Sidebar.tsx
+
+左侧边栏导航,包含:
+- 智能列表(今日复习、收藏、难词、已知词)
+- 自定义列表管理
+- Section 列表
+- 数量徽章显示
+
+### srs.ts
+
+间隔重复系统的核心算法:
+- `handleCorrectAnswer()`:答对后的 SRS 升级逻辑
+- `handleIncorrectAnswer()`:答错后的 SRS 降级逻辑
+- `calculateDifficulty()`:难词动态评分算法
+
+---
+
+## 许可证
+
+本项目采用 MIT 许可证,详见源代码文件。
+
+## 贡献
+
+欢迎提交 Issue 和 Pull Request!