feat(复习): 支持会话维度复习 + 标准导图按会话过滤(后端)
- MindMapNode 新增 sessionNum 字段
- BuiltinMindMapGenerator 生成节点时填充 sessionNum
- MindMapTreeTool.filterBySession() 按会话过滤标准导图
- recallCompare 接受 sessionNum 参数
- ReviewRecallRecordEntity 新增 sessionNum 字段
- Flyway V20260705_1: review_recall_records 加 session_num 列
- 新增 GET /study-sessions/tasks/{taskNum}/sessions 端点
This commit is contained in:
+7
-1
@@ -96,7 +96,7 @@ public class StandardMindMapServiceImpl implements StandardMindMapService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ReviewStandardMindMapEntity recallCompare(String taskNum, String recallOutline)
|
||||
public ReviewStandardMindMapEntity recallCompare(String taskNum, String recallOutline, String sessionNum)
|
||||
throws NotFindEntitiesException, OperationFailedException {
|
||||
ensureTaskExists(taskNum);
|
||||
|
||||
@@ -107,6 +107,11 @@ public class StandardMindMapServiceImpl implements StandardMindMapService {
|
||||
MindMapNode standardRoot = MindMapTreeTool.fromJson(standard.getContent(), objectMapper);
|
||||
MindMapNode recallRoot = MindMapTreeTool.parseOutline(recallOutline);
|
||||
|
||||
// 2b. 若指定了会话维度,过滤标准导图只保留该会话相关节点
|
||||
if (sessionNum != null && !sessionNum.isBlank()) {
|
||||
standardRoot = MindMapTreeTool.filterBySession(standardRoot, sessionNum);
|
||||
}
|
||||
|
||||
// 3. 执行对比(优先 AI 语义对比,失败时降级为内置算法)
|
||||
CompareResult result;
|
||||
if (aiServiceClient.isConfigured()) {
|
||||
@@ -142,6 +147,7 @@ public class StandardMindMapServiceImpl implements StandardMindMapService {
|
||||
ReviewRecallRecordEntity record = new ReviewRecallRecordEntity();
|
||||
record.setTaskNum(taskNum);
|
||||
record.setStandardMapId(standard.getId());
|
||||
record.setSessionNum(sessionNum != null && !sessionNum.isBlank() ? sessionNum : null);
|
||||
record.setRecallContent(recallOutline);
|
||||
record.setCompareResult(resultJson);
|
||||
record.setRecallRatio(result.getRecallRatio());
|
||||
|
||||
Reference in New Issue
Block a user