优化、定版本

This commit is contained in:
Alex-larget
2026-03-17 14:17:20 +08:00
parent c24caf63c5
commit b57b132226
16 changed files with 220 additions and 4 deletions

View File

@@ -47,3 +47,27 @@
## 会议收尾2026-03-17
- 源码优化 10 项全部完成;开发环境测试 10 通过 2 跳过
---
## 性能优化与 Redis 缓存方案落地2026-03-17
### Redis 缓存
- **internal/cache**Get/Set/Del、GetString/SetStringRedis 不可用时回退 DB
- **已缓存**book/parts、hot、recommended、stats、config、章节 content
- **失效**InvalidateBookParts、InvalidateBookCache、InvalidateConfig、InvalidateChapterContent
### OSS 上传
- **internal/oss**LoadConfig、Upload、Delete失败回退本地
- 配置从 system_config.oss_config 读取
### /health
- 返回 database、redis 连接状态ok/disconnected/disabled
### 经验
- Redis 容灾:未配置或失败时回退 DB不阻塞业务
- 缓存 keysoul:{业务}:{标识}

View File

@@ -48,3 +48,19 @@
## 会议收尾2026-03-17
- 源码优化 10 项全部完成;功能测试流程定稿;开发环境测试 10 通过 2 跳过
---
## 性能优化与 Redis 缓存方案落地2026-03-17
### 架构约定
- **Redis 容灾**:不可用时回退 DB不阻塞业务
- **缓存 key**soul:{业务}:{标识}
- **OSS 上传**:优先 OSS失败回退本地
### 影响角色
- 后端开发cache、oss 包;/health 增强
- 管理端开发工程师OSS 配置后上传自动优先 OSS
- 测试人员test_upload.py、/health 验证、部署后回归缓存接口

View File

@@ -51,6 +51,7 @@
| 2026-03-17 | 小程序、后端、团队 | 业务规则/bug 修复 | - | 代付美团式读页→代付页→分享PayNotify beneficiaryUserID 权益归发起人detail 返回 initiatorUserId目录 loading、最新新增 5 条折叠 |
| 2026-03-17 | 小程序 | 业务规则 | - | 代付统一到代付页gift=1&ref 打开 read 时 redirectTo 代付页,禁止在阅读页代付 |
| 2026-03-17 | 软件测试 | 流程定稿 | testing SKILL | 功能测试流程:成功 ☑、失败列问题、最终报告scripts/test/功能测试流程.md、测试报告-环境与用例清单.md |
| 2026-03-17 | 后端、团队 | 架构/最佳实践 | api-dev SKILL | Redis 缓存parts/hot/recommended/stats/config/章节 content容灾回退 DBOSS 上传;/health 返回 database/redis 状态 |
---

View File

@@ -35,6 +35,7 @@ soul-apiGo + Gin + GORM + MySQL提供三组路由`/api/miniprogram/*`
| 2026-03-17 | 会议新版管理端迁移router 补齐 users/rfm、journey-stats、shensheshou 共 5 个;确认 ossConfig | 进行中 |
| 2026-03-17 | 会议:稳定版源码质量优化;敏感配置生产强制校验、新增 /api/admin/user/track、AdminWithdrawTest 环境限制 | 已完成 |
| 2026-03-17 | 会议收尾:源码优化 10 项全部完成;开发环境测试 10 通过 2 跳过 | 已完成 |
| 2026-03-17 | 性能优化会议Redis 缓存接入parts/hot/recommended/stats/config/章节 content、容灾回退 DBOSS 上传接入;/health 返回 database/redis 状态 | 已完成 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置

View File

@@ -28,6 +28,7 @@ Soul 创业派对全项目架构与约定路由隔离miniprogram/admin/db
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
| 2026-03-16 | TipTap Mention 需 data-label 规则;链接人与事与存客宝对接优化会议收尾 | 已完成 |
| 2026-03-17 | 代付美团式流程与权益归属约定:读页→代付页→分享;权益/分佣归发起人PayNotify beneficiaryUserID | 已完成 |
| 2026-03-17 | 性能优化与 Redis 缓存方案落地Redis 容灾回退 DB、OSS 上传容灾;/health 返回 database/redis 状态 | 已完成 |
> **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD

