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:
2026-07-05 14:40:38 +08:00
parent 22cc5dc871
commit a636e516d1
13 changed files with 144 additions and 3 deletions
@@ -154,7 +154,7 @@ public class ReviewController {
public CommonResult<ReviewStandardMindMapEntity> recallCompare(
@PathVariable String taskNum,
@Valid @RequestBody RecallCompareRequest request) throws NotFindEntitiesException, OperationFailedException {
return CommonResult.success(standardMindMapService.recallCompare(taskNum, request.getRecallOutline()));
return CommonResult.success(standardMindMapService.recallCompare(taskNum, request.getRecallOutline(), request.getSessionNum()));
}
/**
@@ -18,7 +18,9 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.guo.learningprogresstracker.dto.response.SessionBriefVO;
import java.util.ArrayList;
import java.util.List;
import java.time.LocalDateTime;
/**
@@ -137,4 +139,10 @@ public class StudySessionController {
@RequestParam(required = false) String excludeTaskNum) {
return CommonResult.success(studySessionsServiceImpl.getActiveSession(excludeTaskNum));
}
/** 获取任务的所有会话简要列表(用于复习维度选择) */
@GetMapping("/tasks/{taskNum}/sessions")
public CommonResult<List<SessionBriefVO>> getTaskSessions(@PathVariable String taskNum) {
return CommonResult.success(studySessionsServiceImpl.getTaskSessions(taskNum));
}
}