Commit Graph
100 Commits
Author SHA1 Message Date
cat-shark 38243eac82 style: 页脚口号仅在登录页显示 2026-09-13 22:12:12 +08:00
cat-shark fae27e7c20 style: 颜色统一为CSS变量并优化复习卡片交互 2026-09-13 22:11:23 +08:00
cat-shark cc4c20e77b fix: 首页滚动条改为恒速并补移动端拖动 2026-09-13 19:06:38 +08:00
cat-shark 1254e3d5d0 docs: 更新测试分层规范与覆盖率要求 2026-08-27 22:25:59 +08:00
cat-shark 5569921df6 test: e2e 选择器迁移为角色定位 2026-08-27 22:25:59 +08:00
cat-shark 8c8924d652 chore: 引入 vitest 覆盖率统计与棘轮阈值 2026-08-27 22:25:59 +08:00
cat-shark b96cad9683 test: 补齐关键路径交互式集成测试 2026-08-27 22:25:59 +08:00
cat-shark c898c0a8c7 docs: 补充请求层与组合式函数约束 2026-08-27 21:48:32 +08:00
cat-shark 45e6663568 chore: 接入 ESLint 并修复存量错误 2026-08-27 21:48:32 +08:00
cat-shark d33bc11014 refactor: StartTask 抽取功能域组合式函数 2026-08-27 21:48:32 +08:00
cat-shark f1fcae0dac feat: 请求层泛型化并收紧默认超时 2026-08-27 21:48:28 +08:00
cat-shark 468bba8670 refactor: 新增 useElapsedSeconds 统一秒表计时 2026-08-27 21:48:28 +08:00
cat-shark 96cc57ae06 chore: 添加 .gitattributes 规范行尾 2026-08-26 21:13:19 +08:00
cat-shark f37a92c240 feat: 新增误操作结束学习交互 2026-08-15 21:25:01 +08:00
cat-shark fe45ec0f76 docs: 移除仓库文档 2026-08-05 23:35:10 +08:00
cat-shark d01b6dcaa3 fix: 生成残片防抖覆盖确认弹窗期间 2026-08-05 21:50:16 +08:00
cat-shark 4e8aa15b71 fix: 退出登录补防抖加载 2026-08-05 21:45:40 +08:00
cat-shark 370d8e7769 fix: 任务表单补页面加载与提交防抖 2026-08-05 21:44:37 +08:00
cat-shark be4db68550 fix: 任务页操作补防抖加载 2026-08-05 21:43:28 +08:00
cat-shark c95e593cf1 fix: 学习会话按钮补防抖加载 2026-08-05 21:42:45 +08:00
cat-shark 9ed53aa4bc feat: 开始任务直接跳转并补会话页加载 2026-08-05 21:41:27 +08:00
cat-shark 4d9b3c0b02 feat: 复习跳转改为先进入目标页 2026-08-05 21:40:12 +08:00
cat-shark 605495fd53 docs: 补充前端防抖与加载原则 2026-08-05 21:37:39 +08:00
cat-shark eb992a47b7 merge: 合并残片报告拆分到dev 2026-08-03 23:20:07 +08:00
cat-shark 2a36e28f74 refactor: 优化前端错误提示 2026-08-03 23:08:36 +08:00
cat-shark e82a87d104 docs: 补充前端用户提示规范 2026-08-03 23:08:31 +08:00
cat-shark f408076187 style: 调整复习总览操作按钮与参考文案 2026-08-03 22:21:57 +08:00
cat-shark 7610b34621 docs: 补充前端测试规范与代码标准 2026-08-03 22:21:46 +08:00
cat-shark 6595ed0dfc test: 单元测试改为直接测试真实代码 2026-08-03 22:21:36 +08:00
cat-shark f71abdd000 refactor: 为测试暴露组件内部状态 2026-08-03 22:21:25 +08:00
cat-shark 9bba684fb2 feat: 首页滚动条展示学习残片并支持滚轮手动滚动 2026-08-03 22:21:13 +08:00
cat-shark 8d5c9db47f docs: 补充前端代码标准 2026-08-02 12:02:07 +08:00
cat-shark b8b0b73cd8 style: 复习总览统一样式并补全字段名 2026-08-02 11:59:47 +08:00
cat-shark 81f91b320a style: 适配复习总览移动端列表 2026-08-02 11:57:31 +08:00
cat-shark de45c8039c style: 适配各页面弹窗窄屏布局 2026-08-02 11:48:37 +08:00
cat-shark c2493e4c71 style: 增加移动端弹窗全局适配 2026-08-02 11:48:00 +08:00
cat-shark 0059e0ec71 style: 统一历史记录按钮尺寸 2026-08-02 11:40:10 +08:00
cat-shark 96d574b99f refactor: 收敛重复的 Markdown 渲染与应用状态常量 2026-08-02 11:36:18 +08:00
cat-shark 69861d54bb chore: 删除模板遗留文件与无用依赖 2026-08-02 11:35:03 +08:00
cat-shark 769d26fa97 style: 清理未使用的样式 2026-08-02 11:33:02 +08:00
cat-shark 04df078fcf refactor: 清理未使用的源码片段 2026-08-02 11:32:39 +08:00
cat-shark bcec8512f4 fix: 修复回忆页历史记录与重选节点交互 2026-08-02 11:31:58 +08:00
cat-shark 297320446c style: 统一页面按钮样式与尺寸 2026-08-01 19:06:41 +08:00
cat-shark a87fdba4cc docs: 合并CLAUDE规范 2026-08-01 00:15:57 +08:00
cat-shark a43267db73 docs: migrate .pi/SYSTEM.md to AGENTS.md 2026-08-01 00:13:07 +08:00
cat-shark 9af479d833 chore: remove k8s/ — migrated to lpt-infra 2026-07-26 21:35:51 +08:00
cat-shark a00e576516 docs: 补充Git提交规范 2026-07-23 23:03:21 +08:00
cat-shark 02ce825c53 docs: add .pi/SYSTEM.md with project overview 2026-07-23 23:01:47 +08:00
cat-sharkandClaude Opus 4.8 68082afc78 fix(ci): 加强 secrets 校验并强制 patch imagePullSecrets
- Login/regcred 步骤校验 secrets 非空
- regcred 强制重建 + 校验 dockerconfigjson 长度
- 部署前 patch Deployment imagePullSecrets (防集群存量缺失)
- 部署时确认 regcred 已挂载
- Debug 输出 regcred secret 内容供排查

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 23:43:10 +08:00
cat-shark e446cde225 fix(ci): force regcred imagePullSecrets 2026-07-20 23:29:10 +08:00
cat-sharkandClaude Opus 4.8 d1210db1a7 fix(ci): 绑定分支与部署环境并加固 IMAGE_TAG 传递
- dev 仅允许 dev 分支,prod 仅允许 master/main,防止 master 代码进 lpt-dev
- IMAGE_TAG 同时写 GITHUB_ENV/GITEA_ENV 与工作区文件兜底
- 更新部署说明文档

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 22:45:40 +08:00
cat-sharkandClaude Opus 4.8 68d5ca119a Add Kubernetes deployment configurations
- Add deployment.yaml with imagePullSecrets configured
- Add service.yaml with NodePort configuration
- Ensures proper image pull authentication from private registry

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 21:23:50 +08:00
cat-shark 4bda9d6ba2 docs: 保存部署流水线问题排查进度 2026-07-19 23:07:49 +08:00
cat-shark 0a82bac723 feat(ci): 添加 imagePullSecret 自动创建步骤 2026-07-19 22:45:21 +08:00
cat-shark 1efc7581e6 feat(ci): 添加部署失败时的调试输出 2026-07-19 22:16:40 +08:00
cat-shark 29b879b274 feat(ci): 使用时间戳标签确保每次部署都触发更新 2026-07-19 21:56:52 +08:00
cat-shark ec05269806 fix(ci): 移除手动安装 docker.io 2026-07-19 20:56:41 +08:00
cat-shark ff8d4fefe2 fix(ci): 使用绝对路径调用 apt-get (host 模式) 2026-07-19 20:50:26 +08:00
cat-shark 835ebafc21 fix(ci): 使用 apt-get 替代 apk (Ubuntu runner) 2026-07-19 20:43:48 +08:00
cat-shark 02cccbd94b fix: add build:development script alias for CI 2026-07-19 19:59:07 +08:00
cat-shark bc5880ec31 fix: add explicit type annotation to child variable 2026-07-19 19:55:58 +08:00
cat-shark 38ab924b91 fix: remove unused ReviewMindMap import 2026-07-19 19:55:40 +08:00
cat-shark 021cb81125 fix: Alpine compatibility - apk, docker login, /tmp/kubeconfig 2026-07-19 19:27:50 +08:00
cat-sharkandClaude Opus 4.8 ec157b06dc fix(ci): 修复部署流水线配置
- 使用 Git commit hash 作为镜像标签
- 增加健康检查超时到 15 秒
- 添加镜像清理阶段(保留 7 天)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 19:11:10 +08:00
cat-shark bc707179ce fix: add docker.io install for step container (no docker CLI in runner image) 2026-07-19 19:02:23 +08:00
cat-shark e1faacf7a7 ci: replace actions/checkout with git clone (no Node.js in runner) 2026-07-19 18:56:02 +08:00
cat-shark 2a24c16244 ci: add kubectl setup step with secret 2026-07-19 18:50:40 +08:00
cat-shark 9c49e21575 ci: use unique image tags (git sha) 2026-07-19 18:49:39 +08:00
cat-shark f712fa9e85 ci: use unique image tags (git sha) 2026-07-19 18:49:27 +08:00
cat-shark 88747cbd48 Switch to manual trigger (workflow_dispatch) 2026-07-19 18:14:07 +08:00
cat-shark 131e25c154 Add CI/CD pipeline
lpt-fe Build & Deploy / build-and-deploy (push) Failing after 1m4s
2026-07-19 18:07:52 +08:00
cat-shark e66bdb79dc docs: 复习流程设计文档(DESIGN_REVIEW.md)
完整描述复习功能的核心概念、流程设计、三个入口、
API 清单、组件结构、数据流图和文件索引。
2026-07-07 23:10:44 +08:00
cat-shark ebbbeb4c85 fix(导图): Array.map 传递多参数导致 ancestors 默认值失效
.map(toElixirNode) 传递 (item, index, array) 三个参数,
index 作为数字覆盖 ancestors 默认值 [],导致 [...ancestors] 报错。
改为箭头函数只传第一个参数。
2026-07-05 18:22:36 +08:00
cat-shark 84fe452e80 feat(复习): 节点选择交互 + 移除 session 维度
- MindMapViewer 新增 selectable 模式,点击节点 emit node-select 事件
- ReviewRecall.vue 移除会话选择器,改为节点选择交互
- 支持 URL ?focusPath= 参数自动预设复习起点
- 节点选择弹窗确认后回忆导图根节点=选中节点标题
- ReviewDetail 和 Welcome 中调用 findNode API 匹配节点后跳转
- API: recallCompare 使用 focusPath 替代 sessionNum
- API: 新增 findNode 端点
2026-07-05 18:10:42 +08:00
cat-shark 5a5a294f06 feat(导图): 防抖/增量生成/移除冗余对比面板
- 重新生成按钮增加 :loading 防重复点击
- 生成进度提示(AI 正在生成中,已等待 X 秒)
- 用户编辑后弹窗选择「全量重新生成」或「增量更新」
- 移除独立的对比结果面板,着色结果直接展示在标准导图中
2026-07-05 15:18:02 +08:00
cat-shark e5adb4095b 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 增加复习范围选择器(全部/指定会话)
- 历史报告条目展示学习预期目标
2026-07-05 14:39:01 +08:00
cat-shark 62e12686e3 feat(markdown): 只读内容支持 Markdown 渲染
- 新增 MarkdownRenderer.vue 组件,基于 marked 解析 GFM
- 学习残片/报告历史列表:纯文本 {{ }} 替换为 MarkdownRenderer
- ReviewDetail.vue content-body:p 标签逐行渲染替换为 MarkdownRenderer
- 结束会话总结框:增加「编辑/预览」切换,预览模式实时渲染 markdown
- 学习预期展示也改为 MarkdownRenderer
2026-07-05 12:24:26 +08:00
cat-shark c41aa09b4a fix(历史记录): 展开历史记录面板时未自动加载数据
展开 showHistory 后没有触发 loadHistoryFragments/loadHistoryReports,
需要用户输入搜索或切换 tab 才能看到数据。增加 watch(showHistory) 在展开时
立即加载当前 tab 的分页数据。
2026-07-05 11:55:08 +08:00
cat-shark ea9b7ec569 feat(会话):跨页面自动恢复 + 阻止多任务同时进行
后端:
- StudySessionsServiceImpl.getActiveSession(excludeTaskNum):
  查询 ONGOING/PAUSED 状态的活跃会话,可排除指定任务
