跳到主要内容
版本:1.3.0

协议规范

概念和原理​

领域模型​

问卷的本质是收集数据与洞察数据,数据贯穿于问卷的全生命周期。从创建开始的数据定义,到回收时的数据加工,再到分析的数据处理,以及数据血缘关系的追踪,在这个过程中,数据不断地发生变化。通过 Schema 来表达领域知识和数据定义,以及数据之间的关联,使得问卷能够支持多样化的应用场景。

B 端问卷设计实际是在设置问卷 schema 的值,C 端基于 schema 生成问卷内容,进而产生回收数据。

领域协议​

题型是问卷的核心基础元素,随着业务场景的复杂度提升,除了数据的管理,我们还需要对题型组件进行协议约定以便更好地复用和管理。所以我们把领域协议拆分成两部分,问卷业务协议 + 物料协议:

1、问卷业务协议,即 问卷 Schema

业务描述:问卷协议、题型协议。

2、物料协议,即 UI Schema

物料描述: 题型物料协议。

以下我们主要围绕问卷 Schema 展开讲解,UI 物料组件的设计原理可查看 题型场景化设计和题型物料化设计。

问卷 Schema​

问卷 Schema 可以分为两部分:

1、问卷基础配置如有效期、主题配置等。

2、不同题型有不同的配置。

1、基础信息 Schema 结构​

问卷基础信息的 Schema 模板维护在服务端:

server/src/modules/survey/template/surveyTemplate/templateBase.json

2、题型信息 Schema 结构​

前端物料库维护题型字段,不同的题型有不同的配置文件 meta.js。

如 web/src/materials/questions/widgets/InputModule/meta.js,具体题型的字段可查 题型协议字段。

(后续需要迭代成动态的方式进行维护,而不是前端一份后端一份)

协议设计​

概述​

领域标准保障概念互通,是全系统的基础和核心,实现上主要基于 Schema 完成全生命周期的管理。

Schema 最核心的是题型,问卷编辑器本身也受到问卷题型的影响,不同的题型配置需要搭配不同的设置模板,所以编辑器也需要一个 Schema 来描述和约束。基于此思路,我们设计了 Meta Schema 协议,用来描述问卷 Schema 的元协议,一份 Meta Schema 同时约束问卷业务协议和题型物料的搭配使用,可用于搭建端的编辑器产出问卷 Schema 和组件的资产包、用于渲染段的渲染器产出页面和问卷表单。

图片

术语约定​

Meta Schema​

元协议,描述了 Schema 允许的字段、结构、枚举值,使用 Meta 生成 Schema。

问卷 Schema​

问卷业务协议,在 Meta Schema 的结构框架下,用于描述业务需要的结构,能够描述题型、问卷有效期、答题时间、提交限制等。

编辑器​

实现问卷管理端可视化加工问卷的能力。编辑器引用 Meta Schema 实现题型物料描述协议,实现设置器构建题型的协议,实例化问卷协议。

渲染器​

实现问卷投放端渲染实际投放的问卷。渲染器使用编辑器产出的代码包和问卷 Schema 来渲染页面和表单,根据用户交互产生表单问卷数据实例。

协议结构​

业务描述​

内容为问卷协议、题型协议,业务协议围绕问卷领域描述了 6 项配置:

  1. 基础配置

  2. 题型配置

  3. 页头配置

  4. 页尾配置

  5. 提交配置

  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 也将被自动禁用。

随机​

随机逻辑是一种显示逻辑,它可以在问卷设计中随机选择或排列问题或选项,以减少潜在的顺序偏差或顺序效应。随机逻辑通常应用于涉及顺序影响的问题,例如对某个产品或服务的满意度评价。

引用​

引用逻辑是一种问卷逻辑,也被称为后续问题逻辑或者嵌套逻辑。该逻辑可以在问卷中提供更多的深入信息,通过让受访者参照先前回答的问题,来回答后续问题。

协议手册​

《问卷业务协议规范》