feat(复习): 支持会话维度复习 + 标准导图按会话过滤

- MindMapNode 新增 sessionNum 字段,追踪节点来源会话
- BuiltinMindMapGenerator 生成节点时填充 sessionNum
- MindMapTreeTool.filterBySession() 按会话过滤标准导图
- recallCompare 接受 sessionNum 参数,筛选后对比
- 新增 review_recall_records.session_num 字段(Flyway V20260705_1)
- 新增 GET /study-sessions/tasks/{taskNum}/sessions 端点
- 前端 ReviewRecall.vue 增加复习范围选择器(全部/指定会话)
- 历史报告条目展示学习预期目标
This commit is contained in:
2026-07-05 14:39:01 +08:00
parent 62e12686e3
commit e5adb4095b
4 changed files with 108 additions and 5 deletions
+24 -1
View File
@@ -677,7 +677,10 @@ onUnmounted(() => {
<el-tab-pane label="学习报告" name="reports">
<div v-loading="loadingHistory" class="history-list">
<div v-for="item in historyReports" :key="item.id" class="history-item report-item">
<span class="session-tag">{{ item.sessionNum }}</span>
<div class="report-header">
<span class="session-tag">{{ item.sessionNum }}</span>
<span v-if="item.sessionExpectation" class="expectation-hint">{{ item.sessionExpectation }}</span>
</div>
<MarkdownRenderer :content="item.content" />
</div>
<el-empty v-if="!loadingHistory && historyReports.length === 0" description="暂未找到匹配的报告" :image-size="48" />
@@ -1098,6 +1101,26 @@ onUnmounted(() => {
font-weight: 600;
}
.report-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 4px;
flex-wrap: wrap;
}
.expectation-hint {
font-size: 12px;
color: var(--text-secondary, #666);
background: #f5f7f5;
padding: 1px 8px;
border-radius: 4px;
white-space: nowrap;
max-width: 300px;
overflow: hidden;
text-overflow: ellipsis;
}
.history-content {
flex: 1;
font-size: 14px;