/** * 问卷数据专有基础类型,只有完整问卷,部分问卷共用该数据结构 * 问卷模块的数据结构中关键的几个属性是有后台控制的,命名风格不一致,另外定义了。 */ interface CFPDSurveyUniqueBase { /** * 内置接口列表 */ embedApis: CFPDEmbedApi[]; /** * 使用的节点组列表 */ nodeGroups: CFPDNodeGroup[]; /** * 媒体库 */ mediaLibrary: { /** * 图片列表 */ imageList: CFPDImage[]; /** * 视频列表 */ videoList: CFPDVideo[]; }; } interface CFPDUniquenessVerificationConfig { /** * 是否启用 */ enabled: boolean; /** * 验证服务 code */ code: string; /** * 验证服务参数 */ params: CFPDParam[]; } /** * 问卷数据通用基础,完整问卷,部分问卷,问卷模块都共用该结构 */ interface CFPDSurveyCommonBase { /** * 导出时装载的主语言 */ currentLang?: LANG_LOCALE; /** * 多语言包数据,是多语言的一种存在方式, * 1. 常规情况下, * 历史情况:问卷保存和加载时,该属性不存在,因为这种情况下是靠后台分离保存了多语言, * 这样可以减少主cfpd的大小,答题端后面使用多语言的时候按需加载,避免初始加载所有的语言。 * 当前情况:为简化版本控制问题,已改成放到cfpd中, * 2. 导入/导出cfpd文件、使用/保存问卷模板等情况下,后台是没法负责保存多语言的,所以只能打包到cfpd中, * 正好这些情况下,无需为答题端优化。 */ langPack?: CFPDLangPackItem[]; /** * 节点列表 */ nodes: CFPDBNode[]; /** * 变量列表 */ variables: CFPDVar[]; /** * 唯一性验证配置内容 */ uniquenessVerification?: CFPDUniquenessVerificationConfig; /** * 预设样式选项列表 */ presetRichStyles?: CFPDPresetRichStyle[]; } /** * 全问卷的JSON表现形式的数据规范 */ interface CFPDFullSurvey extends CFPDSurveyCommonBase, CFPDSurveyUniqueBase { /** * 是否包含错误, * 高级版编辑器有复杂的错误处理程序来检测问卷是否包含错误, * 简易版编辑器只需检查一些必须输入的文字是否为空,如果为空则标记有错误,否则则标记没有错误。 */ errorInclude: boolean; /** * 问卷id */ surveyId: string; /** * 是否允许开启离线收集器 */ offlineEnabled: boolean; /** * 数据结构版本号,这个版本号是不会轻易变动的, * 其代表问卷数据结构重大变更的版本标记 * 只有payload数据结构发生重大变更,会影响兼容性是才会升级, * 每次保存payload时都会携带该版本,以后检查问题或处理兼容时更有迹可循 */ version: 3; /** * 代表系统的发布版本,这个版本号变化较频繁, * 每次更新功能或修复bug发布成产品是都有可能变动, * 保存时的payload中携带该版本,以后检查问题或处理兼容时更有迹可循 */ release: string; /** * 保存时间戳 */ timestamp: string; /** * 甄别阶段的题目复杂指数 */ checkComplexity: number; /** * 甄别阶段的题目复杂等级 */ checkComplexityGrade: SURVEY_WEIGHT; /** * 甄别阶段的题目预计要花费的答题时间 */ checkEstimatedTime: number; /** * 甄别节点最多可能题目数 */ checkLongestCount: number; /** * 总体复杂指数 */ complexity: number; /** * 总体复杂级别 */ complexityGrade: SURVEY_WEIGHT; /** * 被禁用语言列表 */ disabledLangs: LANG_LOCALE[]; /** * 测试用例列表 */ testCases: CFPDTestCase[]; /** * 预计回答总体问卷需要花费的时间 */ estimatedTime: number; /** * 指定的答题端地址, */ clientHost?: string; /** * 指定的答题端 SSR 渲染地址, */ clientSSRHost?: string; /** * 是否正在请求升级为V3 */ v3Requesting?: boolean; /** * 是否包含变量 */ hasVar: boolean; /** * 节点总数量 */ nodeCount: number; /** * 总体最多可能出现的题目数 */ longestCount: number; /** * 是新建问卷,新建问卷时使用,其他时候无需。 */ new?: boolean; /** * 问卷使用的主题信息 */ theme: CFPDTheme; /** * 变量样式配置 */ varStyles: CFPDVarStyleGroup; /** * 保存时的问卷缩放率 */ zoom: number; /** * 垃圾桶 */ trash?: CFPDTrash; } /** * 部分导入导出的问卷片段数据结构 */ interface CFPDPartialSurvey extends Partial, Partial { /** * 自动提示配置 */ autoCpltGroups?: CFPDCpltGroup[]; /** * 导入替换时需要豁免的id列表,这些id在导入时不会被替换, * 只有在复制黏贴的时候才会出现。 */ replaceExemptIds?: string[]; }