公开表单
公开表单用结构化问卷替代人工记录需求。一个表单类型 = 一份版本化的问卷定义;客户凭公开链接填写,提交后拿到一个专属链接;之后凭这个链接随时回访、修改,每一次写入都是一条只增不改的修订记录。
// 一句话理解
用邮件和聊天记录收集需求,最后总会出现「客户到底说的是哪个版本」的争议。表单把这件事变成账本:每次修改是一条新修订,任何时刻都能回看当时填的是什么。
与数据应用的区别
| 数据应用 | 公开表单 | |
|---|---|---|
| 定位 | 数字员工临时造的收集页 | 长期维护的正式问卷 |
| 定义 | 提交时声明,随应用一起存在 | 独立的版本化定义文件,改问卷要升版本 |
| 提交后 | 只增记录,填写者拿不到回看入口 | 发放专属链接,填写者可回访、修改、看历史 |
| 字段能力 | 基础字段 | 基础字段 + 条件字段 + 表格(多行) |
| 典型用途 | 一次性登记、现场记录 | 需求对接、供应商准入、正式申报 |
三个不变式
定义即快照Versioned definition一个表单类型对应一份定义文件,注册时即被严格校验——定义写错在上线之前就会被拦住,而不是等客户填到一半才出错。改表单意味着改定义并升版本号;已发出去的链接问什么,由它当时的定义决定。渲染器与校验器共用同一份定义,字段规则不双写。
链接即凭证Link as credential提交成功后发放一个随机令牌,带令牌的链接是唯一的读写入口——不需要注册账号,不需要登录。令牌与表单类型对不上时按「不存在」处理,不泄露是否存在。
只增不改的账本Append-only ledger首次提交是第一条修订;之后每次修改在事务里追加一条新修订并把指针前移。旧修订永远不被更新或删除。并发修改由唯一性约束兜底:两个人同时改,后一个会收到明确的冲突提示,而不是悄悄覆盖前一个。校验失败的提交完全不进账本。
字段能力
- 基础字段——文本、邮箱、多行文本、单选。每个字段可标注必填、长度上限、占位提示与说明文字。超长值直接拒绝,不静默截断。
- 条件字段——选中某个选项后才出现并生效的字段。用于「选了这一项才需要填的补充信息」,未选中分支的残留内容会被当作未知字段拒绝。
- 表格字段——可增删行的多行结构,每列是一个基础字段或单选。用于清单类信息,可设定最少与最多行数。
- 凭证标注——需要填写访问凭证一类的字段可以标注为敏感,在界面上以等宽字体呈现,并在运维视图中默认遮蔽。
一次完整的往返
- 把表单链接发给对方——不需要为对方开账号。
- 对方填写并提交。系统按定义严格校验,通过后生成第一条修订并返回专属链接。
- 对方保存这个链接。之后随时打开,看到的是自己上次填的内容,可以继续修改。
- 每次修改追加一条修订。页面上列出全部修订记录,可以按修订号回看任意历史版本(只读)。
- 内部按提交内容推进后续工作;有争议时直接调出对应修订,问题就结束了。
// 匿名收集的审计口径
公开表单没有登录身份,因此不产生常规的操作台账记录——修订账本本身就是它的审计记录。这是刻意的设计:为匿名填写者硬造一个身份,只会得到一个假的审计对象。
相关阅读
- 数据应用 — 更轻量的收集形态
- 消息渠道接入 — 表单收集到的渠道凭证如何落到运行时
- 阶段 0 · 诊断映射 — 需求对接表单在服务旅程中的位置