工单类型与表单
编写产品类型树、不可变表单版本与内部状态。
类型树与路由
类型属于一个产品,最多三级。父类型即使有子类型,只要拥有有效当前表单,仍可供 客户选择。客户选择类型,不选择模板或版本。路由使用最近已配置团队的祖先类型, 再回退到租户默认团队;目标团队必须属于相同租户并可用于该产品。
每个产品有隐藏的 unclassified 回退类型,用于类型判断不明确的有效入站邮件。
它不能被客户选择或删除。租户管理员可编写复用预设树,产品管理员复制有效子树到
产品;复制后没有与预设的实时关联。
不可变版本
一个类型最多一个表单系列。每次保存创建下一版本并立即成为当前版本,没有草稿/发布 阶段。字段 key、选项 value、验证和条件共同构成提交协议。
此前当前版本仍可用于已打开的客户表单,直到明确作废。作废不可逆,需记录原因, 有效表单的当前版本不能作废。回退是把旧版本复制成新版本,而非编辑旧记录。
工单固定选择的类型 ID、提交版本和类型路径快照。重命名、移动或归档配置不会改写 历史呈现。类型/表单使用归档与恢复,不物理删除;有有效子类型的父类型不能归档, 已归档类型/表单不提供给新的客户提交。
API 新建需提交 ticketTypeId、templateVersionId、主题、内容和表单 metadata。
服务器在路由和写入前检查产品归属、版本有效性、必填字段与条件。
内部业务状态
布尔或有限选项状态只属于一个具体产品类型,仅 ToB 可见,不是客户表单元数据。
每次工单值变更写入 internal_state_changed 历史。归档定义保留已有值供查看,
但不能再用该定义修改工单。
通过产品语言翻译显示标签,保持 key、value、条件 和历史提交不变。