@yiranblade
2018-07-11T08:50:26.000000Z
字数 3187
阅读 274
工作
10位ID如何生成,生成规则?
问卷名称字数有限制吗?
问卷共有几种状态?
人工下发
多老师->多个学生(数据库扩展要考虑)。
第一版设计需要考虑所有情况。
题目评语
维度评语
问卷总评
{
"evaluate_user_info":(测评人员信息)
"questionnaire_explain":(问卷说明)
"evaluate_data":(测评数据){
"total_dimension_evaluate":(总评与维度评价)
"question_evaluate":(题目评价)
"test_result_avg":(本问卷测评结果平均分)
}
"evaluate_chat":(测评报告图表)
}
{
具体问题分析
}
{
"content":[{
"index_id":(维度总评)
"question_id":(问题ID)
"question_name":(问题名称)
"question_score":(问题得分)
"question_remark":(问题评价内容)}]
}
{
"score":(得分具体分为平均分最高分和总分,具体设置参照用户选择决定),
"score_extent_remark":,
"is_reedit":(测评人员是否可以再次编辑),
"view_index_chat":(展示维度图表,此处如果为雷达图需要加入限制下级指标大于2个)
}
| 接口名称 | 主要功能 | 设计思路 | 字段详情 |
|---|---|---|---|
| 增添问题 | 当管理员在创建新问卷时进行问题的单次添加 | 对于问卷当中的一个问题考虑到其在未来扩展时会具有各种各样的类型。此处设计打算建立工厂类,由工厂负责产生具体的解析类进行问题解析,每当增添新的问题类型时,仅仅需要增添新的解析类,可以极高增强可扩展性,数据库存储value采用JSON格式 | {"title":"","data":[{"content":,"score":,"description":,"evaluate_content"}]} |
| 问题关联维度 | 当管理员设置完问题后进行维度和评价内容设置以及将问题与其绑定的接口 | 此处后端将前端传递的JSON字符串解析完毕后,应当先调用维度保存model将维度信息存入数据库,随后再调用维度关联相关代码将问题与维度关联起来。此处还应给出当前问卷未绑定维度的问题信息便于用户选择 | {"indexName":[questionId]} |
| 问题列表 | 根据问卷ID获取未绑定维度问题 | 此处承接上一条接口,主要辅助上面进行工作 | {questionId} |
| 根据问题ID修改问题 | 当管理员需要修改之前保存过的问题时调用该接口 | 对于修改应当分为两种问卷状态,当问卷处于草稿状态时,问题修改无任何限制,当问卷处于已提交状态修改仅限于错别字,规则满足为大于5个字&&不足百分之50。所以后端逻辑设计应当考虑在每次修改操作前查看当前问卷状态,随后再进行下一步逻辑处理。此处数据校验规则需要手动完成 | 需要传递问题ID以及需要修改字段{"questionId"} |
| 接口名称 | 主要功能 | 设计思路 | 字段详情 |
|---|---|---|---|
| 创建整个问卷 | 管理员从点击创建问卷开始到提交问卷的最终提交部分 | 问卷的主要部分维度和问题等都在过程中保存,故问卷最终保存内容实际为最后对于问卷的设置字段以及总评内容,后端在保存内容的同时需要联动修改问卷状态为已完成编辑 | {"title":,"explain"},后端保存成功返回问卷id |
| 修改发布状态 | 当问卷创建完毕时,对于问卷管理员可以进行发布状态修改操作 | 当问卷处于停止状态时,是不可以进行下发使用的,后端此处设计应当家加上判断逻辑 | {"questionnaireId":"",status:""} |
| 问卷列表 | 根据问卷ID或者名称创建人名称获取问卷列表 | 针对查询对该三个字段建立索引,使用like进行完全模糊匹配搜索 | {"questionnaireId":"","questionnaireName":"","createUser":"",} |
| 问卷详情 | 问卷详情主要获取问卷的详细信息,包括维度设置,问题设置 | 此处后端进行多次子查询将问题维度等信息全部返回给前端 | {"questionnaireId"} |
| 使用问卷 | 该接口主要是创建一个关联事件,主要涉及到将问卷关联给班 | 当前端调用该接口时,后端需要首先去检查当前问卷所处的状态是否已经发布,当问卷状态为暂停时无法进行关联 | "questionnaireId":"","relation":{"evaluate_user":[""],"evaluated_user":[""]} |
| 班级列表 | 该接口为获取班级列表接口 | 班级信息获取从教务系统中获取 | |
| 编辑问卷 | 对问卷进行修改 | 和问题一样在修改前需要检测问卷所处状态,如果问卷已经完成发布则需要加入限制规则,即百分之50不超过5个字,此处逻辑与问题修改基本一致 | {"name":"","explai":""} |
| 查看问卷结果 | 给出点击相关问卷的名称创建时间以及下发数目 | 后端此处下发数目统计直接COUNT比较耗费时间,故统计下发事件表中的各个记录的次数进行叠加即可 | {"questionnaireId":""} |
| 问卷下发记录列表 | 根据时间,关键字等信息进行检索 | 直接进行模糊查询匹配 | {"start_time":"","end_time":"","event_name":"","class":""} |
//+ 下发报告
| 接口名称 | 主要功能 | 设计思路 | 字段详情 |
|---|---|---|---|
| 导出单个报告 | 导出当前数据的报告 | 封装工具类处理EXCEL,然后生成调用框架下载功能 | |
| 批量导出报告 | 导出所选的所有数据的报告 | 定义自己的EXCCEL处理函数,此处也可以考虑设计工厂 | |
| 答卷列表 | 获取当前下发事件的所有关联结果 | 从问卷填写表中获取相关数据返回给前端,需要考虑一次性都给前端还是设置 | {"eventId":""} |
| 答卷详情 | 根据答卷ID获取问题和答案 | 关联一并传递 | {"finishedId":""} |
| 修改问题答案 | 根据问题ID修改问题答案 | 每次修改生成新的JSON覆盖之前的数据进行修改 | {"finishedId":"","answer":""} |
| 接口名称 | 主要功能 | 设计思路 | 字段详情 |
|---|---|---|---|
| 登录接口 | 教师端进行登录 | 查看小程序登录文档后,应当在服务端增添登录接口,对每次老师使用微信登录成功后,验证教务系统里检索是否绑定手机,如果没有则进行绑定操作,绑定后设置登录状态进行评价 | |
| 绑定手机接口 | 将手机与老师微信进行绑定 | 需要创建关联表将二者进行关联,具体还需要查看教务设置 | |
| 获取手机验证码接口 | 调用现成逻辑完成,打入队列,一次调用失败马上考虑下一种情况 | ||
| 获取教师关联问卷 | 当老师进入系统后,需要提示老师其当前待评价已关联问卷 | 后端给出问卷标题等信息即可 | {"teacherId":""} |
| 获取问卷关联被评价人信息 | 当老师需要评价时,需要将问卷绑定的被评价人信息全部展示 | 查询关联事件表获取 | {"teacherId":""} |
| 提交答案 | 将最后填写问卷的答案进行提交 | 后端生成问卷完成记录入表 | |
| 提交维度评价 | 在当前某些问题评价完成后进行维度评价 | 存储进问卷完成记录表 | |
| 计算当前得分 | 在教师进行完全部评价后需要给出得分 | 得分计算需要先行检查问卷设置总评规则,然后确定计算规则。此处设计需要采用装饰者模式,定义同一的计算接口,内部实现采用继承以便适应将来扩展不同的计算规则 | |
| 提交总评接口 | 当教师完成整体评价后进行整个问卷的总评 | 后端直接存储即可 | |
| 显示填写的当前问卷信息 | 其所有已经填写过的问卷内容,包括问题和答案便于老师查看 | 后台在此处需要在用户第一次将问卷填写后,将答案与问题进行关联后返回大JSON给前端。过程中分别查询问题表和问卷填写记录表。 |
| 接口名称 | 主要功能 | 设计思路 |
|---|---|---|
| 获取日志列表 | 给予管理员操作日志记录 |
评价人事件
包含评价人与当前评价事件关联关系