- Controller 新增 GET /study-sessions/active?excludeTaskNum=

前端:
- router beforeEach 守卫:读取 localStorage 中 activeSession,
  非 start-task 页面时自动重定向恢复
- Study.vue 开始任务按钮:调用 getActiveSession() 检测是否
  有其他任务正在进行,提示用户前往继续
- StartTask.vue loadTaskSession 成功后将活跃会话写入
  localStorage(taskNum/sessionNum/taskName)
- endSession 成功时清除 localStorage 中的 activeSession
- 路由参数 ?resume=true 时页面顶部显示恢复提示已恢复上次
2026-07-05 11:15:22 +08:00
cat-shark 85bee1d311 fix(样式):补充历史学习记录面板样式 + 修复缺失的 </style> 标签
- 新增 history-card/history-header/history-toggle/history-search/history-tabs/
  history-list/history-item/session-tag/history-content 等样式,
  与现有 fragments-card/fragment-item 等样式风格一致
- 之前 Edit 操作误删了文件末尾的 </style>,导致 Vue SFC 编译错误
2026-07-05 10:55:23 +08:00
cat-shark 88a3521f27 feat(会话):历史学习记录折叠面板(残片/报告分页+搜索)
StartTask.vue 新增「📚 历史学习记录」折叠区域:
- 默认折叠,点击标题展开
- 支持残片/报告两个 tab 切换
- 搜索框带 300ms 防抖,对内容 LIKE 搜索
- 分页每页 10 条
- 每条记录前标注所属 sessionNum,与当前会话内容明确区分
- 展示 v-loading 和 el-empty 两种状态

