314 lines
6.5 KiB
Markdown
314 lines
6.5 KiB
Markdown
# 记事本模块部署检查清单
|
||
|
||
## 📋 部署前检查
|
||
|
||
### 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 请求响应
|
||
|
||
祝部署顺利!🎉
|