docs: 合并CLAUDE规范
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## Git 提交规范
|
## Git 提交规范
|
||||||
|
|
||||||
- 提交信息使用中文,简洁描述变更内容。
|
- 提交信息必须简短且使用中文,不要使用英文长句。
|
||||||
- 格式:`类型: 简述`,例如 `feat: 新增学习会话页面`、`fix: 修复路由守卫401跳转`、`docs: 补充组件说明`。
|
- 格式:`类型: 简述`,例如 `feat: 新增学习会话页面`、`fix: 修复路由守卫401跳转`、`docs: 补充组件说明`。
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
@@ -59,6 +59,11 @@ lpt-fe/src/
|
|||||||
- 保存:`convertMaterialUrls()` 异步拉取标题,替换裸 URL 为 `[标题](url)`。
|
- 保存:`convertMaterialUrls()` 异步拉取标题,替换裸 URL 为 `[标题](url)`。
|
||||||
- `getUrlTitle(url)`:调用 `/utils/fetch-title`,带内存缓存和请求去重。
|
- `getUrlTitle(url)`:调用 `/utils/fetch-title`,带内存缓存和请求去重。
|
||||||
|
|
||||||
|
## 应用场景
|
||||||
|
|
||||||
|
- TaskForm 编辑页使用 `el-dialog` 弹窗管理应用场景。
|
||||||
|
- Study 详情页使用 `getUrlTitle` 展示应用场景链接标题。
|
||||||
|
|
||||||
## 样式与交互约定
|
## 样式与交互约定
|
||||||
|
|
||||||
- 链接使用绿色系 `var(--green-600)`,虚线下划线,hover 变实线。
|
- 链接使用绿色系 `var(--green-600)`,虚线下划线,hover 变实线。
|
||||||
@@ -66,7 +71,8 @@ lpt-fe/src/
|
|||||||
- 小字提示使用 12px `var(--text-secondary)`。
|
- 小字提示使用 12px `var(--text-secondary)`。
|
||||||
- `Study.vue` 任务清单每页 20 条。
|
- `Study.vue` 任务清单每页 20 条。
|
||||||
- `StartTask.vue` 编辑任务时先 GET 详情,合并后再 PUT,避免覆盖其他字段。
|
- `StartTask.vue` 编辑任务时先 GET 详情,合并后再 PUT,避免覆盖其他字段。
|
||||||
- `MindMapViewer.vue` 支持只读、编辑、selectable、colorByCompare 模式。
|
- `MindMapViewer.vue` 支持只读、编辑、selectable、colorByCompare 模式;selectable 模式下点击节点 emit `node-select`。
|
||||||
|
- ReviewRecall 中 `standardExpanded` 展开后节点可点击,用于选择复习起点。
|
||||||
|
|
||||||
## 开发配置
|
## 开发配置
|
||||||
|
|
||||||
@@ -85,6 +91,13 @@ npm run test:e2e
|
|||||||
npx vue-tsc --noEmit
|
npx vue-tsc --noEmit
|
||||||
```
|
```
|
||||||
|
|
||||||
|
编译检查也可以使用:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx vite build
|
||||||
|
npx vue-tsc --noEmit
|
||||||
|
```
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
|
||||||
- 多阶段构建:`node:20-alpine` 编译 → `nginx:alpine` 运行。
|
- 多阶段构建:`node:20-alpine` 编译 → `nginx:alpine` 运行。
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
# LPT 前端规范
|
|
||||||
|
|
||||||
## 技术栈
|
|
||||||
- Vue 3 + TypeScript + Vite
|
|
||||||
- Element Plus UI
|
|
||||||
- Axios(`src/utils/request.ts`)
|
|
||||||
- mind-elixir(思维导图)
|
|
||||||
|
|
||||||
## 认证与请求
|
|
||||||
- axios `withCredentials: true`,Cookie `satoken` 自动携带
|
|
||||||
- 401 处理(`handleError`):HTTP 层和业务层双重检测,清 `localStorage.isLoggedIn` → `router.push("/login")`
|
|
||||||
- `validateResponse`:`code !== 200` → reject
|
|
||||||
|
|
||||||
## Markdown 学习材料
|
|
||||||
- 编辑:textarea 输入,支持 `[文字](url)` 和裸 URL
|
|
||||||
- 预览/展示:`renderMarkdown(raw)` 同步函数
|
|
||||||
- 使用占位符 `__LINK_N__` 避免正则二次匹配产生嵌套 HTML
|
|
||||||
- `[文字](url)` → `<a>` 标签
|
|
||||||
- 裸 URL → `<a>` 标签(展示时用 getUrlTitle 获取标题)
|
|
||||||
- 保存:`convertMaterialUrls()` 在 createTask/updateTask 前异步拉取标题,替换裸 URL 为 `[标题](url)`
|
|
||||||
- `getUrlTitle(url)`:调 `/utils/fetch-title`,内存缓存 + 请求去重
|
|
||||||
|
|
||||||
## 应用场景
|
|
||||||
- TaskForm 编辑页:弹窗形式(el-dialog),列表展示用 `getUrlTitle` 获取链接标题
|
|
||||||
- Study 详情页:同上
|
|
||||||
|
|
||||||
## 样式规范
|
|
||||||
- 链接:绿色系(`var(--green-600)`),虚线下划线,hover 变实线
|
|
||||||
- 区块分隔:`.detail-block` 有 `border-top` + `padding-top`,首个除外
|
|
||||||
- 小字提示:12px `var(--text-secondary)`
|
|
||||||
|
|
||||||
## 任务清单分页
|
|
||||||
- Study.vue:每页 20 条,`el-pagination` 在列表底部
|
|
||||||
|
|
||||||
## 学习会话页面
|
|
||||||
- StartTask.vue 展示学习材料(可点击链接),支持弹窗编辑
|
|
||||||
- 编辑时先 GET 任务详情,合并后 PUT 更新(保护其他字段不被覆盖)
|
|
||||||
|
|
||||||
## 思维导图
|
|
||||||
- MindMapViewer 封装 mind-elixir
|
|
||||||
- selectable 模式:点击节点 emit `node-select`
|
|
||||||
- ReviewRecall 中 standardExpanded 展开后节点可点击选复习起点
|
|
||||||
|
|
||||||
## 编译
|
|
||||||
- `npx vite build`
|
|
||||||
- `npx vue-tsc --noEmit`(类型检查)
|
|
||||||
Reference in New Issue
Block a user