后端新增两个分页接口(上一 commit):
- GET /study-sessions/tasks/{taskNum}/fragments
- GET /study-sessions/tasks/{taskNum}/reports
2026-07-05 10:39:56 +08:00
cat-shark b7387e02c4 fix(番茄钟):进度环与倒计时方向一致
commit 9c2c1b7 错误地将 progress 改为 (total-current)/total,
导致数字递减但进度环递增(从空到满)。实际 runCountdown
中 timerMinutes/timerSeconds 存储的是剩余时间,应直接用
remaining/total 使环从 100%→0% 递减。
2026-07-05 10:12:52 +08:00
cat-shark 5986b3996b feat(任务列表):显示任务优先级分数
每个任务项左侧增加绿色圆形 priority 徽标,直观展示计算后的优先级分数高低。
列表项行内布局增加弹性布局适配徽标 + 标题并排显示。
2026-07-04 23:58:53 +08:00
cat-shark a63942d105 feat(学习材料):多 URL 支持 + 网页标题自动抓取
TaskForm.vue:
- 学习材料输入从单行改为 textarea,每行一个链接

Study.vue:
- 改为迭代多 URL 展示,每行显示网页标题(通过 lpt-ai
  /fetch-title 获取)或回退到 URL 本身
- 选中不同任务时自动刷新标题

