feat(T-001): 初始化 go 模块 + go-app 最小可运行页面

- go.mod:module lingo,依赖 go-app v10.1.11
- main.go:go-app 装配入口;init() 注册路由(Handler 仅为已注册路由返回
  app shell),newHandler() 抽出便于测试,main() 起 http 服务
- main_test.go:in-process httptest 冒烟测试,验证根路径 200 +
  home 组件预渲染 + wasm 引导脚本注入
- .gitignore:忽略 /bin/ 构建产物
- 06-tasks:T-001 标 DONE;current-state 更新为 Phase 0 进行中、下一任务 T-002

验证:gofmt 干净 · go vet 通过 · go test 通过 · GOOS=js GOARCH=wasm go build 通过 · go build 通过

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-06-21 19:45:13 +08:00
co-authored by Claude Opus 4.8
parent 5825d5f677
commit 6e30daceab
7 changed files with 146 additions and 17 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-001 | 初始化 go 模块 + go-app 最小可运行页面 | — | `go.mod` 就位;`GOOS=js GOARCH=wasm go build` 通过;浏览器打开能看到一个最简页面 | TODO |
| T-001 | 初始化 go 模块 + go-app 最小可运行页面 | — | `go.mod` 就位;`GOOS=js GOARCH=wasm go build` 通过;浏览器打开能看到一个最简页面 | DONE |
| T-002 | 后端静态服务 + **音频路径映射** | T-001 | 访问 `/family-album/audio/u0101.mp3` 能播到磁盘 `family-album-usa/audio/u0101.mp3`;wasm/静态资源正常加载 | TODO |
| T-003 | 加载并解析 `episodes.json` 为 Go 结构体 | T-001 | struct 与真实 schema 一致(line 仅 `{t,en}`,无 zh);启动时成功载入 26 集;前端可拿到课程数据 | TODO |
+16 -16
View File
@@ -5,9 +5,9 @@
## 当前快照
- 日期:2026-06-21
- 阶段:MVP 起步前 / 文档与素材已就位
- Go 模块:尚未初始化,当前无 `go.mod`
- 生产代码:尚未开始
- 阶段:MVP 进行中 / Phase 0 地基起步
- Go 模块:已初始化(`go.mod`,module `lingo`,go-app v10.1.11)
- 生产代码:`main.go`(go-app 装配入口 + home 骨架组件)、`main_test.go`(app shell 冒烟测试)
- 设计稿:已完成 `design_mockups/list.html` 和 `design_mockups/play.html`
- 内容素材:`family-album-usa/episodes.json` 和 `family-album-usa/audio/` 已存在
@@ -21,36 +21,36 @@
| `design_mockups/` | 已有 | UI spike,作为视觉参考 |
| `scripts/` | 已有 | 内容数据校验等脚本 |
| `notion_docs/` | 只读 | Notion 原始导出,不作为事实来源 |
| `go.mod` | 不存在 | T-001 需要创建 |
| `go.mod` | 已有 | module `lingo`,依赖 go-app v10 |
| `main.go` | 已有 | go-app 装配入口(T-001) |
## 任务看板状态
以 [`06-tasks.md`](06-tasks.md) 为准。
当前应领取的第一个开发任务:
- `T-001`:初始化 go 模块 + go-app 最小可运行页面
不要跳到课程列表、账号、生词本或 PWA 离线任务。
- `T-001` 已 `DONE`(go 模块 + 最小可运行页面)。
- 下一个可领取任务:`T-002`(后端静态服务 + 音频路径映射)或 `T-003`(解析 episodes.json),二者都只依赖 T-001,取最靠前的 **T-002**。
## 当前可运行内容
目前没有生产 App 可运行。
最小 go-app 应用已可构建运行:
可以直接打开这些 HTML spike 查看设计参考:
```bash
GOOS=js GOARCH=wasm go build -o web/app.wasm . # 构建前端 wasm
go build -o bin/lingo . && ./bin/lingo # 起服务器,访问 http://localhost:8000
```
- `design_mockups/list.html`
- `design_mockups/play.html`
设计参考 spike:`design_mockups/list.html`、`design_mockups/play.html`。
## 开始编码前检查
开始 T-001 前:
开始任意任务前:
1. 读根目录 `AGENTS.md`。
2. 读 `CLAUDE.md`。
3. 读 `docs/05-coding-rules.md`。
4. 确认 `docs/06-tasks.md` 中 T-001 仍是第一个可做任务。
5. 将 T-001 状态改为 `DOING`。
4. 在 `docs/06-tasks.md` 取第一个 `TODO` 且依赖均 `DONE` 的任务(当前为 `T-002`)。
5. 将该任务状态改为 `DOING`。
## 维护规则