更新数据库结构,向章节表添加 hot_score 字段以修复前端保存章节时的 1054 错误。同时,实施 Toast 通知系统,替换全系统的 alert 提示,提升用户体验。更新相关文档以反映变更流程与最佳实践。
This commit is contained in:
@@ -34,3 +34,34 @@
|
||||
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md`
|
||||
|
||||
---
|
||||
|
||||
## chapters 表新增 hot_score 字段
|
||||
|
||||
### 问题
|
||||
|
||||
前端 `ContentPage.tsx` 保存章节时传递 `hotScore` 字段,但后端 model 和数据库均缺少该列,导致:
|
||||
```
|
||||
Error 1054 (42S22): Unknown column 'hot_score' in 'field list'
|
||||
```
|
||||
|
||||
### 修复步骤
|
||||
|
||||
1. 执行迁移 SQL(`soul-api/scripts/add-hot-score.sql`):
|
||||
```sql
|
||||
ALTER TABLE chapters ADD COLUMN hot_score INT NOT NULL DEFAULT 0;
|
||||
```
|
||||
2. 同步 model(`internal/model/chapter.go`):
|
||||
```go
|
||||
HotScore int `gorm:"column:hot_score;default:0" json:"hotScore"`
|
||||
```
|
||||
3. 重启后端服务生效
|
||||
|
||||
### 规则沉淀
|
||||
|
||||
- **model 与 DB 必须同步**:前端传入新字段时,必须先确认 DB 列存在,再确认 model struct 中有对应字段,缺一不可
|
||||
- **变更流程**:前端加字段 → ALTER TABLE → 更新 model struct → 重启服务
|
||||
- 迁移 SQL 统一放 `soul-api/scripts/` 目录,文件名格式 `add-{描述}.sql`
|
||||
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_Toast通知系统全局落地.md`
|
||||
|
||||
|
||||
@@ -116,3 +116,29 @@
|
||||
> 同时影响:小程序开发工程师、后端工程师
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md`
|
||||
|
||||
---
|
||||
|
||||
## Toast 通知系统 & DB 变更 SOP(团队共享)
|
||||
|
||||
### Toast 批量替换方法论
|
||||
|
||||
使用 PowerShell 正则脚本批量替换 alert → toast,**替换后必须人工复查 `toast.info()`**:
|
||||
- 验证提示类("请输入/请填写/密码至少/ID已存在")被脚本误判为 info,应改为 error
|
||||
- 核查方式:`grep -r "toast.info(" src/` 逐条确认语义
|
||||
|
||||
### DB 变更 SOP(前后端联动)
|
||||
|
||||
当前端新增字段时,完整变更流程:
|
||||
|
||||
| 步骤 | 执行方 | 操作 |
|
||||
|------|--------|------|
|
||||
| 1 | 后端 | 执行 `ALTER TABLE` 或用 `db-exec` 脚本 |
|
||||
| 2 | 后端 | 更新 `internal/model/*.go` struct |
|
||||
| 3 | 后端 | 重启服务验证 |
|
||||
| 4 | 管理端 | 确认保存请求不再报 1054 |
|
||||
|
||||
若跳过任一步骤,GORM 写入时必报 `Unknown column`。
|
||||
|
||||
> 同时影响:管理端开发工程师、后端工程师
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_Toast通知系统全局落地.md`
|
||||
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
| 2026-03-10 | 小程序 | 最佳实践 | miniprogram-dev SKILL §my | my.js 阅读统计改为后端接口(loadDashboardStats),禁止用随机数时间/标题占位 |
|
||||
| 2026-03-10 | 后端 | bug 修复 | api-dev SKILL | 聚合接口三处修复:recentChapters 去重、totalReadMinutes 最小1分钟、DB 错误返回 500 |
|
||||
| 2026-03-10 | 团队 | 方法论 | - | 新旧版代码对比:以功能完整性为基准,批量 diff + 分类取舍,不以日期判优劣 |
|
||||
| 2026-03-10 | 管理端 | 最佳实践 | admin-dev SKILL §toast | Toast 通知系统落地:utils/toast.ts 纯原生实现,全系统 18 文件 alert → toast 批量替换 |
|
||||
| 2026-03-10 | 后端 | bug 修复 | api-dev SKILL | chapters 表新增 hot_score 列,修复 1054 Unknown column 错误;DB 变更 SOP:ALTER→model→重启 |
|
||||
| 2026-03-10 | 团队 | 方法论 | - | DB 变更 SOP + Toast 批量替换方法论(脚本替换后必须人工复查 toast.info 语义) |
|
||||
|
||||
---
|
||||
|
||||
@@ -39,4 +42,4 @@
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-10
|
||||
**最后更新**:2026-03-10(Toast + hot_score 经验入库)
|
||||
|
||||
@@ -22,9 +22,10 @@ soul-api(Go + Gin + GORM + MySQL)提供三组路由:`/api/miniprogram/*`
|
||||
| 2026-03-05 | 文章详情@某人加好友方案讨论:content 内嵌 @ 标记、miniprogram 添加好友接口 | 待续 |
|
||||
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp;后端接口边界不变,overview 聚合接口可选但需降级 | 待续 |
|
||||
| 2026-03-10 | 新增 GET /api/miniprogram/user/dashboard-stats:聚合阅读统计接口,含去重、min1分钟、500错误码修复 | 已完成 |
|
||||
| 2026-03-10 | chapters 表新增 hot_score 列(ALTER TABLE + model 同步),修复前端保存章节报 1054 错误 | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-10(dashboard-stats 接口新增完成)
|
||||
**最后更新**:2026-03-10(hot_score 迁移完成)
|
||||
|
||||
@@ -21,9 +21,10 @@
|
||||
| 2026-03-05 | 分支冲突后功能完整性分析会议:全功能自测,记录 404/异常接口 | 待续 |
|
||||
| 2026-03-05 | 文章详情@某人加好友方案讨论:编辑页插入 @用户、保存约定 content 格式 | 待续 |
|
||||
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp 新菜单/布局;主导航收敛、author/admin 并入 Settings Tab | 待续 |
|
||||
| 2026-03-10 | Toast 通知系统落地:创建 utils/toast.ts(纯原生),全系统 18 文件约 90 处 alert 全部替换为 toast.success/error/info | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-10
|
||||
**最后更新**:2026-03-10(Toast 系统全局落地)
|
||||
|
||||
@@ -16,3 +16,41 @@
|
||||
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`
|
||||
|
||||
---
|
||||
|
||||
## Toast 通知系统全局落地
|
||||
|
||||
### 背景
|
||||
|
||||
管理端全部操作反馈使用原生 `alert()`,体验差、阻断操作流程、需点 OK 才能继续。
|
||||
|
||||
### 解决方案
|
||||
|
||||
创建 `soul-admin/src/utils/toast.ts`(**纯原生 DOM 实现**,无第三方依赖):
|
||||
|
||||
```typescript
|
||||
// 用法
|
||||
import toast from '@/utils/toast'
|
||||
toast.success('已保存:标题') // 绿色,3s 消失
|
||||
toast.error('保存失败: ...') // 红色,3s 消失
|
||||
toast.info('暂无数据') // 蓝色,3s 消失
|
||||
```
|
||||
|
||||
### 全系统替换
|
||||
|
||||
使用 PowerShell 批量脚本处理 **18 个文件、约 90 处 alert**,替换规则:
|
||||
- 含"失败/错误/请填/不一致/必填" → `toast.error()`
|
||||
- 含"成功/已保存/已删除/已创建" → `toast.success()`
|
||||
- 其余 → `toast.info()`
|
||||
|
||||
替换后人工复查 `toast.info()` 调用,修正 5 处语义误判(验证提示类应为 error)。
|
||||
|
||||
### 规则沉淀
|
||||
|
||||
1. **管理端禁用 `alert()`**,统一使用 `@/utils/toast`
|
||||
2. 新增页面/组件时,操作反馈一律用 toast
|
||||
3. 批量脚本替换后,**必须**人工复查 `toast.info()` 是否有应为 `toast.error()` 的验证提示
|
||||
4. toast 自动消失(3s),不阻断流程;若需用户确认,仍使用 `confirm()`
|
||||
|
||||
> 详见会议纪要:`.cursor/meeting/2026-03-10_Toast通知系统全局落地.md`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user