新增 src/utils/fetchTitle.ts:
- fetchTitle(url) / fetchTitles(urls) 工具函数
- 内存缓存避免重复请求
- 失败时回退到 URL,不阻塞页面

后端:
- V20260704_1 迁移:material_url varchar(255) → TEXT
2026-07-04 22:37:01 +08:00
cat-shark 5f7a5a55a4 fix(回忆复习):标准导图面板展示标注树
对比完成后,标准导图面板之前一直使用原始 standardTree,
MATCHED/MISSED 标注只出现在独立的「对比结果」区域。
用户期望在标准导图中也能直观看到哪些节点命中/遗漏。

修复:有 compareTree 时标准导图改用标注树并开启 colorByCompare,
无对比结果时回退到原始 standardTree
2026-07-04 17:49:27 +08:00
cat-shark f0a6b16185 fix(e2e):删除任务测试增加确认弹窗处理 2026-07-04 17:40:29 +08:00
cat-shark 9c2c1b7614 fix(前端):进度环方向 + 按钮颜色 + 删除确认 + 移除 console.log
- StartTask.vue:progress 计算改为 (total-current)/total*100,进度环从
  满到空递减(正确方向)
- ReviewDetail/ReviewRecall/MindMapViewer:type="primary" 全部改为
  type="success",统一绿白主题
