# 记事本模块部署检查清单 ## 📋 部署前检查 ### 1. 数据库准备 - [ ] 执行 SQL 文件创建数据表 ```bash mysql -u用户名 -p数据库名 < sql/yz_platform_notebook.sql ``` - [ ] 验证表创建成功 ```sql SHOW TABLES LIKE 'yz_platform_notebook'; DESC yz_platform_notebook; ``` ### 2. 后端代码检查 - [✅] 模型文件已创建: `go/models/platform_notebook.go` - [✅] 模型已注册: `go/models/init.go` - [✅] 控制器已创建: `go/controllers/platform_notebook.go` - [✅] 路由已注册: `go/routers/platform/platform.go` - [✅] 代码编译通过 ### 3. 前端代码检查 - [✅] API文件已创建: `platform/src/api/notebook.js` - [✅] 主页面已创建: `platform/src/views/apps/notebook/index.vue` - [✅] 编辑器组件已创建: `platform/src/views/apps/notebook/components/edit.vue` - [✅] WangEditor组件已创建: `platform/src/views/apps/notebook/components/WangEditor.vue` ### 4. 依赖检查 - [ ] 前端安装 WangEditor ```bash cd platform npm install @wangeditor/editor # 或 yarn add @wangeditor/editor ``` ### 5. 菜单配置 - [ ] 在平台管理后台添加记事本菜单项 - 路径: `/apps/notebook` - 组件: `apps/notebook/index.vue` - 图标: `fa-solid fa-book` 或其他合适的图标 - 标题: `记事本` 或 `我的笔记` ## 🚀 部署步骤 ### 后端部署 1. **停止服务** ```bash # 如果服务正在运行,先停止 pkill -f "go run main.go" ``` 2. **编译代码** ```bash cd go go build -o server ``` 3. **启动服务** ```bash ./server # 或使用后台运行 nohup ./server > server.log 2>&1 & ``` ### 前端部署 1. **安装依赖** ```bash cd platform npm install # 或 yarn install ``` 2. **开发模式测试** ```bash npm run dev # 或 yarn dev ``` 3. **生产构建** ```bash npm run build # 或 yarn build ``` ## ✅ 功能测试 ### 基础功能测试 1. **访问页面** - [ ] 能够正常访问记事本页面 - [ ] 页面布局正常显示 - [ ] 左侧列表和右侧编辑器都能正常显示 2. **创建笔记** - [ ] 点击"新建笔记"按钮 - [ ] 输入标题和内容 - [ ] 点击"创建"按钮 - [ ] 创建成功,笔记出现在列表中 3. **编辑笔记** - [ ] 点击列表中的笔记 - [ ] 笔记内容正确加载到编辑器 - [ ] 修改标题和内容 - [ ] 点击"保存"按钮 - [ ] 保存成功,列表中的笔记信息更新 4. **删除笔记** - [ ] 点击笔记右侧的"更多"按钮 - [ ] 点击"删除" - [ ] 确认删除 - [ ] 笔记从列表中移除 5. **搜索笔记** - [ ] 在搜索框输入关键词 - [ ] 列表自动过滤显示匹配的笔记 - [ ] 清空搜索框,显示所有笔记 ### 富文本编辑器测试 1. **文本格式** - [ ] 加粗、斜体、下划线 - [ ] 标题(H1-H6) - [ ] 字体颜色和背景色 2. **列表和引用** - [ ] 有序列表 - [ ] 无序列表 - [ ] 引用块 3. **插入内容** - [ ] 插入链接 - [ ] 插入代码块 - [ ] 插入表格 4. **图片上传** (需要配置上传接口) - [ ] 点击图片按钮 - [ ] 选择图片文件 - [ ] 图片正确上传并显示 ### API测试 (使用浏览器控制台) ```javascript // 1. 在浏览器控制台加载测试脚本 // 将 test-api.js 的内容粘贴到控制台 // 2. 运行完整测试 await NotebookTest.runFullTest(); // 3. 或单独测试各个功能 await NotebookTest.create(); // 创建笔记 await NotebookTest.list(); // 获取列表 await NotebookTest.detail(1); // 获取详情 await NotebookTest.update(1, {...}); // 更新笔记 await NotebookTest.delete(1); // 删除笔记 ``` ## 🐛 常见问题排查 ### 1. 编译错误 **问题**: `cannot use &claims.UserID (value of type *int) as *uint64` **解决**: 已修复,使用类型转换 `userID := uint64(claims.UserID)` --- **问题**: `undefined: PlatformNotebook` **解决**: 检查 `go/models/init.go` 中是否已注册模型 --- ### 2. 数据库错误 **问题**: 表不存在 **解决**: ```sql -- 检查表是否存在 SHOW TABLES LIKE 'yz_platform_notebook'; -- 如果不存在,执行 SQL 文件 SOURCE sql/yz_platform_notebook.sql; ``` --- **问题**: 字段不存在 **解决**: 确认字段名使用 `create_time`, `update_time`, `delete_time` --- ### 3. 前端错误 **问题**: WangEditor 未定义 **解决**: ```bash npm install @wangeditor/editor ``` --- **问题**: API 请求 401 未授权 **解决**: - 检查用户是否已登录 - 检查 JWT Token 是否有效 - 检查 Token 是否正确设置在请求头中 --- **问题**: 笔记列表为空 **解决**: - 检查数据库中是否有数据 - 检查用户ID是否匹配 - 查看浏览器控制台和网络请求 --- ### 4. 权限错误 **问题**: 无法访问其他用户的笔记 **说明**: 这是正常的,每个用户只能访问自己的笔记 --- ## 📊 性能优化建议 ### 数据库优化 1. 为常用查询字段添加索引(已添加) - `user_id` - `create_time` - `is_deleted` 2. 定期清理软删除的数据 ```sql -- 删除30天前的软删除数据 DELETE FROM yz_platform_notebook WHERE is_deleted = 1 AND delete_time < DATE_SUB(NOW(), INTERVAL 30 DAY); ``` ### 前端优化 1. 列表分页加载(已实现) 2. 内容预览截取(已实现) 3. 懒加载编辑器组件 4. 防抖搜索功能(可选) ### 后端优化 1. 添加缓存层(Redis) 2. 内容压缩存储 3. 异步处理大文件 4. API 限流保护 ## 🔐 安全建议 1. **内容安全** - 前端显示时做 XSS 过滤 - 后端存储前做内容校验 - 限制单篇笔记大小 2. **访问控制** - JWT Token 验证(已实现) - 用户权限校验(已实现) - API 频率限制 3. **数据备份** - 定期备份数据库 - 软删除机制(已实现) - 版本控制(可选) ## 📝 后续功能扩展 - [ ] 笔记分类/文件夹 - [ ] 笔记标签 - [ ] 笔记分享 - [ ] 导出功能(PDF/Markdown) - [ ] 版本历史 - [ ] 协作编辑 - [ ] 全文搜索 - [ ] 附件上传 - [ ] 模板功能 - [ ] 快捷键支持 ## ✨ 完成标志 - [✅] SQL 表创建成功 - [✅] 后端代码编译通过 - [✅] 前端页面正常访问 - [ ] 所有功能测试通过 - [ ] 无控制台错误 - [ ] 性能表现良好 ## 📞 技术支持 如遇到问题,请检查: 1. 浏览器控制台错误信息 2. 后端服务日志 3. 数据库连接状态 4. API 请求响应 祝部署顺利!🎉