# 国庆泉州、厦门五日 · 家庭行程

> 活页公开模板 `sample-weekend-trip` · 场景: 行程 · 攻略 · 行业: 旅游出行 / 个人家庭
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://space.24haowan.com/s/vl_NbXlyYDvB · 详情: https://space.24haowan.com/examples/sample-weekend-trip

## 这是什么

出行攻略 · 发给家人朋友

## 什么时候用

生活向、发到家庭群或朋友群的东西：多城多天的旅行攻略、聚会安排、家庭计划。手机上读为主。行程类的默认写回就是它这两样：文末两种走法投一下（数据表 rsvp）+ 路上有变就更新同一链接 —— 发之前问一句用户要不要，点头就照这份做。要按名额收报名选 sample-event-signup。

## 用户对助手说的原话

把我们国庆的家庭出行做成一份攻略，发成一个网页链接给家里人：页头写出行人、日期、集合地点和整理人；接着一条按真实时间比例画的行程时间线，标出每段车程和在每个城市住几晚；然后按天列每天几点做什么（带一句小提醒），再写住哪儿；接着把两种走法（比如高铁和自驾）的花费逐项对比成一张表，写合计、人均和路上时间，说一句我倾向哪个；最后放一张小表单让家人投票选哪种走法、留一句话，票数显示在下面。手机上时间线改竖排。以后行程有变就更新同一个链接。

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

## 照着做一份

1. 读入口文件 https://space.24haowan.com/examples/sample-weekend-trip/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-weekend-trip ，返回预览链接、7 天分享与认领链接（登录后保留、链接不变）。

## 页面结构

- 路线一览
- 每天怎么走
- 住哪儿
- 两种走法的花费
- 投一下

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

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

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

- 同一链接更新不变（行程有变只更新这一页）
- 页内投票回写数据表（原生表单 POST ./_data/rsvp）
- 口令可看（发到家庭群）

## 发之前要备好

- 数据表 rsvp（列 name / plan / note，append_open=true）：文末投票写进这里；新工作区种入时自动建好
- 发到家庭群时建议设口令（set_visibility passcode）

## 模板说明（README）

「示例 · 五种用法」文件夹的第 5 份（总览见 `core/space/examples/README.md`）。按 `core/space/examples/QUALITY.md` 重做（EPIC #9032 C5，#9038）。
示例内容均为虚构（人名、民宿与酒店名是编的；城市与景点是真实地名，只作行程参考，价格为量级估算）。
目录名沿用旧的 `sample-weekend-trip`（种子 key、Dockerfile、`versions.sample_key` 都认它），内容已换成国庆五日两城行程。

## 演示哪个特色

**行程有变更新同一个链接 + 文末投票写回数据表。**

- 这两样就是**行程类的默认写回**（`core/space/src/for-agents.ts` 「发出去之前问一句」一节，#11308）：助手发行程前问一句要不要收投票，点头就照这份做；路上有变只更新同一链接、不另发。
- 记忆点：按真实时间比例画的行程时间线（每天 06:00–22:00 一格，夜里压掉），在每个城市住几晚是一条色带、车程是虚线；
  电脑横排、手机竖排，两套坐标（内联 SVG）。
- 「两种走法的花费」逐项对比高铁与自驾：合计、人均、路上时间，数字前后自洽（改一项要把合计、人均、「省多少」一起改）。
- 文末「投一下」是原生表单 `<form action="./_data/rsvp" method="post">`（不跑脚本也能提交）；脚本在时页内提交，并读 `./_data/rsvp.json` 显示票数与已投的人。
- 发到家庭群建议设口令：`set_visibility visibility="passcode"`。

## 数据表

`rsvp`（列 `name` / `plan` / `note`，`append_open=true`）。新工作区种入时由 `SAMPLE_DATA_TABLES` 建好；自己发的时候先建表：

```
set_data proposal_id=<id> table="rsvp" revision=0 rows=[] columns=["name","plan","note"] append_open=true
```

读回：`list_data_rows table=rsvp`。单选的 `value`（`A 高铁` / `B 自驾`）就是写进 `plan` 列的值，也是页面计票的键（`data-n`）。

## 改哪里变成我的

| 位置 | 改什么 |
|---|---|
| 页头 `.top` / `h1` / `.sub` / `.facts` | 谁家出行、更新日期、行程名、一句话、日期 / 出行人 / 集合 / 整理人 |
| 时间线 `svg.route`（`.wide` / `.narrow`） | 坐标 = 当天格的起点 + (时刻 − 6) ÷ 16 × 格宽（电脑每格 142.4px、手机每小时 4.1px）；改车次时间两段都要重算 |
| 「每天怎么走」 | 每天一个 `.dayblk`，圆点颜色跟当晚住的城市（`.q` / `.x`）；每行 = 时间 + 做什么 + 一句小提醒 |
| 「住哪儿」 | 每处一行，左边色条同城市颜色 |
| 「两种走法的花费」 | 表格逐项改，合计、人均、`.diff` 那句同步改 |
| 「投一下」 | 选项 `value`、截止时间 |
| 页脚 | 平台标志与名称（与 `core/space/src/theme.ts` 的 `MARK_SVG` / `PUBLIC_NAME` 逐字一致，测试咬着）+ 一句适用场景；发自己的行程时整段删掉 |
| `manifest.json` | `title` / `share.*`（微信卡片上的字）；节增减时 `sections` 与页里的 `id` / `data-track-section` 三处同改 |

旧版的 `cover.png` 封面已删（QUALITY.md §5.3：不给就用平台品牌卡）；`render:"inline"` 已去掉（新版本上已停用，#8655）。

## 怎么发出去

```bash
node core/space/cli/space-cli.mjs push core/space/examples/sample-weekend-trip \
  --proposal <proposal_id> --manifest core/space/examples/sample-weekend-trip/manifest.json --hold
# 预览确认 → publish_version → set_visibility passcode → 口令和链接一起发到家庭群
```

先建 `rsvp` 表再发页面。行程有变：改完再推一次到**同一个** `proposal_id`，链接不变。
验收截图：`node --import tsx examples/verify-shots.mjs sample-weekend-trip --write-thumb`（QUALITY.md §7）。