- Study.vue:删除任务增加 ElMessageBox.confirm 确认
- request.ts:移除全部 console.log
2026-07-04 17:38:00 +08:00
cat-shark 89d186c82e fix(frontend):extraNodes 兼容字符串和对象格式
AI 返回的 extraNodes 可能是字符串数组 [知识点D1] 也可能是对象
数组 [{title: 知识点D1}],前端 computed 统一转为 {title} 格式
2026-07-04 16:52:09 +08:00
cat-shark a485d33933 feat(frontend):axios 超时 600s + 回忆对比分段加载文案
适配后台异步任务轮询模式:
- axios 全局超时 180s → 600s(与 Java 后台 10min 轮询超时匹配)
- 回忆对比加载提示改为分段文案:
  0-3s: 正在提交 AI 任务…
  3-60s: AI 对比分析中,请稍候…
  60-180s: 内容较多,AI 正在深入分析…
  180s+: 即将完成,请耐心等待…
2026-07-04 16:41:12 +08:00
cat-shark 4e1c71e4d5 feat(前端):AI 操作超时 + 加载提示
- axios 全局超时 5s → 180s(3 分钟),避免 AI 响应未到即断开
- 回忆对比按钮等待时显示旋转动画 + 已等待秒数 + 30s 后安抚文案
- 结束会话报告草稿生成时显示等待提示 + 秒数统计
2026-07-04 16:16:33 +08:00
cat-shark a259e0ac1a fix(登录):token 过期直接跳转登录页,不再弹确认框
后端 CommonResult 包装设计保留原样,不引入自定义业务码。

改法:handleError 中检测到 401 后直接清除 localStorage
并 router.push('/login'),移除 ElMessageBox.confirm 确认框。
2026-07-04 11:01:09 +08:00
cat-shark fa3ecd50ed fix(学习会话):休息期间仍可生成学习残片
移除 :disabled="!timerRunning" 条件,
并在休息按钮区也加入生成残片按钮,
确保任何状态下都能记录学习内容
2026-07-04 10:42:48 +08:00
cat-shark ae796308a6 fix(学习会话):休息倒计时刷新后丢失
根因:休息倒计时完全存在浏览器内存中(runCountdown),
刷新页面后 loadTaskSession() 读取会话为 PAUSED 状态,
走 else 分支 syncDisplay(pointerPosition) 重置为工作钟,
休息状态和剩余时间全部丢失。

