# 英语阅读训练 v1.0 · 交付说明

个人自用工具（非上架产品），给用户本人练英文阅读：中文界面、英文内容、纯离线。

## 产物

- APK：`~/workspace/your_files/EnglishReader-v1.0.apk`（15.6 MB，debug 签名，可直接装）
- 包名 `com.englishreader.app`，versionName 1.0，minSdk 24 / targetSdk 34
- 应用显示名：**英语阅读训练**
- 源码：`~/workspace/english-reader-android/`（Kotlin + Jetpack Compose 纯原生，无 WebView）
- 构建：一次成功（Gradle 8.7 / JDK 17 / AGP 8.5.2）
- 权限核验（aapt 实测）：**未申请 INTERNET**，全部内容内置 `assets/articles.json`；仅有 AndroidX 自动添加的内部权限 `DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION`（非网络权限）

## 功能（只做两个）

### 1. 短文阅读
- 内置 20 篇分级短文（CEFR A2–B1，短句为主，每篇 120–220 词），见下方清单。
- 每篇配生词表：生词在正文中以绿色下划线标出，点词弹出卡片——单词原形、IPA 音标、贴合本文语境的中文释义、一句简单英文例句、本文原句，外加「加入生词本」按钮。
- 阅读页字号三档（中 17sp / 大 20sp / 特大 24sp，默认大），可标记「读完」（首页有 ✓ 标识，可取消）。

### 2. 生词本 + 间隔复习
- 生词存本地 SQLite（`reader.db`），不联网、无账号。
- 复习算法（Leitner）：共 5 盒，间隔 1 / 2 / 4 / 7 / 15 天。新词入第 1 盒、次日待复习；复习时自评「认识」升一盒（上限 5 盒）、「不认识」回第 1 盒，并按新盒间隔重排到期日（yyyy-MM-dd 按自然日计算）。
- 首页显示今日待复习数量；复习界面先显示单词，可先点「看出处原句」（显示它出自哪篇文章的哪句原文），再点「显示释义」后自评。
- 生词本页可查看全部词的状态（盒数 / 下次复习日 / 出处原句），可删除单个词。

## 20 篇短文清单（正文词数 / 生词数）

### A 组 · 读自己的 App（75 个生词）
| 篇目 | 标题 | 词数 | 生词 |
|---|---|---|---|
| A1 | 汽修报价单 A Clear Quote for Every Car | 163 | 12 |
| A2 | 偏头痛记录 Why Does the Pain Come? | 162 | 12 |
| A3 | 家庭药箱 The Medicine Cabinet at Home | 161 | 9 |
| A4 | 房东收租 Rent Day Is Coming | 167 | 9 |
| A5 | 课时包 Twenty Lessons in a Package | 166 | 8 |
| A6 | 订阅提醒 The Apps That Take Money Quietly | 158 | 8 |
| A7 | 钓鱼日志 A Quiet Day by the Lake | 150 | 9 |
| A8 | 工时单+小摊收支+急救卡 Three Small Apps, Three Kinds of Help | 160 | 8 |

### B 组 · 科技与网络生活（51 个生词）
| 篇目 | 标题 | 词数 | 生词 |
|---|---|---|---|
| B1 | 智能手机 The Small Computer in Your Hand | 140 | 7 |
| B2 | 应用商店 How to Choose an App | 140 | 8 |
| B3 | 给小企业做网站 A Website for a Small Company | 163 | 7 |
| B4 | 在线支付安全 Keep Your Money Safe Online | 122 | 8 |
| B5 | 密码与账号 A Strong Password Is a Strong Lock | 120 | 7 |
| B6 | AI 工具帮忙干活 AI Tools Help Us Work | 140 | 7 |
| B7 | 家里的 Wi-Fi Wi-Fi at Home | 151 | 7 |

### C 组 · 生活与兴趣（33 个生词）
| 篇目 | 标题 | 词数 | 生词 |
|---|---|---|---|
| C1 | 打篮球 Saturday Basketball | 144 | 7 |
| C2 | 睡眠与健康 Sleep Well, Live Well | 140 | 6 |
| C3 | 周末陪家人 A Sunday in the Park | 131 | 6 |
| C4 | 广东短途旅行 Short Trips in Guangdong | 126 | 7 |
| C5 | 成年人学新东西 Never Too Late to Learn | 123 | 7 |

生词总计 159 条。A 组尽量用了对应 App 的真实界面词汇（quote / labor / expire / due date / reminder / overdue / subscription / charge / tap / remain / profit / blood / allergy 等）。

## 生词收录标准
- 基准：最高频约 800 个英语单词（the / is / you / have / go / day 这类）不收录；凡超出这一常用层、正文里出现的实词原则上都收录进该篇生词表。
- 每条含：单词原形（lemma）、该词在正文中出现的全部词形（forms，用于点词匹配，如 brakes → brake、climbed → climb）、IPA 音标、贴合本文语境的中文释义、一句简单英文例句。
- 已程序校验：20 篇词数全部在 120–220 区间；159 条生词的全部词形均真实出现在对应正文中（无凑数词）。

## 未做事项
- 朗读 / TTS 发音（用户明确只练阅读，不要听力功能）
- 口语、听力任何功能（同上）
- 内容在线更新 / 新增短文入口（内容全部内置；加新短文需改 `articles.json` 重新打包）
- 云同步、账号、统计图表、release 签名包

## 已知问题
- **短文与释义为 AI 编写**：英文句子力求简单正确、音标与释义力求准确，但个别释义可能不够精确或不够地道，属 v1 已知事项；后续如发现具体词条问题可逐条修订 `articles.json` 后重打包。
- 未做真机 / 模拟器实测（当前环境无模拟器），仅完成编译打包 + APK 结构与权限校验。建议真机首验链路：装包 → 读 A1 → 点一个生词看卡片 → 加入生词本 → 次日（或改系统日期）看首页待复习数与复习流程。
- Leitner 到期按自然日计算，没有「逾期堆积提醒」；漏复习的词会一直留在待复习里，不丢失。
- 启动图标暂借汽修报价单的占位图（自用工具，未单独设计）。
