企业 问卷分析

Odoo 企业版 Survey + Spreadsheet 为什么不是“导出问卷结果”而已:列展开、评论拆列与日期格式管线讲透

基于 documents_spreadsheet_survey 源码与测试,讲清问卷结果进入电子表格时为什么要按题型展开列、把 comments 单独拆列,并把 datetime/date 转成 spreadsheet number 与 locale format。

企业 其他
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

很多人觉得“问卷分析进表格”就是导出 CSV。但 /home/ubuntu/odoo-temp/enterprise/documents_spreadsheet_survey 做的远不止导出:它是在把问卷答案重写成适合电子表格继续分析的数据结构

参考入口:

  • enterprise/documents_spreadsheet_survey/models/survey_survey.py
  • enterprise/documents_spreadsheet_survey/controllers/survey.py
  • enterprise/documents_spreadsheet_survey/tests/test_spreadsheet_survey_results.py

一、为什么不是“一行一个答案明细”

_get_survey_values() 输出的是二维数组,但组织方式并不是常见的明细表,而是“列为问题、行为受访者提交”的矩阵。第一列还是 Timestamp,之后再按问卷配置补 User、Attempts、Score、Quiz passed 等列。

这说明官方更看重的是让业务用户直接在表格里做横向比较,而不是让他们先做透视清洗。

二、题型不同,列展开策略也不同

源码对不同 question_type 分别处理:

  • 单选/多选:答案列 + 评论列;
  • matrix:每个 matrix row 单独成列,必要时另加评论列;
  • 其他题型:按 _get_answer_value() 直接落列。

这一步很关键。问卷如果不按题型展开,后续表格分析会变得非常难用,尤其是矩阵题和带评论的选择题。

三、为什么 comments 要单独拆列

选择题 comments 并没有和答案拼在同一个单元格里,而是生成 Comments - 问题标题 这类独立列。官方显然不想让“标准化答案”和“自由文本补充”混成一格,因为两者后续分析方式完全不同。

这也是一个很值得借鉴的设计:定量字段和定性备注最好从导出层就分开。

四、日期和分数不是字符串导出,而是电子表格原生格式

datetime/date 会被转成 spreadsheet date number,并附带 locale format;分数则写成小数并附 '0.00%'。这说明目标不是“把值显示出来”,而是“让表格继续能排序、过滤、公式计算”。

很多系统导出看起来能看,实则全是字符串;Odoo 这里明显是按电子表格二次分析来设计的。

五、测试透露的边界

测试覆盖了:

  • 单个回答、多回答、多问题;
  • 简单选择题带评论;
  • 多选题;
  • matrix;
  • 时间字段格式。

这说明官方把“问卷转表格”视为一个结构化数据工程问题,而不是附件导出功能。

六、结论

documents_spreadsheet_survey 的价值,不是省一次导出点击,而是把 Survey 的答案模型转换成 Spreadsheet 真正适合继续分析的表结构。列展开、评论拆列、格式转换,决定了表格是能继续算,还是只能截图汇报。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。