修复方案(纯前端):
- restTimer() 将休息结束时间戳写入 localStorage
- loadTaskSession() 启动时检查 localStorage,
  若休息未到期则恢复 runCountdown 继续倒计时
- startTimer()/stopTimer()/endTimer() 清除休息状态
- 休息期间 UI:倒计时数字橙色、进度环金色、
  按钮区替换为休息中标签(隐藏开始/暂停/残片)
2026-07-04 10:27:38 +08:00
cat-shark cd68811dfb feat(回忆复习):回忆输入改用思维导图 + 布局优化
- 回忆输入区从文本域改为可编辑思维导图(Tab 加子/Enter 加同级)
- 回忆历史点击后自动将内容还原到导图编辑区
- 增加回忆页宽屏模式(wide route meta),适配导图横向展示
- MindMapViewer 增加 height prop 支持自定义高度
- 回忆、对比、标准导图各区域全部使用 60vh 导图展示
2026-07-04 10:17:16 +08:00
cat-shark 3adbeb183c fix:Transition 白屏——组件多根节点 + Vite 模块请求拦截
- Welcome.vue:回忆卡片 el-dialog 和根 section 共存导致多根节点,<Transition>
  无法动画。包裹一层 <div>
- Study.vue:同上(权重配置对话框)
- MindMapViewer.vue:事件名 selectNode→selectNewNode(类型错误)
- e2e/study.spec.ts + navigation.spec.ts:地址栏 Vite 在模块 URL 后追加
  ?t=... 时间戳,.endsWith('.ts') 匹配失效,改用 url.includes('/src/')
2026-07-04 09:43:07 +08:00
cat-shark 104ae78a2b test(e2e):修复 10 个用例——全部 30 个通过
- study.spec.ts:mock 模式 **/api/tasks** 过滤 .ts 模块请求,避免拦截 Vite 文件加载
- navigation.spec.ts:同上
- start-task.spec.ts:addInitScript mock HTMLAudioElement.play 绕过音频权限弹窗
- start-task.spec.ts:补健结束会话后的 ElMessageBox.confirm 确认点击
- 复习页面入口检查新增回忆复习按钮的文本变化适配
2026-07-04 09:28:15 +08:00
cat-shark 8e75a7d2e4 test(e2e):start-task 用例补充预期与报告草稿接口 mock
学习预期改为强制弹窗后,原有用例需 mock 已存在的预期数据避免阻塞
2026-07-04 00:07:46 +08:00
cat-shark d9e5d1ef3a refactor(首页):移除装饰性提示语
- 删除'今日模式:稳步推进'标签和'建议流程'固定板块
- 首页聚焦:复习滚动条 + 两个快速入口
2026-07-04 00:05:10 +08:00
cat-shark 7fef9e2bb2 feat(复习):mind-elixir 思维导图可视化
- MindMapViewer 组件封装 mind-elixir:展示/编辑/对比着色三种形态
- 对比结果以导图呈现:绿=命中、红=遗漏,点击带标签节点回看原文
- 标准导图展开后以导图渲染,编辑改为图上直接操作(Tab/Enter/双击)
- 保存时从导图导出缩进大纲,与后端 MindMapTreeTool 格式一致
2026-07-04 00:03:18 +08:00
cat-shark 5616399108 feat(复习):滚动条回忆卡片——先回忆再对照
- 点击滚动内容不再直接跳详情,先弹回忆卡片展示单条片段
- 用户自行回忆后点击'展开对照'查看该会话全部报告/残片
- 滚动 feed 切换为 smart 模式(时间衰减+掌握度加权)
- 引入主动回忆环节,将 incidental exposure 转化为 testing effect
2026-07-03 23:59:39 +08:00