# 2026 产业数智化峰会 · 上海站

> 活页公开模板 `sample-summit-invite` · 场景: 邀请函 · 行业: 科技互联网 / 自媒体营销
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://space.24haowan.com/s/M8gwrrx0f6KZ · 详情: https://space.24haowan.com/examples/sample-summit-invite

## 这是什么

峰会邀请函 · 行业峰会、沙龙、发布会报名

## 什么时候用

公司或机构办一场半天到一天的行业峰会、沙龙、发布会、闭门会，要把时间地点、议程、嘉宾、交通和报名放在一页发给客户和同行，收报名并显示剩余席位。报名表默认是姓名 / 单位 / 职务 / 手机号四项（数据表 signup）—— 发之前问一句用户要不要收报名、限多少席。家宴、婚礼这类私人邀请选 sample-invitation 或 sample-wedding-invite；按线路或场次分名额收报名选 sample-event-signup；同学聚会选 sample-reunion-invite。

## 用户对助手说的原话

帮我给公司办的行业峰会做一份邀请函，发成一个网页链接给客户和同行。首屏是一张「参会凭证」卡片：白底细边框圆角，顶边一条强调色细条；卡片上半是一行小字「参会凭证 · 第几届」和右侧的席位编号「No. 001–200」，大字宋体峰会名、另起一行用强调色写城市站，下面时间（日期星期、下午起止时刻、几点开始签到）和地点（城市 · 会场、几层哪个厅和门牌），一句话说几位嘉宾来自哪些行业、能听到什么；中间一条虚线打孔线，两端各挖一个半圆缺口；卡片下半是按真实分钟比例画的半天议程轨（签到、茶歇、闭幕浅色，演讲、圆桌、报告发布强调色，下面标整点刻度），第一次出现时从左往右画出来；轨上每一段都能点：点中的那段加粗、其余变淡，轨下一行字显示这段的时间、环节、讲者，并带「看议程 ›」跳到下面议程表对应那一行，议程表那一行同时高亮；反过来点议程表的一行，轨上那段也亮；打开时先亮圆桌那段；大会当天在轨上画一根「现在」竖线并自动亮起正在进行的那段；再下面「报名参会」按钮跳到文末报名表，旁边一行席位：没人报名时只写限多少席和截止日，有人报了才读报名数据表显示已报名几人、剩余几席（别写死数字），再一行到开幕还有几天；读者自己报过名，凭证右上角的编号换成他的报名序号。正文依次是：议程表（时间 · 环节 · 讲者和职务，八九行，主题演讲、圆桌、报告发布带小线框标签，签到、茶歇、闭幕浅色字）；演讲嘉宾六位，每位一个用姓氏单字做的圆形头像（同一个强调色的深浅几档，不用照片），写姓名、单位职务、一句讲什么；交通与停车（地铁几号线几号口、步行几分钟几米，开车车库入口与免费停车时长，打车落客点和上楼路线，地址带复制按钮）；参会须知（身份证签到这条用左侧细色线强调，着装、席位截止、确认短信日期）；报名表四项：姓名、单位、职务、手机号，提交后就地显示已收到、会发短信确认，存进一张数据表；最后会务联系人、电话、邮箱、主办协办。整页只用一个强调色，凭证之外不铺底色块，节与节之间细线分隔；系统要求减少动效时直接显示终态；手机上一栏到底、首屏就是这张凭证和报名按钮，电脑上左栏吸顶放凭证和一个两列的本页目录（随正文滚动高亮），右栏放议程和其余内容。议程有变动就更新同一个链接。

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

## 照着做一份

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

## 页面结构

- 议程
- 演讲嘉宾
- 交通与停车
- 参会须知
- 报名
- 会务联系

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

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

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

- 页内报名回写数据表（原生表单 POST ./_data/signup），页面读回已报名人数并算剩余席位
- 同一链接更新不变（议程微调、嘉宾变动、会后补报告都在这一页）
- 微信卡片（share.title / share.desc）

## 发之前要备好

- 数据表 signup（列 name / company / title / phone，append_open=true）：文末报名写进这里，发之前先用 set_data 建好；页面只显示人数，但拿到链接的人能读到表里的行（含手机号），介意的话把页面设成口令访问；过了报名截止日把 append_open 关掉

## 模板说明（README）

活页模板市场的公开模板，按 `core/space/examples/QUALITY.md` 从头做。
示例内容均为虚构（主办方「澄川数研」、协办方、嘉宾、企业、会议中心、街道、地铁站名、电话邮箱都是编的）；页里没有照片，头像是姓氏单字的 CSS 圆，刻度轨是内联 SVG。

## 演示哪个特色

**文末报名写回数据表 + 页面读回已报名人数与剩余席位 + 议程变动更新同一个链接。**

