目录
一、需求分析
目标是明确要做的需求,并且给需求设置优先级,从而明确开发计划。
a.项目功能梳理
按照模块梳理功能:
• 用户模块
-
- 注册
- 登录
- 管理用户 - 增删改查(仅管理员可用)
• 应用模块
-
- 创建应用
- 修改应用
- 删除应用
- 查看应用列表
- 查看应用详情
- 查看自己创建的应用
- 管理应用 - 增删改查(仅管理员可用)
- 审核发布和下架应用(仅管理员可用)
- 应用分享(扫码查看)
• 题目模块
-
- 创建题目(包括题目选项得分设置)
- 修改题目
- 删除题目
- 管理题目 - 增删改查(仅管理员可用)
- AI 生成题目
• 评分模块
-
- 创建评分结果
- 修改评分结果
- 删除评分结果
- 根据回答计算评分结果(多种评分策略)
-
-
- 自定义规则评分 - 测评类
- 自定义规则评分 - 打分类
- AI 评分
-
-
- 管理评分结果 - 增删改查(仅管理员可用)
• 回答模块
-
- 提交回答(创建)
- 查看某次回答的评分结果
- 查看自己提交的回答列表
- 管理回答 - 增删改查(仅管理员可用)
• 统计分析模块
-
- 应用评分结果分析和查看
b.核心业务流程
流程图:
文字描述:
- 用户注册 => 用户登录
- 用户创建应用 => 创建题目(包括题目选项得分)=> 创建评分规则(评分策略和评分结果)
- 管理员管理应用,审核发布(或下架)应用1808505663815548929_0.618888251920501
- 用户查看和检索应用列表,进入应用详情页,在线答题并提交回答
- 经过评分模块计算后,用户可查看本次评分结果
c.需求优先级
根据核心业务业务流程,明确需求开发的优先级。
- P0 为核心,非做不可
- P1 为重点功能,最好做
- P2 为实用功能,有空就做
- P3 可做可不做,时间充裕再做
排好优先级的需求列表如下,其实用表格的形式整理更好:
- 用户模块
-
- 注册 P0
- 登录 P0
- 管理用户 - 增删改查(仅管理员可用)P1
应用模块
-
- 创建应用 P0
- 修改应用 P1
- 删除应用 P1
- 查看应用列表 P0
- 查看应用详情 P0
- 查看自己创建的应用 P1
- 管理应用 - 增删改查(仅管理员可用)P0
- 审核发布和下架应用(仅管理员可用)P0
- 应用分享(扫码查看)P2
- 题目模块
-
- 创建题目(包括题目选项得分设置)P0
- 修改题目 P1
- 删除题目 P1
- 管理题目 - 增删改查(仅管理员可用)P1
- AI 生成题目 P1
- 评分模块
-
- 创建评分结果 P0
- 修改评分结果 P1
- 删除评分结果 P1
- 根据回答计算评分结果(多种评分策略)
-
-
- 自定义规则评分 - 测评类 P0
- 自定义规则评分 - 打分类 P0
- AI 评分 P1
-
-
- 管理评分结果 - 增删改查(仅管理员可用)P1
- 回答模块
-
- 提交回答(创建)P0
- 查看某次回答的评分结果 P0
- 查看自己提交的回答列表 P1
- 管理回答 - 增删改查(仅管理员可用)P1
- 统计分析模块
-
- 应用评分结果分析和查看 P2
排好优先级后,就可以根据优先级去设计接口和页面了。
企业中一般使用专业的系统或者表格来管理需求:
二、库表设计
对应需求分析中的功能梳理的模块,应该有 6 张表(统计分析表本节先不做)。
库名:yudada
数据库初始化文件:
- 创建库表:create_table.sql
- 初始数据:init_data.sql
创建时间、更新时间、是否删除等字段表中一定要有。
a.用户表
b.应用表
审核字段 4 件套:
reviewStatus int default 0 not null comment '审核状态:0-待审核, 1-通过, 2-拒绝',
reviewMessage varchar(512) null comment '审核信息',
reviewerId bigint null comment '审核人 id',
reviewTime datetime null comment '审核时间',
c.题目表
每个应用对应一个题目表的记录,使用 questionContent 这一 JSON 字段,整体更新和维护该应用的题目列表、选项信息。(方便后期排序题目等功能完善)
questionContent 结构,注意区分 result 和 score,分别用于统计两种不同应用类型的结果。
[
{
"options": [
{
"result": "I", // 如果是测评类,则用 reslut 来保存答案属性
"score": 1, // 如果是得分类,则用 score 来设置本题分数
"value": "A选项", //选项内容
"key": "A" //选项 key
},
{
"result": "E", // 如果是测评类,则用 reslut 来保存答案属性
"score": 0,
"value": "B选项",
"key": "B"
}
],
"title": "题目"
}
]
d.评分结果表
用户提交答案后,会获得一定的回答评定,例如 ISTJ 之类的,评分结果表就是存储这些数据的表。
**不同类型的应用使用不同的字段。**测评类用 resultProp,得分类用 resultScoreRange。
测评类应用
resultProp 的结构,结果属性集合 JSON:
["I", "S