公开表单

公开表单用结构化问卷替代人工记录需求。一个表单类型 = 一份版本化的问卷定义;客户凭公开链接填写,提交后拿到一个专属链接;之后凭这个链接随时回访、修改,每一次写入都是一条只增不改的修订记录。

// 一句话理解

用邮件和聊天记录收集需求,最后总会出现「客户到底说的是哪个版本」的争议。表单把这件事变成账本:每次修改是一条新修订,任何时刻都能回看当时填的是什么。

与数据应用的区别

数据应用公开表单
定位数字员工临时造的收集页长期维护的正式问卷
定义提交时声明,随应用一起存在独立的版本化定义文件,改问卷要升版本
提交后只增记录,填写者拿不到回看入口发放专属链接,填写者可回访、修改、看历史
字段能力基础字段基础字段 + 条件字段 + 表格(多行)
典型用途一次性登记、现场记录需求对接、供应商准入、正式申报

三个不变式

定义即快照Versioned definition

一个表单类型对应一份定义文件,注册时即被严格校验——定义写错在上线之前就会被拦住,而不是等客户填到一半才出错。改表单意味着改定义并升版本号;已发出去的链接问什么,由它当时的定义决定。渲染器与校验器共用同一份定义,字段规则不双写。

链接即凭证Link as credential

提交成功后发放一个随机令牌,带令牌的链接是唯一的读写入口——不需要注册账号,不需要登录。令牌与表单类型对不上时按「不存在」处理,不泄露是否存在。

只增不改的账本Append-only ledger

首次提交是第一条修订;之后每次修改在事务里追加一条新修订并把指针前移。旧修订永远不被更新或删除。并发修改由唯一性约束兜底:两个人同时改,后一个会收到明确的冲突提示,而不是悄悄覆盖前一个。校验失败的提交完全不进账本。

字段能力

一次完整的往返

  1. 把表单链接发给对方——不需要为对方开账号。
  2. 对方填写并提交。系统按定义严格校验,通过后生成第一条修订并返回专属链接。
  3. 对方保存这个链接。之后随时打开,看到的是自己上次填的内容,可以继续修改。
  4. 每次修改追加一条修订。页面上列出全部修订记录,可以按修订号回看任意历史版本(只读)。
  5. 内部按提交内容推进后续工作;有争议时直接调出对应修订,问题就结束了。
// 匿名收集的审计口径

公开表单没有登录身份,因此不产生常规的操作台账记录——修订账本本身就是它的审计记录。这是刻意的设计:为匿名填写者硬造一个身份,只会得到一个假的审计对象。

相关阅读