# Open WebUI Artifacts 教程：把人数表做成可离线运行的座位安排器

本次实际运行：Python标准库参考程序、业务边界检查与HTML渲染。未安装或运行Open WebUI，未调用模型、创建真实自动化、发送消息、建第三方PR或部署。人工基准和错误样稿均明确标注。

## 文件

input.json：原创输入；node-fields.json：字段教材，不能直接当平台导出文件导入；prompt.md：任务约束；schema.json：规范化观察结构；reference.py：本站手写参考；reference-output.json：实际本地输出；reference.html：参考产物；review-template.json：读者填写目标工具结果。

## 本地运行

```bash
python3 reference.py
python3 verify.py
```

用浏览器打开reference.html和seat-planner.html。不依赖模型或第三方账户。

## 真实平台步骤

1. 固定六组人数与四桌容量
A/B各4人、C/D各3人、E/F各2人，总18人；T1/T2各6座，T3/T4各4座。包内input.json与seat-planner.html为原创输入和手写参考，先检查初始分配。

2. 让模型输出完整HTML Artifact
Open WebUI0.12.2中提交prompt.md，明确要一个含HTML/CSS/JS的单文件，不是React组件或Markdown。生成可渲染内容后，右侧Artifacts才会出现交互预览。

3. 先完成v1的分配与统计
要求v1可选择小组和桌号，显示已安排、未安排、每桌剩余。逐组查看总人数18是否不变，不把一张静态座位图片当作可用工具。

4. 用v2补上超容量拦截
保持同一Artifact，要求只增加移动前容量校验和JSON导出；通过底部版本选择器比较v1/v2。把A组移入已有C组的T3，7人超过4座，应拒绝且原分配不变。

5. 检查预览权限与离线资源
若按钮无效，查看iframe Allow Scripts及CSP错误，不默认打开Allow Same Origin。检查没有外链字体、CDN脚本或远程请求；离线运行要把资源全部内联。

6. 保存HTML并真实点击验收
复制完整源码到seat-planner.html，用本机浏览器打开，测试超容量、移到未安排、重置和导出。包内参考已做本地浏览器交互；它是手写验收目标，不是模型生成结果。

7. 归档模型版本和实际导出
从自己的Artifact导出JSON，回读每组ID与人数、四桌容量和未安排列表。保留v1/v2源码及截图；聊天输出HTML不等于已经通过这些交互。

## 版本与许可

WebUI0.12.2；远端聊天模型计费，运行单文件网页不需本地LLM/GPU/终端服务。iframe脚本权限或CSP过严会使交互失效；不为方便预览默认打开Allow Same Origin。源码必须内联资源才能验证离线；不把手写参考HTML冒充模型已生成结果。保留品牌许可。

## 来源

- https://docs.openwebui.com/features/chat-conversations/chat-features/code-execution/artifacts/
- https://docs.openwebui.com/features/chat-conversations/chat-features/code-execution/

## 验收边界

原创6组来宾仅用A–F编号，共18人，4桌容量6/6/4/4；让模型生成单文件HTML/CSS/JS座位安排器，可选择小组和桌号、移动分组、显示剩余座位、重置及导出方案JSON。v1先能安排，v2增加超容量拦截并保留组ID。复制完整源码存seat-planner.html，在无网络浏览器实际打开；验收总人数守恒、超容量不能提交、未安排组不丢、导出JSON回读一致。

目标产品实跑时保存原生输出，不得把本包人工/手写参考改名冒充模型返回。所有人物、订单与规则均为虚构练习数据。

渲染说明：input.html、operation.html、reference.html和figures是随当前原创输入冻结的实际浏览器预览；修改输入后重新运行会更新reference-output.json，静态HTML不会自动重绘。目标软件原生结果请另存。
