cat-shark
|
0a866bde14
|
feat(会话):新增活跃会话查询接口
StudySessionsServiceImpl.getActiveSession(excludeTaskNum):
- 查询所有 ONGOING/PAUSED 状态的 session
- 如果活跃会话属于 excludeTaskNum 则返回 null(同一任务继续)
- 否则返回活跃会话的 StudySessionResponse
Controller 新增 GET /study-sessions/active?excludeTaskNum=
用于前端页面恢复 + 阻止多任务同时开始
|
2026-07-05 11:05:01 +08:00 |
|
cat-shark
|
c1385911c6
|
feat(会话):分页查询任务的历史残片/报告接口
StudySessionsService 新增:
- getTaskFragments(taskNum, page, size, keyword) → Page<FragmentsEntity>
- getTaskReports(taskNum, page, size, keyword) → Page<ReportsEntity>
通过子查询 session_num in (select session_num from study_sessions
where task_num = ?) 实现跨 session 聚合,keyword 支持 content
字段 LIKE 搜索。接口使用 MyBatis-Plus Page 分页。
控制器新增两个 GET 端点:
- /study-sessions/tasks/{taskNum}/fragments
- /study-sessions/tasks/{taskNum}/reports
|
2026-07-05 10:35:45 +08:00 |
|
cat-shark
|
c0fe137c48
|
fix(后端):@Transactional + WebMvcProdConfig OPTIONS 跳过
- WebMvcProdConfig:SaInterceptor 增加 OPTIONS 预检跳过,
解决生产环境 CORS 预检 401 问题
- StudySessionsServiceImpl.endedStudySession/continueStudySession:
增加 @Transactional
- StudyReportFragmentsServiceImpl.createFragments:
增加 @Transactional
|
2026-07-04 17:38:00 +08:00 |
|
cat-shark
|
cca51530c6
|
fix(后端):extraNodes 解析兼容字符串和对象两种格式
AI 可能返回 [字符串] 或 [{title:...,path:...}] 两种格式,
buildCompareResultFromAI() 现在通过 isTextual() 判断并分别处理
|
2026-07-04 16:52:09 +08:00 |
|
cat-shark
|
55b7c1c83c
|
feat(后端):AiServiceClient 改为 submit+poll 异步任务模式
- 内部实现重构:每个公有方法内部 submitAndWait() → submitTask() + pollResult()
- submitTask(): POST /ai/tasks,返回 taskId(30s 超时)
- pollResult(): 轮询 GET /ai/tasks/:taskId,500ms 首次延迟,
2s × 10 次后退避到 5s,总超时 600s(10 min)
- 公有方法签名完全不变:aggregateReport()、generateMindMap()、compareRecall()
- 异常失败时返回 Optional.empty(),调用方降级逻辑不变
- application.yml timeout-seconds: 180 → 600
|
2026-07-04 16:41:21 +08:00 |
|
cat-shark
|
af4f536980
|
fix(复习):AI 对比结果由 Java 端标注标准树,不再依赖 LLM 输出树结构
根因:LLM 无法可靠输出 CompareResult 所需的完整嵌套树 JSON,
实际返回格式(coverage/matched/missed)与预期不符。
修复:
- AiServiceClient.compareRecall() 返回 Optional<JsonNode>(原始 JSON),
不再尝试直接反序列化为 CompareResult
- StandardMindMapServiceImpl 新增 buildCompareResultFromAI():
解析 AI 返回的平铺 matches/missedTitles/extraNodes 列表,
将 MATCHED|/MISSED| 标注写入标准树,确定性构建 CompareResult
- AI 只负责语义匹配判断,树结构操作由 Java 端保证可靠性
|
2026-07-04 16:09:07 +08:00 |
|
cat-shark
|
7ac7868511
|
feat(复习):回忆对比优先走 AI 语义对比,失败时降级为内置算法
- CompareResult.java:新增 evaluation 字段(AI 对比时写入评价文本)
- AiServiceClient.java:新增 compareRecall(),调用 lpt-ai /ai/compare-recall
- StandardMindMapServiceImpl.java:recallCompare() 中注入 AiServiceClient,
优先 try AI 语义对比,含层级上下文和同义表达识别;
AI 不可用或失败时自动 fallback 到内置标题匹配算法
- StandardMindMapServiceImplTest.java:适配新增的 AiServiceClient 依赖
|
2026-07-04 15:47:24 +08:00 |
|
cat-shark
|
cd5ee0b404
|
feat(思维导图):AI 生成接入 lpt-ai 服务
RemoteAiMindMapClient 原为 TODO 空桩,依赖 lpt.ai.endpoint/api-key
配置,从未生效。现改为依赖 AiServiceClient(lpt.ai-service.url),
调用 lpt-ai 的 /ai/generate-mind-map 接口获取 AI 大纲。
变更:
- AiServiceClient 新增 generateMindMap():调用 POST /ai/generate-mind-map
- RemoteAiMindMapClient 重写:注入 AiServiceClient,isAvailable()
改为检查 AiServiceClient.isConfigured(),generate() 用 lpt-ai
返回的大纲文本解析为 MindMapNode 树
- StandardMindMapServiceImpl.doGenerate():优先选 AI 客户端
(非 BUILTIN),AI 失败时自动降级到内置规则引擎
- application.yml:移除不再使用的 lpt.ai.endpoint/api-key 配置
|
2026-07-04 11:14:27 +08:00 |
|
cat-shark
|
21c5b8f761
|
feat(报告):AI 聚合残片生成报告草稿
- AiServiceClient:调用 lpt-ai 独立服务,未配置/失败时返回 empty
- GET /study-sessions/{sessionNum}/report-draft:AI 聚合(含预期对比),降级为残片拼接
- 草稿仅作为编辑起点,最终报告仍由用户确认后保存
- application.yml 增加 lpt.ai-service.url 配置
|
2026-07-03 23:52:32 +08:00 |
|
cat-shark
|
3c4db2fead
|
feat(复习):feed 智能模式——加权随机采样
- /review/feed?mode=smart:时间衰减 × 回忆掌握度加权采样
- 越久未见、回忆覆盖率越低的内容出现概率越高
- 保持随机性,符合复习模块偶遇式设计理念
- 概率性单元测试验证低掌握内容显著优先
|
2026-07-03 23:44:40 +08:00 |
|
cat-shark
|
7461b6b5ad
|
feat(优先级):维度权重可配置并即时重算
- 新表 user_priority_weights(每用户一行,默认 0.35/0.25/0.20/0.10/0.10)
- PriorityWeightsService:读取/保存权重,权重和必须为 1,保存后重算全部任务
- TaskController:GET/PUT /tasks/priority-weights
- CalculatedPriorityTool 支持自定义权重
- 修复 updateTask 不重算优先级的问题
|
2026-07-03 23:41:50 +08:00 |
|
cat-shark
|
b67cf238c2
|
feat(预期):学习预期后端闭环——实体/服务/端点
- 迁移:study_expectations.session_num 改为 varchar 对齐会话编码
- StudyExpectationsEntity / Mapper / Service:每会话一条预期,重复创建覆盖
- StudySessionController:PUT/GET /{sessionNum}/expectation
- 移除空的 studySessionList 占位方法
|
2026-07-03 23:38:52 +08:00 |
|
cat-shark
|
32b247526b
|
feat(复习):标准思维导图生成与回忆对比
- 新增 review_standard_mind_maps / review_recall_records 数据表
- BuiltinMindMapGenerator:从报告/残片/应用场景规则生成标准导图
- MindMapAiClient 接口 + RemoteAiMindMapClient 预留
- StandardMindMapService:生成/编辑/重新生成/回忆对比
- 对比算法:标题归一化 + Bigram Jaccard 模糊匹配
- ReviewController 新增 6 个端点
- MindMapTreeTool / MindMapNode / CompareResult 工具类
- 完整单元测试(10 个,全部通过)
- 更新 docs/review-module-design.md
|
2026-07-03 08:53:51 +08:00 |
|
cat-shark
|
5f3f35c53b
|
feat: parse uploaded review mind maps
|
2026-06-20 10:33:14 +08:00 |
|
cat-shark
|
f170e85297
|
feat: complete review workflow support
|
2026-06-20 09:16:20 +08:00 |
|
cat-shark
|
81543969d8
|
feat: 新增复习任务统计接口
|
2026-06-18 00:07:43 +08:00 |
|
cat-shark
|
2cf3533141
|
feat: 登录密码改用 BCrypt 校验
|
2026-06-18 00:06:42 +08:00 |
|
cat-shark
|
a64daacc71
|
feat: 结束会话时返回有效时间不足的提示信息
- StudySessionsServiceImpl: 检测 effectiveTime 被清零时返回提示消息
- StudySessionController: 将提示消息通过 CommonResult.success(message) 传给前端
|
2026-05-30 17:36:56 +08:00 |
|
cat-shark
|
591dc89e53
|
feat: 有效学习时间不足10分钟不计入总学习时间
- StudySessionsEntity: 新增 MIN_EFFECTIVE_TIME_SECONDS 常量,
endedStudySession() 中检查 effectiveTime,不足则清零
- StudySessionsService: endedStudySession 返回类型从 void 改为 String
|
2026-05-30 17:36:50 +08:00 |
|
cat-shark
|
487b38e8b0
|
feat: 新增碎片更新和会话查询的Service实现
- StudyReportFragmentsService 接口新增 updateFragments 和 getFragmentsBySession 方法
- ServiceImpl 实现碎片更新(校验存在性后更新)和按会话编号查询碎片列表
|
2026-05-30 15:50:34 +08:00 |
|
cat-shark
|
a92465dfc0
|
chore: 清理冗余注释,保留字段/业务含义注释
|
2026-05-27 23:03:43 +08:00 |
|
cat-shark
|
24d871b430
|
refactor: 优化其他 Service 实现和 Controller 代码
|
2026-05-27 21:23:50 +08:00 |
|
cat-shark
|
950c91791f
|
refactor: ReviewServiceImpl 改用 MyBatis-Plus Java API 实现复盘功能
|
2026-05-27 21:23:44 +08:00 |
|
cat-shark
|
a932bf52ca
|
refactor: 移除 StudyExpectations 相关代码
|
2026-05-27 21:23:31 +08:00 |
|
cat-shark
|
4b26ed46ec
|
refactor: 移除 UserTask 相关代码(entity/mapper/service/impl/XML)
|
2026-05-27 21:23:23 +08:00 |
|
cat-shark
|
f271efbead
|
feat: add getTaskReview API endpoint for fetching all reports and fragments by task number
|
2026-05-23 21:01:01 +08:00 |
|
cat-shark
|
375ec8858c
|
feat(review): 新增复习内容滚动展示与交互 API
- 新增 /review/feed 端点,合并报告和残片数据按时间倒序返回
- 新增 /review/report/{id} 和 /review/fragment/{id} 端点
- 支持复习内容在首页滚动展示及点击查看详情
|
2026-05-23 19:26:24 +08:00 |
|
cat-shark
|
43747f785c
|
修复任务更新主键校验与会话查询SQL参数化
|
2026-04-12 13:06:11 +08:00 |
|
cat-shark
|
05f47b92a8
|
补全登录退出接口并统一登出路径
|
2026-04-12 13:05:46 +08:00 |
|
cat-shark
|
19ea1a71f9
|
feat(14): 对任务列表按照计算优先级进行排序
|
2025-10-26 18:55:13 +08:00 |
|
cat-shark
|
f89c570ff2
|
feat:重构倒计时相关内容,将倒计时逻辑放在后端进行
|
2025-07-21 09:18:28 +08:00 |
|
cat-shark
|
5df805cca7
|
feat: 任务开始页面,相关逻辑补充
|
2025-07-08 09:20:31 +08:00 |
|
cat-shark
|
939e15ee56
|
feat: 增加响应字段 任务名称
|
2025-07-06 12:16:42 +08:00 |
|
cat-shark
|
5f9e01cf14
|
feat:1. 修正错误命名 2. 为学习会话详情接口增加taskName字段
|
2025-06-29 16:48:31 +08:00 |
|
cat-shark
|
aa9a278108
|
feat:1.优化commonResult 2. 重新初始化数据库结构
|
2025-06-29 15:30:40 +08:00 |
|
cat-shark
|
eb51dbe87f
|
[xingyu.guo] feat: 补充返回内容 1. taskDescription 2. lastLearningStatus
|
2025-06-02 21:25:00 +08:00 |
|
cat-shark
|
cecfa7a800
|
[xingyu.guo] feat: 【结束一个【学习会话】】API
|
2024-09-22 15:52:08 +08:00 |
|
cat-shark
|
54af814b5e
|
[xingyu.guo] feat: 【获取【学习会话】所有的学习残片数据,以列表返回】API
|
2024-09-22 11:00:39 +08:00 |
|
cat-shark
|
da6a25996d
|
[xingyu.guo] feat: 【创建学习残片】API
|
2024-09-22 10:21:54 +08:00 |
|
cat-shark
|
bbecc86df1
|
[xingyu.guo] feat: 为【添加新任务】增加任务名是否重复的校验
|
2024-09-22 09:42:26 +08:00 |
|
cat-shark
|
5e37839b0b
|
[xingyu.guo] feat: 1. 抽取通用url 2. 完成【通过学习任务num获取该任务的未结束会话】API 3. 优化【通过sessionNum获取一个【学习会话】】API名称
|
2024-09-22 09:27:15 +08:00 |
|
cat-shark
|
6005782b14
|
[xingyu.guo] feat: 1. 替换所有响应值中的id为num,不将非业务字段展示给外部 2. 调整[实际使用时间]等字段类型为double,方便计算\保存与读取 3. 【获取所有任务列表】api,完善功能,并增加分页功能 4.将int类型修改为使用Integer,更加安全
|
2024-09-22 08:20:48 +08:00 |
|
cat-shark
|
2bf925b3ee
|
[xingyu.guo] fix: 统一Id为Num,在自己的业务领域中使用id,在非本身业务范畴的领域使用num
|
2024-09-21 10:11:52 +08:00 |
|
cat-shark
|
e20439c98f
|
1. 开始或继续一个【学习会话】API 2. 暂停一个【学习会话】API 3.通过sessionId获取一个【学习会话】API
|
2024-08-18 19:47:59 +08:00 |
|
cat-shark
|
da0f58b08b
|
任务基本信息相关测试类调整(忘记了为何要改。。。)
|
2024-08-11 08:28:06 +08:00 |
|
cat-shark
|
9e7128a7be
|
1. 配置数据库日志输出 2. 任务更新API与测试类 3. 任务删除API与测试类
|
2024-07-16 21:34:00 +08:00 |
|
cat-shark
|
e759ab2a75
|
完善框架结构,解决了validation和saToken的问题
|
2024-07-14 23:00:59 +08:00 |
|
cat-shark
|
b1358eaca0
|
架构性调整【懒得区分了,哈哈哈哈】,主要是跑通了第一个功能测试
|
2024-07-11 22:59:16 +08:00 |
|
cat-shark
|
c83dd750e6
|
修改目录架构
|
2024-07-09 22:45:29 +08:00 |
|
cat-shark
|
e3f27cf975
|
修改登录API逻辑
|
2024-07-09 22:32:12 +08:00 |
|