一、最终目标
[
{
date:"20230304",
userID:"",
bookCode:"" // 当前学习的词书code
needReviewCount:9,// 今日须复习的卡片数,
reviewCount:1, //已复习的卡片数,
practiceTodayCardCount:10, //完成新学的卡片数,
hasFinishReviewPlan:true, //是否完成复习计划,
hasFinishLearningPlan:true, //是否完成新学计划
}
]
二、这几个数的来源与变更
1. 创建
在拉取homeData时,判断今日是否存在,如不存在,则创建
{
date:"20230304",
userID:"xxx",
bookCode:"xxx"
needReviewCount:9,
reviewCount:0,
practiceTodayCardCount:0,
hasFinishReviewPlan:true, // 这里判断needReviewCount==0
hasFinishLearningPlan:false,
}
2. 变更
在practice以后,进行变更。
须计算出,本次新学的卡片数、完成复习的卡片数、状态
- 今日完成的新学卡片数
- practice_card_record表,获取今日的练习记录[practiceCardIDList]
- 本次完成的新学卡片数:获取这些Card中,练习次数==1,且bookCode == currentCode的数量,
- 用本次完成数,加上数据库中的practiceTodayCardCount,得到今日的完成的新学卡片数
- 完成复习的卡片数
完成复习的卡片数 = 今日初始的needReviewCount - 当前剩余的须复习的卡片数 - 状态
- hasFinishLearningPlan:practiceTodayCardCount >= planCount
- hasFinishReviewPlan:needReviewCount==0
三、能否计算出历史的数据?
1. 已有数据
- 每次的练习记录
- 卡片的创建记录
2. 创建
根据practice_card_record表,去重date的cardID,即一张卡片单日练习多次,也只算一次。
粗糙的:
如果practice_date == card.createDate,则新学数++
否则,复习数++