协议设计
概述
领域标准保障概念互通,是全系统的基础和核心,实现上主要基于 Schema 完成全生命周期的管理。
Schema 最核心的是题型,问卷编辑器本身也受到问卷题型的影响,不同的题型配置需要搭配不同的设置模板,所以编辑器也需要一个 Schema 来描述和约束。基于此思路,我们设计了 Meta Schema 协议,用来描述问卷 Schema 的元协议,一份 Meta Schema 同时约束问卷业务协议和题型物料的搭配使用,可用于搭建端的编辑器产出问卷 Schema 和组件的资产包、用于渲染段的渲染器产出页面和问卷表单。
术语约定
Meta Schema
元协议,描述了 Schema 允许的字段、结构、枚举值,使用 Meta 生成 Schema。
问卷 Schema
问卷业务协议,在 Meta Schema 的结构框架下,用于描述业务需要的结构,能够描述题型、问卷有效期、答题时间、提交限制等。
编辑器
实现问卷管理端可视化加工问卷的能力。编辑器引用 Meta Schema 实现题型物料描述协议,实现设置器构建题型的协议,实例化问卷协议。
渲染器
实现问卷投放端渲染实际投放的问卷。渲染器使用编辑器产出的代码包和问卷 Schema 来渲染页面和表单,根据用户交互产生表单问卷数据实例。
协议结构
业务描述
内容为问卷协议、题型协议,业务协议围绕问卷领域描述了 6 项配置:
-
基础配置
-
题型配置
-
页头配置
-
页尾配置
-
提交配置
-
皮肤配置
这份协议的结构稳定,每一项配置都支持扩展使用,并且保证每份配置的独立性和完整性。
详情可查《问卷业务协议规范》
物料描述
内容为题型物料协议, 包含题型和设置器,在实现业务协议的同时,还增加了业务协议交互组件的描述协议。
详情可查《题型物料协议规范》
题型设计
问卷领域最核心的部分是题型和逻辑,最基础的题型有两类:开放式题型和封闭式题型。基础的值类型有两种:数值型和文本型,数值型仅用于评分和 NPS 题型。
所有的题型基于 BaseElement 派生出来,实现两个基本的开放式题型 InputElement 和封闭式题型 OptionElement,单行输入题型继承 InputElement,单选题型继承 OptionElement,具体实现的题型使用包装器注册到题型的 Registry,根据规则自动解析对应的题型实现类。
对于题型的判断方法,可以放在 BaseElement 实现,使用 baseType get 方法获取当前题型最基本的题型枚举值如 block、text 或者 option,用于基本题型的抽象方法,可以实现 isOption、isMatrix、isOther 判断该提醒更具体的属性。
每个具体实现类,可以实现自己的特性,比如 NPS 虽然继承的选项题型,但是本身并没有 options 值,需要根据 npsMin 和 npsMax 生成数值序列,放在 options 字段中,实现兼容选项类题型,那么在显示逻辑、跳题逻辑、无效问卷逻辑等设置时,就不需要考虑选项类题型的差异性了。而对于引用逻辑,可以考虑使用 compute 方法实现引用。
题目
题目包括了整个问题,包括题干及其它相关信息,例如选项、提示、逻辑等。题目的作用是帮助受访者理解问题的目的和意义,并提供必要的上下文和信息,以便受访者能够正确回答问题。
例如,"你最近是否购买过我们的产品?如果是,请回答以下问题:"这个例子中,"你最近是否购买过我们的产品?"就是题干,"如果是,请回答以下问题:"则是题目的一部分,它提示受访者接下来将要回答的问题。
题干
题干是指问题的具体描述或要求。题干通常是一个短语、句子或段落,旨在引导受访者回答问题并提供必要的上下文信息。
例如:你最近是否购买过我们的产品?
题型
题型是指问题的结构和形式,包括选择题、填空题、打分题、矩阵题等。题型决定了问题的回答方式和回答内容的形式。例如,选择题可以让受访者从给定的选项中选择一个或多个答案,而填空题则要求受访者填写自己的答案。
题型的设计允许自定义扩展,以下是问卷支持和可自定义扩展的题型:
-
开放式题型
-
单行输入题
-
多行输入题
-
手机号题
-
-
填空题
-
图片上传题
-
问卷上传题
-
矩阵单行输入题
-
矩阵多行输入题
-
-
隐藏题
-
封闭式题型
-
单选题
-
多选题
-
评分题
-
NPS 题
-
投票题
-
判断题
-
排序题
-
预约题
-
车牌选择题
-
车型选择题
-
日期选择题
-
时间选择题
-
城市选择题
-
多级联动题
-
地图选择题
-
矩阵单选题
-
矩阵多选题
-
组合题
-
-
Block 类型
-
段落标题
-
协议题
-
分页
-
矩阵
在矩阵题中,行和列是两个重要的概念,它们通常用于组织问题和选项,以帮助受访者更清晰、更快速地回答问卷。行是一系列类似的问题,每个问题通常包含一个描述或标签,例如"您对以下哪些方面比较关注?","以下是本产品的各个特性,请选择您认为最重要的三个特性"等。受访者需要根据自己的看法,在该问题下面选择一个或多个选项。列是一组类似的选项,通常包含一系列相关的描述、属性、特征等,例如"价格低廉","质量可靠","操作简单"等。受访者需要根据自己的看法,在该列下面选择一个或多个选项。行和列的交叉点形成了一个单元格,每个单元格代表了一个特定的问题和选项组合,它们一起构成了矩阵题的基本结构。受访者需要在每个单元格中选择一个或多个选项,以表达自己的看法、态度或偏好。
逻辑
显示
显示逻辑是指根据受访者之前的答案,控制后续问题是否显示的逻辑。显示逻辑也称为条件逻辑或分支逻辑。
跳题
跳题逻辑是一种显示逻辑,它根据受访者当前的答案,决定要跳过接下来的问题或页面。跳题逻辑也称为跳过逻辑或跳转逻辑。
互斥
互斥逻辑是一种显示逻辑,它控制多个问题之间的关系,确保受访者只能回答其中一个问题。互斥逻辑也称为排他逻辑,通常在设计单选题和多选题时使用。
例如,在一个问卷中,受访者可能需要回答一个单选题,其中有三个选项:选项 A、选项 B 和选项 C。如果使用互斥逻辑,那么当受访者选择了选项 A 时,选项 B 和选项 C 将被自动禁用,以确保受访者只回答其中一个选项。同样地,当受访者选择了选项 B 或选项 C 时,选项 A 也将被自动禁用。
随机
随机逻辑是一种显示逻辑,它可以在问卷设计中随机选择或排列问题或选项,以减少潜在的顺序偏差或顺序效应。随机逻辑通常应用于涉及顺序影响的问题,例如对某个产品或服务的满意度评价。
引用
引用逻辑是一种问卷逻辑,也被称为后续问题逻辑或者嵌套逻辑。该逻辑可以在问卷中提供更多的深入信息,通过让受访者参照先前回答的问题,来回答后续问题。
协议手册
关于我们
感谢看到最后,我们是一个多元、包容的社区,我们已有非常多的小伙伴在共建,欢迎你的加入。
Github:XIAOJUSURVEY
社区交流群
微信:
Star
开源不易,请star 一下 ❤️❤️❤️,你的支持是我们最大的动力。