# 青禾智能 Q4 新品上市协调会 · 会议纪要

> 活页公开模板 `sample-meeting-minutes` · 场景: 工作汇报 · 行业: 企业内部 / 科技互联网
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://getlivepage.com/s/4bRDLi-u51eu · 详情: https://getlivepage.com/examples/sample-meeting-minutes

## 这是什么

会议纪要 · 议题结论一屏看清，待办落到人、参会人在页里确认

## 什么时候用

开完会要把会议纪要发给参会人和没来的人时选它：例会、评审会、复盘会、项目协调会都合适 —— 列清每个议题的讨论要点和结论（通过 / 待定 / 否决）、待办的负责人和截止时间，再请大家在页里确认纪要或补充意见。要每周反复更新同一个链接的进度汇报选 sample-weekly-report；只收报名、接龙选 sample-event-signup。

## 用户对助手说的原话

把这次会议整理成一份会议纪要，发成一个网页链接给参会人和没来的人：页头左边是公司 logo 和名称，右边右对齐两行写「会议纪要」和文档编号；下面一行大标题「会议名称 · 会议纪要」，再是时间 / 地点 / 主持 / 记录四格（小字标签在上、内容在下，两列排）；四格下面紧接独占一行的摘要「本次 N 个议题 · N 项决议 · N 项待办」，数字加粗放大；然后是参会人：小标题写「参会人 · 应到 N 人，实到 N 人」，所有人排成一行浅色底首字母圆头像、下面只写名字，主持和记录只靠描边区分，缺席的人用虚线圈并在名字下写原因，头像下一行灰字图例「描边：主持与记录　虚线：缺席」。接着是这页的记忆点 —— 一条按真实分钟比例画的议程时间轴：灰色小标题「议程 · 90 分钟」，同一行右侧一句「颜色是结论：通过 / 待定 / 否决」；条上方按半小时标刻度，每个议题一段、按结论着色（通过绿 / 待定琥珀 / 否决红），没用满的时间补一段灰色；每段正下方左对齐写议题短名，下一行用同色写「结论 + 用时′」，比如「通过 35′」；打开页面时各段依次描出来。然后每个议题一块可折叠的块，左侧一条结论色细线，右上角结论徽章，写两三条讨论要点和一句决议；待办每项写事项、负责人、截止日期，按今天日期自动标「还剩 N 天 / 今天到期 / 逾期 N 天」，上面一排按负责人筛选的按钮，电脑上排成表格、手机上排成卡片；最后一张确认表单（名字、确认无误 / 有补充 / 有异议、补充内容），提交存进数据表 confirms 并在旁边读回「已确认 x / y 人」和每个人的补充意见，读者可以点按钮用微信身份署名。少用底色块，用细线分隔；电脑上页头左信息右参会人、议题三栏并排、确认区左右两栏，手机上都改成上下排。

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

## 照着做一份

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

## 页面结构

- 会议概况
- 议题与结论
- 待办
- 请参会人确认

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

- https://getlivepage.com/examples/sample-meeting-minutes/source/index.html（入口）

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

- 议程时间轴按真实分钟比例、按结论着色，打开时依次描出
- 待办按今天日期自动算「还剩 N 天 / 今天到期 / 逾期」，可按负责人筛选
- 参会人确认回写数据表并就地读回（原生表单 POST ./_data/confirms，可用微信身份署名）
- 同一链接更新不变：会后补充意见改进纪要，链接不变

## 发之前要备好

- 数据表 confirms（列 name / status / note，append_open=true，identity=wechat，per_reader=latest）：文末确认表单写进这里，页面读回已确认人数与补充意见

## 模板说明（README）

开完会发给参会人和没来的人的那一份纪要。公司「青禾智能」、人名、产品与数字均为虚构。

## 演示哪个特色

**待办到人 + 参会人在页里确认，链接不变。**

- 首屏一条**议程时间轴**：每个议题一段，长度按真实分钟比例，颜色就是结论（通过 / 待定 / 否决），打开时依次描出来（纯 CSS，脚本不跑也会画完；`prefers-reduced-motion` 时直接终态）。手机 / 电脑各一套 SVG 坐标。
- **待办倒计时**：每项带 `data-due`，脚本按读者打开那天算「还剩 N 天 / 明天到期 / 今天到期 / 逾期 N 天」（逾期红色）；上面一排按负责人筛选。没有脚本时显示静态截止日期。电脑上是表格，手机上是卡片（同一份 HTML，媒体查询换排法）。
- **参会人确认回写数据表**：文末原生表单 `POST ./_data/confirms`，不跑脚本也能提交；脚本在时页内提交、立刻读回「已确认 x / 9 人」和每个人的补充意见。
- **微信身份署名（团队协作场景）**：页面加载时 `space.me()` 看有没有身份；只在读者点「用微信身份确认」时调 `space.me.request()`，回来名字自动填上。读回时有 `_by` 就用 `_by.name` 署名（`textContent` 渲染），头像只接受同源 `/_rid/avatar/` 路径，否则显示首字。没有平台脚本（本地预览）时照样手填名字提交。
- 会后有人补充，改纪要再发一版到同一个页面，链接不变；谁看过、看到哪一节在阅读记录里（锚点是每节的 `data-track-section`）。

