Files
biji/doc/development_plan.md
黄孟 b38e97b8c3 refactor(biji): 重构笔记保存逻辑并修复相关BUG
- 后端:将笔记创建和更新逻辑合并为一个接口,根据ID是否存在自动判断操作类型
- 前端:修复了新建笔记时自动保存导致数据重复创建的问题
- 优化了与后端的数据同步,确保本地状态与服务器保持一致
2025-07-31 11:40:50 +08:00

81 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目开发与美化计划
本计划旨在为您的笔记项目提供一个清晰、分步走的开发与美化路线图。
## 第一阶段:核心体验提升 - UI美化与交互优化 (已完成)
这个阶段的目标是全面提升应用的颜值和易用性。
- **任务1.1引入Element Plus UI库 (已完成)**
- **前端**: 安装并配置 Element Plus并使用其组件重构了页面。
- **任务1.2:响应式布局 (已完成)**
- **前端**: 使用 Element Plus 的栅格系统和CSS媒体查询实现了响应式布局确保应用在不同尺寸的设备上都能良好显示。
- **任务1.3升级Markdown编辑器 (已完成)**
- **前端**: 集成了功能更强大的 `vditor` 编辑器,替换了原有的组件,并确保了内容的双向绑定和图片的上传功能。
- **(可选任务)任务:重构前端页面 (已完成)**
- **前端**: 对所有核心页面登录、注册、主页进行了全面的UI和UX重构。
- **主题系统**: 建立了基于CSS变量的动态主题系统支持浅色/深色模式一键切换,并能记忆用户偏好。
- **视觉美化**: 统一了应用的视觉风格,包括颜色、字体、间距和阴影,使界面更具现代感和层次感。
- **交互动效**: 为按钮、列表、卡片和对话框等元素添加了平滑的过渡动画和即时视觉反馈(如悬停、点击效果),提升了操作的流畅度和愉悦感。
- **性能优化**: 优先使用CSS动画以利用硬件加速确保了动态效果的流畅性。
## 第二阶段:基础功能完善与安全加固 (已完成)
这个阶段的目标是补齐核心功能,并确保应用的安全性。
- **任务2.1:实现用户认证与授权 (已完成)**
- **后端**: 使用 Spring Security 和 JWT 实现了一套完整的认证授权系统。
- 实现了 `UserDetailsService` 来加载用户信息。
- 创建了 JWT 工具类,用于生成和验证 Token。
- 创建了登录接口,成功后返回 JWT。
- 创建了一个 JWT 过滤器,用于保护需要授权的接口。
- **前端**: 实现了登录、注册页面和 Token 管理。
- 创建了登录和注册页面组件。
- 使用 Pinia 进行状态管理,并将获取到的 JWT 存储在 `localStorage` 中。
- 封装了 `axios`,在请求头中自动添加 `Authorization` 字段。
- 实现了登出功能。
## 第三阶段:高级功能拓展 (已完成)
这个阶段我们为应用增加了更多有价值的功能。
- **任务3.1:实现笔记名模糊搜索 (已完成)**
- **后端**: 在 `MarkdownController` 中添加了 `/search` 接口,使用 Mybatis-Plus 的 `like` 查询实现标题的模糊搜索。
- **前端**: 在主页添加了搜索框,并实现了调用后端接口进行搜索和展示结果的逻辑。
- **~~任务3.2:实现笔记分享~~ (已取消)**
- 根据您的要求,此任务已取消。
## 第四阶段:核心功能增强 (已完成)
这个阶段我们进一步强化了应用的核心功能,提升了用户体验。
- **任务4.1:实现编辑/新增时自动保存 (已完成)**
- **前端**: 在 `HomePage.vue`通过监听编辑器内容变化并结合防抖debounce技术实现了在用户停止输入2秒后自动保存笔记的功能并提供了实时的保存状态提示。
- **任务4.2:实现修改文件名和分类名 (已完成)**
- **后端**:
-`GroupingController` 中利用现有接口实现了修改分类名称的功能。
-`MarkdownController` 中添加了新的 `PUT` 接口,用于修改笔记标题。
- **前端**:
- 在分类和笔记标题旁添加了编辑图标。
- 实现了点击编辑图标后弹出对话框,让用户可以输入新名称并保存的功能。
- **任务4.3:实现单文件导入/导出 (已完成)**
- **后端**: 删除了原有的批量导入/导出接口。
- **前端**:
- 移除了批量导入/导出的UI。
- 在笔记预览页面添加了“导出为.md”按钮可将当前笔记内容直接下载为 Markdown 文件。
- 优化了“上传Markdown”功能用户上传文件后会弹出对话框让用户选择要导入的分类。
## 第五阶段系统优化与BUG修复 (已完成)
这个阶段我们对系统进行了深入的优化和问题修复,提升了应用的稳定性和健壮性。
- **任务5.1修复JWT安全漏洞 (已完成)**
- **后端**: 解决了因签名密钥长度不足而导致的安全风险。通过更新密钥并采用 `jjwt` 库的最佳实践重构了 `JwtTokenUtil`,确保了认证系统的安全性。
- **任务5.2:重构分类系统 (已完成)**
- **前端**: 彻底重构了分类的数据结构和UI实现了支持无限层级的树状分类系统。使用级联选择器 (`el-cascader`) 优化了新建笔记和分类的体验。
- **任务5.3:修复笔记保存逻辑 (已完成)**
- **后端**: 重构了笔记保存的业务逻辑将“新建”和“更新”操作统一到一个接口中通过判断笔记ID是否存在来智能执行插入或更新解决了数据重复创建的问题。
- **前端**: 修复了新建笔记时后续自动保存操作会重复创建记录的BUG。
- **任务5.4修复Markdown预览问题 (已完成)**
- **前端**: 解决了Vditor预览时因DOM异步更新和数据处理不当导致的渲染崩溃及内容截断问题确保了预览功能的稳定性。