feat(复习): 节点级 focusPath + findNode,回退 session 维度
- 移除 MindMapNode.sessionNum、filterBySession、getTaskSessions
- 新增 MindMapTreeTool.extractSubtree() 按路径提取子树作为对比基准
- 新增 findClosestNode/getPath/similarityScore 支持节点匹配
- 新增 POST /review/standard-mind-map/{taskNum}/find-node
- recallCompare 使用 focusPath 替代 sessionNum
- ReviewRecallRecordEntity.focusPath 替代 sessionNum
- Flyway V20260706_1: review_recall_records 加 focus_path 列
This commit is contained in:
-30
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.protobuf.ServiceException;
|
||||
import com.guo.learningprogresstracker.dto.StudySessionsDto;
|
||||
import com.guo.learningprogresstracker.dto.response.SessionBriefVO;
|
||||
import com.guo.learningprogresstracker.dto.response.StudySessionResponse;
|
||||
import com.guo.learningprogresstracker.entity.StudyReportFragmentsEntity;
|
||||
import com.guo.learningprogresstracker.entity.StudyReportsEntity;
|
||||
@@ -27,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -227,34 +225,6 @@ public class StudySessionsServiceImpl extends ServiceImpl<StudySessionsMapper, S
|
||||
return result;
|
||||
}
|
||||
|
||||
// ============ 获取任务会话列表(复习维度选择用) ============
|
||||
|
||||
@Override
|
||||
public List<SessionBriefVO> getTaskSessions(String taskNum) {
|
||||
var sessions = this.list(Wrappers.lambdaQuery(StudySessionsEntity.class)
|
||||
.eq(StudySessionsEntity::getTaskNum, taskNum)
|
||||
.orderByDesc(StudySessionsEntity::getStartTime));
|
||||
|
||||
return sessions.stream().map(s -> {
|
||||
SessionBriefVO vo = new SessionBriefVO();
|
||||
vo.setSessionNum(s.getSessionNum());
|
||||
vo.setStartTime(s.getStartTime() != null ? s.getStartTime().toString() : null);
|
||||
// 查询该会话的预期
|
||||
Optional.ofNullable(studyExpectationsService.getBySessionNum(s.getSessionNum()))
|
||||
.ifPresent(e -> vo.setExpectation(e.getDescription()));
|
||||
// 统计报告和残片数量
|
||||
long reportCount = studyReportsMapper.selectCount(
|
||||
Wrappers.lambdaQuery(StudyReportsEntity.class)
|
||||
.eq(StudyReportsEntity::getSessionNum, s.getSessionNum()));
|
||||
long fragmentCount = studyReportFragmentsMapper.selectCount(
|
||||
Wrappers.lambdaQuery(StudyReportFragmentsEntity.class)
|
||||
.eq(StudyReportFragmentsEntity::getSessionNum, s.getSessionNum()));
|
||||
vo.setReportCount((int) reportCount);
|
||||
vo.setFragmentCount((int) fragmentCount);
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// ============ 活跃会话查询 ============
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user