Files

156 lines
5.3 KiB
Markdown
Raw Permalink Normal View History

# AI 开发入口
> 给 AI coding agent 的项目入口。这里负责导航和流程,硬性编码规则见 [`05-coding-rules.md`](05-coding-rules.md)。
## 一句话定位
这是一个大屏手机 / 平板优先的英语精听 PWA:基于「走遍美国 (Family Album, U.S.A.)」音频和逐句英文字幕,提供课程列表、音频播放、逐句同步、生词积累、账号同步和离线学习。
MVP 先做「走遍美国」ep1-17。ep18-26 暂缺音频,不进入 MVP 精听闭环。
## 必读顺序
每次开始写代码前,按这个顺序建立上下文:
1. [`01-vision.md`](01-vision.md):为什么做、为谁做、什么不做。
2. [`02-requirements.md`](02-requirements.md):MVP 要什么、怎么算达成。
3. [`03-tech-stack.md`](03-tech-stack.md):既定技术选型。
4. [`04-architecture.md`](04-architecture.md):系统结构、职责划分、数据模型和关键难点。
5. [`05-coding-rules.md`](05-coding-rules.md):写代码前必须遵守的规则。
6. [`06-tasks.md`](06-tasks.md):领取本轮唯一任务。
7. [`../CLAUDE.md`](../CLAUDE.md):仓库根部的 AI 上下文和关键数据事实。
如果根目录有 [`../AGENTS.md`](../AGENTS.md),也必须先读。它是仓库级强约束入口。
## 当前阶段
当前项目处于 MVP 起步阶段。任务看板的优先路径是:
1. Phase 0:最小可运行地基。
2. Phase 1:先验证字幕同步原型,这是最高风险。
3. Phase 2:课程列表和播放页。
4. Phase 3-5:账号、生词本、进度同步。
5. Phase 6:PWA 安装和离线。
设计 spike `T-200` 已完成,后续课程列表和播放页实现时参考:
- `design_mockups/list.html`
- `design_mockups/play.html`
这些是视觉参考和可迁移 CSS 来源,不是生产代码本身。
## 领取任务规则
从 [`06-tasks.md`](06-tasks.md) 领取任务时:
- 只领取第一个状态为 `TODO` 且依赖均为 `DONE` 的任务。
- 开始前把该任务状态改为 `DOING`。
- 本轮只完成这一个任务。
- 验收通过后把状态改为 `DONE`。
- 做完即停,汇报验证结果,等待下一步指令。
如果代码实际状态和任务看板冲突,先说明冲突,不要擅自跳步或重排。
## MVP 边界
MVP 只做:
- 课程列表
- 音频播放
- 逐句同步和点句跳转
- 生词本
- 账号与跨设备同步
- PWA 安装和已缓存课程离线可用
MVP 不做:
- 视频播放
- 行级中英对照
- 社区、分享、社交
- AI 口语评分
- 生词 SRS
- 测验、打卡、激励模块
- 真正的多教材接入逻辑
`course_id` 可以按架构作为用户数据预留列存在,但 MVP 不实现多教材筛选、课程管理或多教材 UI。
## 事实来源
内容数据只信:
- `family-album-usa/episodes.json`
- `family-album-usa/audio/`
- `scripts/` 中的数据校验脚本
关键事实:
- 数据结构是 `episode -> act -> line`。
- `line` 只有 `t` 和 `en`,没有 `zh`。
- JSON 中 `/family-album/audio/...` 是服务路径,不是磁盘路径。
- 磁盘音频目录是 `family-album-usa/audio/`。
- ep18-26 暂缺音频,不要补造假数据。
- `notion_docs/` 和 `*.bak` 是只读存档,不作为事实来源。
## 常见任务该看哪里
做课程列表:
- 先看 `02-requirements.md` 的课程列表验收。
- 再看 `04-architecture.md` 的内容数据结构。
- 视觉参考 `design_mockups/list.html`。
做播放页或字幕同步:
- 先看 `02-requirements.md` 的音频播放和逐句同步验收。
- 再看 `04-architecture.md` 的关键技术难点。
- 必须遵守 `05-coding-rules.md` 的字幕同步专项:定位当前句用二分查找,对乱序 / 相等时间戳容错。
- 视觉参考 `design_mockups/play.html`。
做账号、生词本、进度:
- 先看 `02-requirements.md` 的 P0 用户故事和验收。
- 再看 `04-architecture.md` 的 SQLite 用户数据模型。
- API 形状如果尚未写入文档,先提出并补充合约,不要在多个任务里各自发明。
做 PWA / 离线:
- 先看 `02-requirements.md` 的离线验收。
- 再看 `03-tech-stack.md` 的 PWA / Service Worker 选型。
- 只要求已缓存课程离线可用,不要求首次离线访问全部音频。
## 验证命令
本项目主要在 **WSL / Linux(bash)** 下开发,命令以 bash 为准:
```bash
GOOS=js GOARCH=wasm go build -o app.wasm # 前端 wasm
go build # 后端
go vet ./...
python3 scripts/validate_episodes.py
```
Windows PowerShell 等价命令:
```powershell
$env:GOOS='js'; $env:GOARCH='wasm'; go build -o app.wasm
go build
go vet ./...
python scripts/validate_episodes.py
```
说明:
- 前端 wasm 改动后跑 wasm 构建。
- 后端 Go 改动后跑 `go build` 和 `go vet ./...`。
- 改动 `episodes.json` 或内容 schema 后跑 `python scripts/validate_episodes.py`。
- 没有触碰内容数据时,不需要跑内容校验。
## 相关补充文档(已具备)
以下文档已建好,开发到对应阶段时优先参考:
- [`api.md`](api.md):账号、生词本、进度 API 合约草案(写后端/前端 client 前看)。
- [`routes.md`](routes.md):go-app 页面路由与组件归属(写页面/导航前看)。
- [`current-state.md`](current-state.md):当前实现状态、入口文件、可运行命令、下一步可做任务。
- 项目包布局见 [`04-architecture.md`](04-architecture.md) 第六节。