ReviewResultSerializer.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const makeId = require("../../util/makeId");
  2. const dayjs = require("dayjs");
  3. /**
  4. * @description 互评作业结果汇总
  5. * @typedef {Object} ReviewResultSerializerType
  6. * @property {number|string} reviewId 老师布置一次互评作业id
  7. * @property {string} name 对应的文档作业名称
  8. * @property {number} reviewDdl 互评结束时间
  9. * @property {number} argueDdl argue结束时间
  10. * @property {number} endDdl 最后结束时间
  11. * @property {string} state ["DEFAULT","REVIEWING","ARGUING","SOLVING","END"]
  12. * @property {Number} completeRate (int)(完成率*100)
  13. * @property {PassedCDFType[]} passedCDF cdf图
  14. * @property {CheckListAnalysedItemSerializerType[]} checklistItems check汇总
  15. */
  16. /**
  17. * @description 互评作业结果汇总
  18. * @typedef {Object} PassedCDFType
  19. * @property {number} passedNumber
  20. * @property {number} passedRatio
  21. */
  22. /**
  23. * @description
  24. * @typedef {Object} CheckListAnalysedItemSerializerType
  25. * @property {number|string} id checkListItem id
  26. * @property {string} content 评价内容
  27. * @property {number} passedNum 通过量
  28. * @property {string} explain 老师说明
  29. */
  30. /**
  31. * @description 生成 ReviewResultSerializerType 互评作业结果汇总
  32. * @returns {ReviewResultSerializerType}
  33. */
  34. const reviewSimpleSerializer = ({ reviewId = makeId(), state = "DEFAULT" }) => {
  35. /**
  36. * @return {PassedCDFType}
  37. */
  38. const passedCDF = (passedNumber = 30) => ({
  39. passedNumber,
  40. passedRatio: passedNumber
  41. });
  42. /**
  43. * @return {CheckListAnalysedItemSerializerType}
  44. */
  45. const checkListAnalysedItemSerializer = () => ({
  46. id: makeId(),
  47. content: "评价内容",
  48. passedNum: 10,
  49. explain: "老师的说明说明说明说明"
  50. });
  51. return {
  52. reviewId,
  53. name: "需求规格说明文档",
  54. reviewDdl: dayjs("2018-9-21").unix(),
  55. argueDdl: dayjs("2018-10-21").unix(),
  56. endDdl: dayjs("2018-12-21").unix(),
  57. state,
  58. completeRate: 89,
  59. passedCDF: [passedCDF(), passedCDF(), passedCDF()],
  60. checklistItems: [
  61. checkListAnalysedItemSerializer(),
  62. checkListAnalysedItemSerializer(),
  63. checkListAnalysedItemSerializer()
  64. ]
  65. };
  66. };
  67. module.exports = reviewSimpleSerializer;