# 雅思 7 分备考计划

> 活页公开模板 `sample-study-plan` · 场景: 学习计划 · 资料 · 行业: 教育培训 / 个人家庭
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://space.24haowan.com/s/O6oT2QBmEv9n · 详情: https://space.24haowan.com/examples/sample-study-plan

## 这是什么

学习计划 · 备考计划和每日打卡

## 什么时候用

备考、自学、练一门技能，要把阶段安排、每天怎么排和打卡放在一个链接里，自己每天记、搭子或家长随时看，选它。要教别人一步一步做事选 sample-handbook；每周给同事同步进度选 sample-weekly-report。

## 用户对助手说的原话

帮我做一份备考计划，发成一个网页链接，每天在上面打卡：页头写我的名字、考试名称、考试日、目标分数、每天能学多久和监督我的人；第一节是打卡，一个很大的「离考试还有几天」，旁边是已打卡天数、连续天数、累计小时，下面是从开始到考试那天的日历，一周一行、按阶段分段，打过卡的格子填色、没打的虚线框、今天那格有一圈轻轻的光、考试那天单独标出来，点某一天能看到那天学了什么；接着按先后写三个阶段（每段的日期、要做的三件事、段末模考的目标），再写每天几个时段各做什么和一周七天晚上的主项轮换，然后一张表列各单项现在的分、目标分、差多少和怎么补；最后一张打卡表单（日期、学了多久、做了哪几项、一句话），提交后存到数据表、日历上那天填上。颜色清爽，少用底色块，用细线分隔；手机上日历一行七格照样能点。以后计划有变就更新同一个链接。

如果你还没有活页连接器（MCP），先读 https://space.24haowan.com/for-agents.md ，照里面的说明接入，或不登录直接发布。

## 照着做一份

1. 读入口文件 https://space.24haowan.com/examples/sample-study-plan/source/index.html（它引用的其他文件见下方列表）。
2. 保留结构、版式和交互，把内容**全部**换成用户自己的；模板里的公司、人名、数字都是虚构的，一样都别留。
3. 交付一个自包含的单文件 HTML：样式写在页面里，不引外部字体 / 脚本 / CDN；手机 375 宽和电脑 1440 宽都要好看，模板有暗色就保留暗色。
4. 要发成微信里能打开、改了链接不变的网页：接入活页（https://space.24haowan.com/for-agents.md）后发布；没有账号也可以让用户在 https://space.24haowan.com/quick 上传这个文件。
5. 没有活页工具、但能发 HTTPS 请求：把做好的 HTML 以 Content-Type: text/html POST 到 https://space.24haowan.com/api/quick?client=template-sample-study-plan ，返回预览链接、7 天分享与认领链接（登录后保留、链接不变）。

## 页面结构

- 打卡
- 三个阶段
- 每天怎么排
- 分数：现在和目标
- 今天打卡

## 文件（公开，纯文本）

- https://space.24haowan.com/examples/sample-study-plan/source/index.html（入口）

## 发成活页之后还能做的

- 同一链接从第一天用到考试那天（计划调整后更新同一条链接）
- 每天在页末打卡（原生表单写进数据表 checkins，日历读回填上那一天）
- 阅读回执（搭子看了没有）

## 发之前要备好

- 数据表 checkins（列 date / minutes / vocab / listening / reading / writing / speaking / note，append_open=true）：文末打卡表单写进这里，页面读回填日历，发布前先用 set_data 建好

## 模板说明（README）

EPIC #9032 R3 新增的画廊样例，画廊「学习」分组的第一份（总览见 `core/space/examples/README.md`，品质标准见 `core/space/examples/QUALITY.md`）。示例数据均为虚构。

## 演示哪个特色

**一个链接从第一天用到考试那天 + 每天打卡写回数据表。**

