You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
houqin-java/.codebuddy/plans/测试要求增强与权限方案优化_06fa523e.md

91 lines
3.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
name: 测试要求增强与权限方案优化
overview: 1. 增强测试要求代码级100%覆盖(每个类/方法/if-else/case分支、测试前置流程修改后必须先测试通过才能继续2. 权限实时生效方案从"数据库轮询标记"改为"Redis Pub/Sub"利用已有Redis实例零额外中间件
todos:
- id: update-08-redis
content: 更新08-项目技术要求.md中权限实时通知方案为Redis Pub/Sub
status: completed
- id: update-08-test
content: 更新08-项目技术要求.md中测试要求100%覆盖+测试前置流程)
status: completed
dependencies:
- update-08-redis
- id: update-08-misc
content: 更新08-项目技术要求.md中缓存策略表、缓存管理表、配置项等关联内容
status: completed
dependencies:
- update-08-redis
- id: update-03-redis
content: 更新03-业务流转逻辑.md中权限实时生效描述
status: completed
- id: update-01-redis
content: 更新01-模块划分.md中权限实时生效描述
status: completed
---
## 用户需求
### 需求1权限实时生效方案优化
当前方案"数据库轮询标记 + Spring Event"每5秒轮询一次数据库资源消耗大。需要改为更轻量的方案利用已有Redis实例实现毫秒级权限变更通知零额外中间件、零数据库压力。
### 需求2测试要求增强
- **100%代码级覆盖**每个类、方法、包括方法里if-else、case分支都必须测试到
- **测试前置流程**:每次代码修改后,必须先进行测试,测试通过后才能进行下一步操作
## 方案概述
### 一、权限实时生效Redis Pub/Sub 替代数据库轮询
**原理**:权限变更时通过 Redis `PUBLISH` 命令发布消息,各服务节点通过 `MessageListener` 订阅频道,收到消息后刷新本地权限缓存。
**优势对比**
| 对比项 | 数据库轮询(原方案) | Redis Pub/Sub新方案 |
| --- | --- | --- |
| 数据库压力 | 每5秒N次SQL | 0不碰数据库 |
| 延迟 | 最大5秒 | 毫秒级(内存操作) |
| 资源消耗 | 定时线程+DB连接 | 复用已有Redis连接几乎零额外开销 |
| 多节点支持 | 需每节点轮询 | 天然支持(每节点各自订阅) |
| 降级策略 | 无 | Redis断连时权限缓存TTL(2小时)到期后自然刷新 |
**实现要点**
- 频道命名:`permission:changed`
- 消息内容版本号Long用于判断是否需要刷新
- 发布时机:角色权限变更、用户角色分配变更
- 订阅方:各服务实例启动时注册 `RedisMessageListenerContainer`
- 降级保障Redis连接断开时不影响业务缓存TTL到期后自动刷新
### 二、测试要求增强
- 单元测试覆盖率从70%提升至100%(行覆盖+分支覆盖)
- 新增JaCoCo分支覆盖指标要求
- 新增"9.6 测试前置流程"章节,定义代码修改→测试→下一步的强制流程
- 在7.8代码审查要求中增加测试覆盖率检查项
### 修改范围
3个文档共约12处修改点
1. **docs/08-项目技术要求.md**9处
- 3.1 权限变更实时通知:方案描述+代码示例
- 3.3 跨实例通信描述
- 5.3 缓存策略表
- 7.8 代码审查要求
- 8.4 缓存管理策略表
- 9.1 单元测试:覆盖率和分支要求
- 9.2 集成测试:权限生效延迟描述
- 新增9.6 测试前置流程
- 10.3 配置项删除轮询间隔新增Redis频道配置
2. **docs/03-业务流转逻辑.md**1处
- 2.3 权限实时生效流程中的描述
3. **docs/01-模块划分.md**1处
- 2.4 权限实时生效机制中的描述