View File

@@ -29,6 +29,7 @@
| 2026-03-16 | 会议new-soul 新需求与当前项目差异分析引入派对AI 时回归文章上传/飞书推送/小程序展示 | 已完成 |
| 2026-03-17 | 会议:稳定版源码质量优化;每项小回归、全部完成后完整三端联调 | 待续 |
| 2026-03-17 | 会议收尾:功能测试流程定稿、测试报告模板、开发环境 10 通过 2 跳过 | 已完成 |
| 2026-03-17 | 性能优化会议test_upload.py 6 用例;/health 可验证 database/redis部署后回归缓存接口 | 已完成 |
---

View File

@@ -40,6 +40,7 @@
| 2026-03-17 | 修复 DistributionPage Order.description用户余额人工调整后端 adjust API + 用户详情入口);代付列表页(后端 gift-pay-requests + 推广中心 Tab | 已完成 |
| 2026-03-17 | 会议稳定版源码质量优化UserDetailModal 改 /api/admin/user/track、RichEditor HTML 转义 | 已完成 |
| 2026-03-17 | 会议收尾:源码优化已落地;开发环境测试通过 | 已完成 |
| 2026-03-17 | 性能优化会议OSS 配置后上传自动优先 OSS失败回退本地无需前端改动 | 已完成 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置

View File

@@ -10,3 +10,10 @@
## 会议收尾2026-03-17
- 源码优化已落地;开发环境测试通过
---
## 性能优化会议2026-03-17
- **OSS 上传**:系统设置保存 OSS 配置后,上传接口自动优先 OSS失败回退本地
- 无需前端改动,后端 upload handler 已支持

View File

@@ -21,3 +21,11 @@
- **功能测试流程定稿**`scripts/test/功能测试流程.md` — 成功 ☑️、失败列问题、最终报告
- **测试报告模板**`scripts/test/测试报告-环境与用例清单.md` — 环境、用例、结果记录
- **开发环境测试**10 通过、2 跳过、0 失败
---
## 性能优化会议2026-03-17
- **test_upload.py**6 个用例(上传成功、鉴权、校验、删除)
- **/health**:可验证 database、redis 连接状态
- **部署后回归**parts、hot、config、章节阅读等缓存接口

View File

@@ -0,0 +1,101 @@
# 会议纪要 - 2026-03-17 | 性能优化与 Redis 缓存方案落地
> 本文件由**助理橙子**在会议结束后自动生成。
---
## 基本信息
- **时间**2026-03-17
- **议题**三端性能优化、Redis 缓存接入、OSS 上传、健康检查增强
- **参与角色**:后端开发、管理端开发工程师、小程序开发工程师、测试人员、助理橙子
---
## 会议决议
### 1. Redis 缓存接入(已完成)
| 接口 | 路由 | TTL | 失效触发 |
|------|------|-----|----------|
| 目录 | `/api/miniprogram/book/parts` | 10min | 章节增删改 |
| 热门 | `/api/miniprogram/book/hot` | 5min | 章节更新 |
| 推荐 | `/api/miniprogram/book/recommended` | 5min | 章节更新 |
| 统计 | `/api/miniprogram/book/stats` | 5min | 章节更新 |
| 配置 | `/api/miniprogram/config` | 10min | 配置变更 |
| 正文 | `/api/book/chapter/by-mid/:mid` | 30min | 章节内容更新 |
### 2. Redis 容灾
- Redis 未配置或连接失败时自动回退 DB不阻塞业务
- 读写失败仅打日志,不向上抛出
### 3. OSS 上传接入(已完成)
- 管理端图片上传支持阿里云 OSS
- 未配置或失败时回退本地磁盘
- 删除支持 OSS URL 与本地路径
### 4. /health 接口增强(已完成)
- 返回 `database``redis` 连接状态ok / disconnected / disabled
### 5. Redis 配置
- `.env.production``.env.development` 增加 REDIS_URL
- 服务器 Redis端口 6379密码 ckb@!URL 编码 ckb%40%21
### 6. 迁移功能变更清单2026-03-17
1. Redis 缓存接入:目录、热门/推荐/统计、config、章节正文
2. Redis 容灾:未配置或失败时回退 DB
3. OSS 上传接入:管理端图片支持阿里云 OSS容灾回退本地
4. /health 接口增强:返回 database、redis 连接状态
5. Redis 配置:.env 增加 REDIS_URL服务器密码 ckb@!
6. 文件上传测试:新增 test_upload.py 共 6 个用例
7. 缓存失效策略:章节/内容/配置变更时自动失效对应 Redis 缓存
---
## 待办事项
| 责任角色 | 任务 | 优先级 | 截止建议 |
|---------|------|--------|---------|
| 后端开发 | 部署后验证 Redis 连接(/health 显示 redis: ok | 中 | 部署后 |
| 测试人员 | 部署后回归缓存接口parts、hot、config、章节阅读 | 中 | 部署后 |
---
## 问题与作答区
| # | 问题 | 责任角色 | 作答 |
|---|------|---------|------|
| 1 | Redis 与 soul-api 跨机部署时REDIS_URL 中 host 填 Redis 服务器 IP 是否已文档化? | 后端开发 | (待补充) |
---
## 各角色经验与业务理解更新
### 后端开发
- internal/cache 包Get/Set/Del、GetString/SetStringKeyBookParts、KeyChapterContent 等
- 缓存失效InvalidateBookParts、InvalidateBookCache、InvalidateConfig、InvalidateChapterContent
- 章节正文缓存:先查元数据(不含 content再取 contentRedis 或 DB
### 管理端开发工程师
- OSS 配置在系统设置保存后,上传接口自动优先 OSS无需前端改动
### 测试人员
- test_upload.py6 个用例覆盖上传成功、鉴权、校验、删除
- /health 可验证 database、redis 连接状态
### 团队共享
- Redis 容灾约定:不可用时回退 DB不阻塞业务
- 缓存 key 规范soul:{业务}:{标识}
---
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-17.md`*

View File

@@ -78,3 +78,4 @@ YYYY-MM-DD_会议主题.md
| 2026-03-17 | 新版管理端迁移到稳定版实施方案确认 | 产品、后端、管理端、小程序、测试 | [2026-03-17_新版管理端迁移到稳定版实施方案确认.md](2026-03-17_新版管理端迁移到稳定版实施方案确认.md) |
| 2026-03-17 | 稳定版源码质量优化方案讨论与开发安排 | 产品、后端、管理端、小程序、测试 | [2026-03-17_稳定版源码质量优化方案讨论与开发安排.md](2026-03-17_稳定版源码质量优化方案讨论与开发安排.md) |
| 2026-03-17 | 会议收尾:源码优化完成与测试流程定稿 | 产品、后端、管理端、小程序、测试、助理橙子 | [2026-03-17_会议收尾-源码优化完成与测试流程定稿.md](2026-03-17_会议收尾-源码优化完成与测试流程定稿.md) |
| 2026-03-17 | 性能优化与 Redis 缓存方案落地 | 后端、管理端、小程序、测试、助理橙子 | [2026-03-17_性能优化与Redis缓存方案落地.md](2026-03-17_性能优化与Redis缓存方案落地.md) |

View File

@@ -9,8 +9,8 @@ const { checkAndExecute } = require('./utils/ruleEngine.js')
App({
globalData: {
// API 基础地址(切换环境时注释/取消注释)
// baseUrl: 'https://soulapi.quwanzhi.com',
baseUrl: 'http://localhost:8080', // 本地调试
baseUrl: 'https://soulapi.quwanzhi.com',
// baseUrl: 'http://localhost:8080', // 本地调试
// baseUrl: 'https://souldev.quwanzhi.com', // 测试环境

View File

@@ -11,8 +11,11 @@ APP_VERSION=0.0.0
# 数据库(测试环境 souldev
DB_DSN=souldev:RXW2FeRcRdH2GtXy@tcp(56b4c23f6853c.gz.cdb.myqcloud.com:14413)/souldev?charset=utf8mb4&parseTime=True
# Redis(本地 Dockercd soul-api && docker compose up -d 后启用)
# Redis
# 本地开发无密码docker compose up -d 后使用 redis://localhost:6379/0
# 测试服/服务器(有密码 ckb@!redis://:ckb%40%21@localhost:6379/0
REDIS_URL=redis://localhost:6379/0
# REDIS_URL=redis://:ckb%40%21@localhost:6379/0
# 远程库启动时跳过 AutoMigrate表已存在避免 information_schema 慢查询);首次建表时注释掉
SKIP_AUTO_MIGRATE=1
# 慢查询阈值(ms),默认 5000避免 200ms 刷屏;设为 0 可恢复 GORM 默认

View File

@@ -11,6 +11,10 @@ APP_VERSION=0.0.0
# 数据库(与 Next 现网一致:腾讯云 CDB soul_miniprogram
DB_DSN=cdb_outerroot:Zhiqun1984@tcp(56b4c23f6853c.gz.cdb.myqcloud.com:14413)/soul_miniprogram?charset=utf8mb4&parseTime=True
# Redis服务器实例端口 6379密码 ckb@!;同机用 localhost跨机用 Redis 服务器 IP
# 密码含特殊字符需 URL 编码:@ -> %40, ! -> %21
REDIS_URL=redis://:ckb%40%21@localhost:6379/0
# 统一 API 域名支付回调、转账回调、apiDomain 等由此派生;无需尾部斜杠)
API_BASE_URL=https://soulapi.quwanzhi.com

View File

@@ -1,9 +1,13 @@
package router
import (
"context"
"soul-api/internal/config"
"soul-api/internal/database"
"soul-api/internal/handler"
"soul-api/internal/middleware"
"soul-api/internal/redis"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
@@ -372,11 +376,29 @@ func Setup(cfg *config.Config) *gin.Engine {
c.Status(204)
})
// 健康检查:返回状态版本号(版本号从 .env 的 APP_VERSION 读取,打包/上传前写入)
// 健康检查:返回状态版本号、数据库与 Redis 连接状态
r.GET("/health", func(c *gin.Context) {
dbStatus := "ok"
if sqlDB, err := database.DB().DB(); err != nil {
dbStatus = "error"
} else if err := sqlDB.Ping(); err != nil {
dbStatus = "disconnected"
}
redisStatus := "disabled"
if redis.Client() != nil {
if err := redis.Client().Ping(context.Background()).Err(); err != nil {
redisStatus = "disconnected"
} else {
redisStatus = "ok"
}
}
c.JSON(200, gin.H{
"status": "ok",
"version": cfg.Version,
"database": dbStatus,
"redis": redisStatus,
})
})

View File

@@ -442,3 +442,28 @@ Mycontent-temp/miniprogram 为样式预览分支miniprogram 为线上主线
## 相关文档
- `.cursor/meeting/2026-03-17_会议收尾-源码优化完成与测试流程定稿.md`
---
# 第十八部分:性能优化与 Redis 缓存方案落地2026-03-17
## 会议决议
| 项 | 结论 |
|----|------|
| **Redis 缓存** | book/parts、hot、recommended、stats、config、章节 contentTTL 530min |
| **Redis 容灾** | 未配置或连接失败时回退 DB不阻塞业务 |
| **OSS 上传** | 管理端图片支持阿里云 OSS失败回退本地 |
| **/health** | 返回 database、redis 连接状态 |
| **配置** | .env 增加 REDIS_URL服务器 Redis 密码 ckb@! |
## 迁移变更清单
1. Redis 缓存接入internal/cache 封装6 类接口缓存
2. 缓存失效:章节/内容/配置变更时自动失效
3. OSS 上传internal/oss 封装UploadDelete 支持 OSS
4. test_upload.py6 个上传/删除用例
## 相关文档
- `.cursor/meeting/2026-03-17_性能优化与Redis缓存方案落地.md`