- **记忆点**是「打卡」那一节：一个很大的「离考试 52 天」，下面是九周日历（一周一行、按基础 / 强化 / 冲刺分段）。打过卡的格子填色、没打的虚线框、今天那格有一圈很轻的呼吸光（全页唯一的循环动画，`prefers-reduced-motion` 时停），考试那天用琥珀色框出。点已过的一天，下面那行显示那天学了多久、做了哪几项、一句备注。
- 顶上三个数（已打卡 / 连续 / 累计小时）由脚本从日历现算；脚本不跑时就是页面里写死的那组数，和日历一致（8 / 9 天、连续 5 天、22.5 小时）。
- 发出去之后：页末「今天打卡」是原生表单，写进数据表 `checkins`；脚本在时页内提交，并读 `./_data/checkins.json` 把表里的日子填回日历、重算三个数。搭子看阅读回执就知道你今天有没有打开过；计划调整时同一个页面再发一版，链接不变。

## 改哪里变成我的

| 位置 | 改什么 |
|---|---|
| 页头 `.org` / `h1` / `.facts` | 名字、第几天 / 共几天、考试、考试日、目标、每天时长、监督人 |
| 「离考试」`.big b` 与 `.stats` | 离考试天数；三个数脚本会重算，但不跑脚本时显示页面里写的，所以一起改 |
| 日历 `.cal` | `data-today` 是「今天」；一天一格，`data-d="YYYY-MM-DD"`。已打卡是 `<button class="d done" data-m="分钟" data-items="…" data-note="…">`，没打是 `button.d.miss`，今天是 `<a class="d today" href="#checkin">`，以后的是 `<span class="d">`（`.plan` 加一个小字如「模考」「少学」），考试 `.exam`，考后 `.after`。阶段分段是 `<p class="ph">`。第一格必须是周一 |
| `.pick` | 默认显示最近打卡那天（不跑脚本时就停在这一句） |
| 三个阶段 `.steps` | 每段日期、三件事、段末模考目标；`.tip` 是要点提示（琥珀细线） |
| 每天怎么排 `.slots` / `.week` | 几个时段各做什么；一周七天晚上的主项 |
| 分数表 `table` | 每个单项一行，`<td data-label>` 与表头同名（手机小卡靠它显示列名）；差得最多的那行加 `class="worst"` |
| 「今天打卡」 | 原生 `<form class="checkin" action="./_data/checkins">`：字段名就是表里的列名；日期的 `min` / `max` 改成你的起止日；「做了哪几项」换成你的科目（改了列名要同改脚本里的 `ITEMS` 和数据表列） |
| 页脚 | 平台标志与名称（与 `core/space/src/theme.ts` 的 `MARK_SVG` / `PUBLIC_NAME` 逐字一致，测试咬着）+ 一句适用场景；发自己的计划时整段删掉 |
| `manifest.json` | `title` / `share.title` / `share.desc`（微信卡片上的字） |

## 数据表

页末打卡写进数据表 `checkins`（一次一行，`append_open=true`）。发之前先建表：

```
set_data  proposal_id: <id>  table: "checkins"  columns: ["date","minutes","vocab","listening","reading","writing","speaking","note"]  rows: []  append_open: true  revision: 0
```

用 `list_data_rows table=checkins` 读回。本地 `space-cli serve` 会把提交写进包里的 `_data/checkins.json`，试完记得改回 `[]`。

## 怎么发出去

```bash
export SPACE_TOKEN=sk-space-…            # MCP create_cli_token
node core/space/cli/space-cli.mjs push core/space/examples/sample-study-plan \
  --proposal <proposal_id> --manifest core/space/examples/sample-study-plan/manifest.json --hold
```

没有终端时也可以 MCP `publish_file`（`filename: "index.html"`、`content` 为全文、`manifest` 为 manifest.json 去掉 entry、`hold: true`），再按上面建表。
给谁看：默认仅自己可见；发给搭子或家长用 `set_visibility`（`passcode` 口令可看）。

## 素材

- 没有位图，标志是内联 SVG；人名、分数与日程均为虚构，只作示意。
- `thumb.webp`：画廊缩略图，由 `examples/verify-shots.mjs --write-thumb` 从成品截出，不进发布包。
