# Demo 入口验收说明

本文对应 issue #29，描述 Cloudflare Pages 上的可访问入口和离线验收方法。
它只验收静态演示材料与隔离的本地预览，不启动真实机器人、不读取真实配置，也不等同于上线发布或 Jetson 验收。

## Cloudflare Pages 构建产物

部署使用 Cloudflare Pages 免费计划。部署目录按 `.github/workflows/pages.yml` 中的静态站点清单生成，包含：

- `/index.html`：claw-bot 产品入口，展示环境、MCP 工具、语音闭环和安装方式。
- `/docs/jev-fast-path-demo.md`、`/docs/jev-system12-design.md`、`/docs/jev-paper-outline.md`：JEV 研究、架构和结果说明。
- `/jev-review/index.html`、`/jev-review/app.js`、`/jev-review/data.json` 与 `/jev-review/paper.md`：JEV 对照预览及其合成静态 fixture。Pages 页面自动回退到 `data.json`，无需后端即可展示一条明确标记的合成记录；不会调用模型或控制器。实时 `/api/*` 请求仍只在本地预览服务提供。
- `/server.json`：MCP Registry 元数据，可核对包名、启动命令和 `robot_*` 工具入口。
- `/skills/claw_bot/SKILL.md`：打包给决策 Agent 的能力边界和调用约束。
- `/docs/claw-bot-deploy-acceptance.md`：Jetson/运行态验收规约，作为参考材料，不在 Pages 构建中部署机器人运行时。

构建成功只证明 artifact 已生成；部署状态和页面内容以 Cloudflare Pages 部署回执及线上 URL 为准。

## Cloudflare Pages 线上静态验收

线上入口：<https://clawbot.bozhi.ai/>。

Cloudflare Pages 项目为 `claw-bot-demo`，位于持有 `bozhi.ai` zone 的
`Linjin@bozhi.ai` 账户（免费计划）；Pages 默认域名仍可作为部署回执入口，
但本验收以自定义域名为准。

按以下步骤验收：

1. 打开 <https://clawbot.bozhi.ai/>，确认首页返回 HTTP 200，并能访问文档、`server.json` 和安装说明。
2. 打开 <https://clawbot.bozhi.ai/jev-review/>，确认页面显示“合成数据”提示、场景选择和 `offline-preview-fixture` 记录。
3. 在 JEV 页面打开论文大纲，确认 <https://clawbot.bozhi.ai/jev-review/paper.md> 返回 HTTP 200。
4. 浏览器网络面板中不应出现必须成功的 `/api/data` 请求；页面应从同目录 `data.json` 和 `paper.md` 加载。
5. 该记录仅用于验证展示与页面交互，不代表模型质量、时延或机器人结果。静态模式不提供真实模型调用或机器人动作。

## 本地静态验收

在仓库根目录运行：

```bash
set -eu
site="$(mktemp -d)"
mkdir -p "$site/docs" "$site/jev-review" "$site/skills/claw_bot"
cp index.html homepage.css README.md README.zh-CN.md server.json "$site/"
cp -R assets "$site/assets"
cp docs/claw-bot-deploy-acceptance.md docs/demo-acceptance.md \
  docs/jev-fast-path-demo.md docs/jev-paper-outline.md docs/jev-system12-design.md "$site/docs/"
cp web/jev-review/index.html web/jev-review/app.js "$site/jev-review/"
node scripts/seed-jev-review-preview.js --static-dir "$site/jev-review"
cp skills/claw_bot/SKILL.md "$site/skills/claw_bot/"
test -s "$site/index.html"
test -s "$site/docs/jev-fast-path-demo.md"
test -s "$site/jev-review/index.html"
test -s "$site/server.json"
test -s "$site/skills/claw_bot/SKILL.md"
echo "static demo artifact: $site"
```

预期结果是所有 `test -s` 通过，并能从 `index.html` 看到 MCP、安装和语音闭环入口；`docs/jev-fast-path-demo.md` 能追溯离线 JEV 命令和限制；`server.json` 能看到 MCP 元数据。该检查不会联网调用模型或控制器。

## JEV 交互预览（本地、隔离）

JEV 界面的交互 API 由本地命令提供。使用合成端口和隔离输出目录。

先在隔离目录写入一条合成记录，再启动预览服务；该步骤不调用模型、不读取真实配置：

```bash
demo_home="$(mktemp -d)"
export CLAW_BOT_JEV_REVIEW_DIR="$demo_home/review"
node scripts/seed-jev-review-preview.js
JEV_REVIEW_PORT=14318 node bin/claw-bot-jev-review.js
```

在同一台机器打开 `http://127.0.0.1:14318/`，选择“合成离线 fixture”记录（ID 为 `offline-preview-fixture`） 后点击“重检并预览 claw-bot 命令”。不要设置 `TYPESAFE_API_KEY`，不要点击需要真实 Jev/GPT 服务的运行按钮。预览适配器使用独立内存状态和 dry-run 命令，输出应标注“隔离命令预览”且不连接控制器。完成后停止该前台进程并删除本次临时目录。

## MCP 预览（离线、无真实环境）

MCP 的可复现检查使用仓库测试和 fixture：

```bash
test_home="$(mktemp -d)"
HOME="$test_home" \
XDG_CONFIG_HOME="$test_home/.config" \
CLAW_BOT_DASHBOARD_PORT=18787 \
npm run test:mcp
```

`test:mcp` 验证 `robot_status`、环境路由、感知、动作、订阅和反馈的协议契约；测试使用内存/合成环境。它不读取用户配置，不访问 Jetson，不向真实机器人发送动作。

## 验收记录

逐项记录以下事实即可关闭本地验收：

1. Cloudflare Pages 部署回执存在，线上入口为 <https://clawbot.bozhi.ai/>。
2. 首页链接可打开 `/docs/demo-acceptance.md`、JEV 文档和 `server.json`。
3. 静态检查通过；本地 JEV 界面能加载静态资源。
4. MCP 合成测试通过；issue #9、#10、#11 对应修复已分别通过 #22、#24、#25 合入主分支。
5. 未执行真实模型调用或机器人动作。