## 改哪里变成我的

整页是四块同构的重复结构，交给 Agent 套改时只说「换掉会议信息、议题块、待办块、参会人名单」即可。

| 位置 | 改什么 |
|---|---|
| `<header id="meeting">` 的 `.org` / `h1` / `.facts` | 公司抬头（内联 SVG 标志）、文档编号、会议名称；时间 / 地点 / 主持 / 记录四项 |
| `.tally` | 「本次 N 个议题 · N 项决议 · N 项待办」三个数字，跟下面对上 |
| `.people li` | 参会人：每人一个 `<li>`，`<i class="av">` 里放姓氏；主持 / 记录加 `role`，缺席加 `away` 并写 `<span class="why">` 原因；`.av` 的 `c2`/`c3`/`c4` 只换底色。改人数时同步「应到 / 实到」和文末「/ 9 人」以及 `.dots` 里 `<i>` 的个数 |
| 议程时间轴 `.tl.wide` / `.tl.narrow` | 两段 SVG，坐标 = 起点 + 分钟 × 每分钟像素（电脑 `8 + 分钟 × 11.11`，到 1008；手机 `2 + 分钟 × 3.767`，到 341），段与段之间留 3px；`.s1`…`.s4` 的颜色按结论换 `--pass` / `--hold` / `--veto`，`aria-label` 同步 |
| 议题 `details.topic` | 一个议题一块：类名 `pass` / `hold` / `veto` 决定左线和徽章颜色；`.no` 写序号与时长、`.badge` 写结论；`<ul>` 两三条讨论要点；`.res` 一句决议；`.who` 提出人。增删议题直接复制 / 删掉整块（电脑上三栏，多于三个会自动换行） |
| 待办 `li.todo` | 一项一块：`data-owner`（筛选按钮由它自动生成）、`data-due="YYYY-MM-DD"`（倒计时由它算）；`.t-what` 事项 + 来源议题，`.t-who` 负责人，`<time>` 写静态截止日期（不跑脚本时显示它）。按截止时间排 |
| 文末「请参会人确认」 | 截止日、引导语、表单里给谁发消息（`WHY.table_not_found`）；三个选项的 `value` 就是写进 `status` 列的值，改了要同步脚本里的 `LABEL` |
| 配色 | `:root` 一套、暗色两处（`[data-theme="dark"]` 与 `prefers-color-scheme`）同改 |
| 页脚 | 平台标志与名称（与 `src/theme.ts` 的 `MARK_SVG` / `PUBLIC_NAME` 逐字一致）；发自己的纪要时整段删掉 |
| `manifest.json` | `title` / `share.title` / `share.desc`（微信卡片上的字）；节增减时 `sections` 与页里 `id` / `data-track-section` 三处同改 |

## 数据表

确认表单写进数据表 `confirms`，列 `name` / `status` / `note`（`status` 取「确认无误」「有补充」「有异议」，`note` 为补充内容）。发布后先建表，并打开微信身份、每人只保留最新一条：

```
get_data  proposal_id: <id>  table: "confirms"            # 拿 revision（新表为 0）
set_data  proposal_id: <id>  table: "confirms"  columns: ["name","status","note"]  rows: []
          identity: "wechat"  per_reader: "latest"  append_open: true  revision: 0
```

- `identity: "wechat"`：读者用微信身份提交，读回行带 `_by`（`{id, name, avatar}`），页面用它署名，不信自填的名字。
- `per_reader: "latest"`：同一个人改了几次只显示最新一条；历次提交在 `list_data_rows` 里都留着。
- 不建表时读回区保持「还没有人回复」，提交会提示「确认通道还没开」。本地 `space-cli serve` 把提交写进包里的 `_data/confirms.json`，试完改回 `[]`。

## 怎么发出去

单文件，最省事的是 MCP `publish_file`：

```
publish_file
  filename: "index.html"
  content: <index.html 全文>
  title: "Q4 新品上市协调会 · 会议纪要"
  manifest: <manifest.json 的内容，去掉 entry>
  hold: true            # 先看预览，确认后再发
```

然后按上一节建好 `confirms` 表，用 `share` 设成口令可看或发给同事，把链接贴进会议群。会后根据补充意见改纪要，再调一次 `publish_file` 并传 `proposal_id` —— 链接不变。用 `list_data_rows table=confirms` 读回谁确认了、谁有补充。

## 素材

没有位图；标志、头像、时间轴都是内联 SVG / 文字。`thumb.webp` / `phone.webp` 由 `examples/verify-shots.mjs` 从成品截出，不进发布包。