- 记忆点：首屏那张「参会凭证」—— 上半是会议要素，虚线打孔线（两端半圆缺口）下面是按真实分钟比例画的半天议程轨。轨上每段可点：点中的加粗、其余变淡，轨下一行字显示时间、环节、讲者并可跳到议程表；议程表的行也能反过来点亮轨；打开时先亮圆桌；大会当天画「现在」竖线并亮起正在进行的那段。读者报过名，凭证右上角换成他的报名序号。
  轨第一次出现时从左往右画出来（全页唯一的入场动效，`prefers-reduced-motion` 时直接终态，脚本不跑时完整显示）。
- 两端两种版面：手机一栏到底，首屏就是这张凭证和「报名参会」按钮；电脑上左栏吸顶放凭证与一个两列的本页目录（随正文滚动高亮），右栏放议程、嘉宾、交通、须知、报名表。
- 整页一个强调色（钴蓝），节与节之间细线分隔；议程里圆桌那一行时刻用强调色，嘉宾头像是同一个蓝的深浅几档。
- 报名是原生表单 `<form action="./_data/signup" method="post">`（不跑脚本也能提交）；脚本在时页内提交、就地显示「报名已收到…手机尾号」，
  并读 `./_data/signup.json`：没人报名时只写「限 200 席」，有人报了才显示「已报名 N 人 · 剩余 M 席」（满额后改说「现在报名记为候补」），审核挂起的行不计数。
- 「距开幕还有 N 天」由脚本按北京时间现算；「复制地址」按钮只在脚本在时出现。

## 数据表

`signup`（列 `name` / `company` / `title` / `phone`，`append_open=true`）。发之前先建表：

```
set_data proposal_id=<id> table="signup" revision=0 rows=[] columns=["name","company","title","phone"] append_open=true
```

读回：`list_data_rows table=signup`。页面只显示人数，但表里的行（含手机号）拿到链接的人能通过 `./_data/signup.json` 读到 ——
对外公开发时建议设成口令访问（`set_visibility visibility=passcode`），或去掉手机号这一列。过了报名截止日把 `append_open` 关掉。

## 改哪里变成我的

| 位置 | 改什么 |
|---|---|
| 页头 `.top` / `h1` | 主办方名与标志、第几届；峰会名与城市站（`h1 span`） |
| `.facts` 三行 / `.why` | 时间与签到时刻、会场与厅、席位与截止日；一句话说听什么 |
| 议程轨 `.segs` | 每段一个 `button.sg`，`flex-grow` = 这段的分钟数，浅色段加 `lt`，`data-i` 与议程表的行序一致；刻度 `.ticks` 的 `left` = (整点 − 起点) ÷ 总分钟；脚本里的 `MIN` 每段起点同改 |
| 脚本里的 `CAP` / `START` / `SPAN` | 席位总数；议程轨起点（UTC，北京时间减 8 小时）与总分钟；`pick(6, …)` 是打开时先亮的那段 |
| 「议程」`.agenda` | 每行 = 时间 + 环节（带 `.tag` 小标签）+ 讲者；签到茶歇闭幕行加 `lt`，最想突出的一行加 `key` |
| 「演讲嘉宾」`.spk` | 头像里的姓氏单字与 `--c`（`--a1`…`--a4` 四档），姓名、单位职务、一句讲什么 |
| 「交通与停车」`.go` / `.addr` | 地铁、开车、打车三行；地址与 `data-copy` 同改 |
| 「参会须知」 | 最要紧的一句放 `.aside`（左侧细色线），其余逐条 |
| 「报名」 | 字段名要和 `signup` 的列一致；成功提示里的确认日期在脚本里 |
| 「会务联系」 | 联系人、电话、邮箱、主办协办 |
| 页脚 | 平台标志与名称（与 `core/space/src/theme.ts` 的 `MARK_SVG` / `PUBLIC_NAME` 逐字一致）+ 一句适用场景；发自己的邀请函时整段删掉 |
| `manifest.json` | `title` / `share.*`（微信卡片上的字）；节增减时 `sections` 与页里的 `id` / `data-track-section` 三处同改 |

## 怎么发出去

```bash
node core/space/cli/space-cli.mjs push core/space/examples/sample-summit-invite \
  --proposal <proposal_id> --manifest core/space/examples/sample-summit-invite/manifest.json --hold
# 先建 signup 表 → 预览确认 → publish_version → 链接发给客户和同行
```

议程微调、嘉宾变动、会后补报告下载：改完再推一次到**同一个** `proposal_id`，链接不变。
验收截图：`node --import tsx examples/verify-shots.mjs sample-summit-invite --write-thumb --write-phone`（QUALITY.md §7）。
