更新数据库结构,向章节表添加 hot_score 字段以修复前端保存章节时的 1054 错误。同时,实施 Toast 通知系统,替换全系统的 alert 提示,提升用户体验。更新相关文档以反映变更流程与最佳实践。

This commit is contained in:
Alex-larget
2026-03-10 18:11:06 +08:00
parent aebb533507
commit 3b942fd7a4
16 changed files with 1028 additions and 785 deletions

View File

@@ -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`

View File

@@ -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`

View File

@@ -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 变更 SOPALTER→model→重启 |
| 2026-03-10 | 团队 | 方法论 | - | DB 变更 SOP + Toast 批量替换方法论(脚本替换后必须人工复查 toast.info 语义) |
---
@@ -39,4 +42,4 @@
---
**最后更新**2026-03-10
**最后更新**2026-03-10Toast + hot_score 经验入库)

View File

@@ -22,9 +22,10 @@ soul-apiGo + 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-10dashboard-stats 接口新增完成)
**最后更新**2026-03-10hot_score 迁移完成)

View File

@@ -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-10Toast 系统全局落地)

View File

@@ -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`