From bc9f15d340d8788bbb903550b75247bc73c17496 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Wed, 15 Apr 2026 11:12:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=A8=E9=87=8F=E8=BF=81?= =?UTF-8?q?=E7=A7=BB892-without-redis=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¨é‡è¿ç§»892-without-redis分支功能设计文档.md | 403 ++++++++++++++++++ 1 file changed, 403 insertions(+) create mode 100644 doc/2026-04-15-å…¨é‡è¿ç§»892-without-redis分支功能设计文档.md diff --git a/doc/2026-04-15-å…¨é‡è¿ç§»892-without-redis分支功能设计文档.md b/doc/2026-04-15-å…¨é‡è¿ç§»892-without-redis分支功能设计文档.md new file mode 100644 index 0000000..118964f --- /dev/null +++ b/doc/2026-04-15-å…¨é‡è¿ç§»892-without-redis分支功能设计文档.md @@ -0,0 +1,403 @@ +# å…¨é‡è¿ç§» `892-without-redis` 分支功能设计文档 + +## 1. 背景 + +当å‰åˆ†æ”¯ä¸º `892-jdk-8-without-redis`,已ç»å®Œæˆ JDK8 适é…与 Redis 移除改造。目标分支 `origin/892-without-redis` 包å«è´·æ¬¾å®šä»·ä¸šåŠ¡ã€ç™»å½•安全ã€éƒ¨ç½²è„šæœ¬ã€ç”Ÿäº§åˆå§‹åŒ– SQLã€æ–‡æ¡£ä¸Žå®žæ–½è®°å½•等多类改动。 + +本次需求已确认如下: + +- è¿ç§»èŒƒå›´ä¸ºç›®æ ‡åˆ†æ”¯ä¸­çš„全部功能,ä¸åªé™äºŽè´·æ¬¾å®šä»·ä¸»é“¾ +- è¿ç§»ç›®æ ‡ä»¥â€œåŠŸèƒ½è¡Œä¸ºå®Œå…¨å¯¹é½ç›®æ ‡åˆ†æ”¯â€ä¸ºå‡† +- ä¸è¦æ±‚æäº¤åކå²ä¸€è‡´ï¼Œä¹Ÿä¸è¦æ±‚逿–‡ä»¶åŽŸæ ·æ¬è¿ +- 当å‰åˆ†æ”¯å·²å®Œæˆçš„ JDK8 与去 Redis 基线必须ä¿ç•™ï¼Œä¸èƒ½è¢«å›žé€€ + +由于两个分支ä¸å­˜åœ¨å…±åŒ `merge base`,ä¸èƒ½æŒ‰å¸¸è§„增é‡åˆå¹¶å¤„ç†ã€‚本次应采用“以当å‰åˆ†æ”¯ä¸ºåŸºçº¿ï¼ŒæŒ‰åŠŸèƒ½è¡Œä¸ºå¯¹é½è¿ç§»â€çš„æ–¹å¼è½åœ°ã€‚ + +## 2. å·²ç¡®è®¤çº¦æŸ + +- 当å‰åˆ†æ”¯ä¿ç•™ï¼š + - JDK8 è¿è¡ŒåŸºçº¿ + - 去 Redis åŽçš„内存缓存实现 +- 目标分支中的所有业务能力ã€è„šæœ¬èƒ½åŠ›ã€åˆå§‹åŒ–能力都è¦è¿å…¥å½“å‰åˆ†æ”¯ +- è¿ç§»å®Œæˆçš„判断标准是“当å‰åˆ†æ”¯è¡Œä¸ºä¸Žç›®æ ‡åˆ†æ”¯ä¸€è‡´â€ï¼Œä¸æ˜¯â€œæ–‡ä»¶å†…容完全一致†+- ä¸é‡‡ç”¨è¡¥ä¸å¼å…œåº•方案,ä¸å¼•å…¥é¢å¤–兼容分支 +- 所有本次改动需è¦åœ¨ `doc/` 目录留下文档记录 +- å‰åŽç«¯åŒæ—¶æ¶‰åŠæ”¹åŠ¨æ—¶ï¼ŒåŽç»­å¿…须分别输出å‰ç«¯å®žæ–½è®¡åˆ’å’ŒåŽç«¯å®žæ–½è®¡åˆ’ + +## 3. çŽ°çŠ¶åˆ†æž + +### 3.1 分支关系现状 + +当å‰ä»“库中: + +- 本地分支:`892-jdk-8-without-redis` +- 远端å‚考分支:`origin/892-without-redis` + +两者没有共åŒåˆå¹¶åŸºçº¿ï¼Œè¯´æ˜Žä¸èƒ½é€šè¿‡ç®€å• `merge`ã€`cherry-pick` 或三点 diff æ¥å®‰å…¨è¿ç§»å…¨éƒ¨åŠŸèƒ½ã€‚ + +### 3.2 ç›®æ ‡åˆ†æ”¯æ”¹åŠ¨æž„æˆ + +ç»æ ¸å¯¹ï¼Œç›®æ ‡åˆ†æ”¯åŒ…å«ä»¥ä¸‹å‡ ç±»å†…容: + +1. 贷款定价主业务 +- æµç¨‹åˆ—è¡¨çš„æµ‹ç®—åˆ©çŽ‡ã€æ‰§è¡Œåˆ©çŽ‡ã€æ›´æ–°æ—¶é—´ +- æµç¨‹è¯¦æƒ…字段补é½ä¸Žè¯¦æƒ…å¡ç‰‡é¡ºåºè°ƒæ•´ +- 个人最终测算利率展示 +- 个人测算入å‚å¯¹é½ +- æ•æ„Ÿä¿¡æ¯å­˜å‚¨åŠ å¯†ã€æŽ¥å£è„±æ•ã€æ¨¡åž‹è°ƒç”¨å‰è§£å¯† + +2. 登录与账å·ç›¸å…³ +- 登录页默认账å·å¯†ç ç§»é™¤ +- 登录密ç ä¼ è¾“相关å‰åŽç«¯æ”¹é€  + +3. è¿è¡Œä¸Žéƒ¨ç½²ç›¸å…³ +- åŽç«¯é‡å¯è„šæœ¬ +- 生产一键部署脚本 +- 压缩包目录结构与进程识别规则调整 +- 多环境é…置文件补充 + +4. æ•°æ®åˆå§‹åŒ–与数æ®åº“脚本 +- 贷款定价相关表结构脚本 +- èœå•åˆå§‹åŒ–脚本 +- 生产åˆå§‹åŒ–æ•°æ®åº“脚本 + +5. 文档与测试资产 +- 业务设计文档ã€å®žæ–½è®¡åˆ’ã€å®žæ–½è®°å½• +- `test_api` 示例 +- å‰ç«¯é™æ€æµ‹è¯•脚本 + +### 3.3 当å‰åˆ†æ”¯è¿ç§»é£Žé™© + +如果直接套用目标分支文件,会出现以下风险: + +- 覆盖当å‰åˆ†æ”¯å·²ç»å®Œæˆçš„去 Redis 实现 +- 引入ä¸é€‚é… JDK8 çš„å®žçŽ°æ–¹å¼ +- 将目标分支中与当å‰åˆ†æ”¯å†²çªçš„é…置整文件覆盖 +- 把脚本和 SQL è¿è¿›æ¥ä½†æ²¡æœ‰åŒæ­¥å‰åŽç«¯è¡Œä¸ºï¼Œå¯¼è‡´è”调失败 + +因此,本次需è¦ä»¥â€œä¿ç•™å½“å‰åº•åº§ã€æŒ‰ä¸šåŠ¡è¡Œä¸ºé‡å»ºç›®æ ‡åŠŸèƒ½â€çš„æ–¹å¼æŽ¨è¿›ã€‚ + +## 4. 方案对比 + +### 方案一:按业务域åšè¡Œä¸ºå¯¹é½è¿ç§» + +åšæ³•: + +- 以当å‰åˆ†æ”¯ä¸ºåŸºçº¿ +- 按功能域拆分è¿ç§»ç›®æ ‡åˆ†æ”¯èƒ½åŠ› +- å¯¹äºŽå†²çªæ–‡ä»¶é‡‡ç”¨æ‰‹å·¥æ•´åˆ +- 最终以页é¢è¡¨çŽ°ã€æŽ¥å£è¡Œä¸ºã€è„šæœ¬æ•ˆæžœä¸Žç›®æ ‡åˆ†æ”¯ä¸€è‡´ä¸ºå‡† + +优点: + +- 最适åˆå½“å‰ä¸¤æ¡ç‹¬ç«‹åކå²çš„æƒ…况 +- å¯ä»¥ç¨³å®šä¿ä½å½“å‰åˆ†æ”¯ JDK8 与去 Redis 基线 +- 更容易分å—验è¯ä¸Žå›žå½’ + +缺点: + +- 需è¦é€æ¨¡å—核对行为 +- äººå·¥æ•´åˆæˆæœ¬é«˜äºŽç›´æŽ¥è¦†ç›– + +### 方案二:大é¢ç§¯è¦†ç›–目标分支文件åŽå›žè¡¥å½“å‰åŸºçº¿ + +åšæ³•: + +- å°½é‡æŠŠç›®æ ‡åˆ†æ”¯æ–‡ä»¶æ•´ä½“è¦†ç›–åˆ°å½“å‰åˆ†æ”¯ +- å†å›žå¤´ä¿®å¤ JDK8 和去 Redis å†²çª + +优点: + +- 剿œŸæ‹·è´é€Ÿåº¦å¿« + +缺点: + +- æžæ˜“冲掉当å‰åˆ†æ”¯å·²ç»éªŒè¯è¿‡çš„基础改造 +- åŽç½®ä¿®å¤æˆæœ¬é«˜ +- 很难确认哪些回归æ¥è‡ªè¦†ç›–行为 + +### 方案三:按æäº¤æ‰¹é‡è¿ç§» + +åšæ³•: + +- å°è¯•对目标分支æäº¤åš `cherry-pick` 或补ä¸è¿ç§» + +优点: + +- ç†è®ºä¸Šæ¥æºæ›´æ¸…æ™° + +缺点: + +- 两个分支无共åŒåŸºçº¿ï¼Œå†²çªä¼šéžå¸¸å¤š +- 目标分支æäº¤æ··æ‚,难以按æäº¤è¾¹ç•Œå®‰å…¨è¿ç§» + +## 5. 设计结论 + +采用方案一:按业务域åšè¡Œä¸ºå¯¹é½è¿ç§»ã€‚ + +核心原则如下: + +- ä¿ç•™å½“å‰åˆ†æ”¯çš„ JDK8 与去 Redis 基线 +- è¿ç§»ç›®æ ‡åˆ†æ”¯ä¸­çš„全部功能,但ä¸å¼ºæ±‚原样æ¬ä»£ç  +- 所有冲çªä½ç½®ä»¥â€œè¡Œä¸ºä¸€è‡´ + 当å‰åº•座ä¸å›žé€€â€ä¸ºåˆ¤å®šæ ‡å‡† +- è¿ç§»é¡ºåºå›ºå®šä¸ºâ€œåŸºçº¿å¯¹é½ -> åŽç«¯èƒ½åŠ› -> å‰ç«¯è¡Œä¸º -> éªŒè¯æ”¶å£â€ + +## 6. è¿ç§»è¾¹ç•Œè®¾è®¡ + +本次将目标分支改动拆分为 5 个è¿ç§»åŒ…: + +### 6.1 贷款定价主业务包 + +包å«ï¼š + +- æµç¨‹åˆ—表字段与刷新行为 +- 详情展示与å¡ç‰‡é¡ºåºè°ƒæ•´ +- 个人与ä¼ä¸šå»ºå•链路 +- 个人测算入å‚å¯¹é½ +- 最终测算利率展示 +- æ•æ„Ÿä¿¡æ¯åР坆ã€è„±æ•ã€æ¨¡åž‹è°ƒç”¨é“¾è·¯ +- 相关 SQL 脚本与测试文件 + +### 6.2 登录与账å·åŒ… + +包å«ï¼š + +- 登录页默认账å·å¯†ç ç§»é™¤ +- 登录密ç ä¼ è¾“相关å‰åŽç«¯é“¾è·¯ +- 控制器ã€APIã€å·¥å…·å‡½æ•°ä¸Žæµ‹è¯• + +### 6.3 部署与è¿è¡ŒåŒ… + +包å«ï¼š + +- é‡å¯è„šæœ¬ +- 生产一键部署脚本 +- 环境安装脚本 +- 目录结构与 jar 进程识别规则 +- 多环境é…置文件 + +### 6.4 åˆå§‹åŒ–与交付包 + +包å«ï¼š + +- 生产åˆå§‹åŒ–æ•°æ®åº“脚本 +- èœå•脚本 +- è¡¨ç»“æž„å˜æ›´è„šæœ¬ +- `deploy/` 目录与交付物é…ç½® + +### 6.5 文档与验è¯åŒ… + +包å«ï¼š + +- 本次è¿ç§»è®¾è®¡æ–‡æ¡£ +- å‰ç«¯å®žæ–½è®¡åˆ’ +- åŽç«¯å®žæ–½è®¡åˆ’ +- 本次è¿ç§»å®žæ–½è®°å½• +- å¿…è¦æµ‹è¯•说明 + +## 7. è¿ç§»é¡ºåºè®¾è®¡ + +### 7.1 ç¬¬ä¸€é˜¶æ®µï¼šåŸºçº¿å¯¹é½ + +目标: + +- é”定当å‰åˆ†æ”¯å¯ä¿ç•™çš„ JDK8 与去 Redis 底座 +- 识别目标分支需è¦è¡¥å…¥çš„ä¾èµ–ã€é…ç½®ã€è„šæœ¬ã€SQL 基础设施 + +输出: + +- è¿ç§»å·®å¼‚æ¸…å• +- 需整åˆçš„é…置与脚本列表 + +### 7.2 第二阶段:åŽç«¯èƒ½åŠ›è¿ç§» + +目标: + +- 先完æˆè´·æ¬¾å®šä»·ã€ç™»å½•安全ã€è„šæœ¬èƒ½åŠ›ã€åˆå§‹åŒ– SQL çš„åŽç«¯ä¸Žè„šæœ¬è¿ç§» + +原因: + +- å‰ç«¯é¡µé¢è¡Œä¸ºä¾èµ–åŽç«¯æŽ¥å£å¥‘约 +- 先稳定接å£ã€å­—段和脚本能力,åŽç»­å‰ç«¯æ‰èƒ½ä¸€æ¬¡æ€§å¯¹é½ + +### 7.3 第三阶段:å‰ç«¯è¡Œä¸ºè¿ç§» + +目标: + +- å®Œæˆ `ruoyi-ui` 页é¢ã€APIã€å·¥å…·å‡½æ•°ã€é¡µé¢æµ‹è¯•脚本è¿ç§» + +é‡ç‚¹é¡µé¢ï¼š + +- 贷款定价æµç¨‹åˆ—表 +- æµç¨‹è¯¦æƒ… +- 个人/ä¼ä¸šå»ºå•弹窗 +- 登录页 +- 缓存监控页 + +### 7.4 第四阶段:验è¯ä¸Žæ”¶å£ + +目标: + +- 对è¿ç§»åŽçš„当å‰åˆ†æ”¯åšæž„å»ºã€æµ‹è¯•与关键链路核验 +- 输出实施文档并确认最终行为一致 + +## 8. 冲çªå¤„ç†è®¾è®¡ + +### 8.1 Redis 冲çªå¤„ç† + +凡是目标分支使用 Redis 的旧实现,统一ä¿ç•™å½“å‰åˆ†æ”¯çš„内存缓存能力,åªè¿ç§»ä¸Žä¸šåŠ¡è¡Œä¸ºç›¸å…³çš„éƒ¨åˆ†ï¼Œä¸å›žé€€æŠ€æœ¯å®žçŽ°ã€‚ + +### 8.2 JDK8 冲çªå¤„ç† + +凡是目标分支中使用高版本 JDK 写法的地方,统一改为当å‰åˆ†æ”¯å¯è¿è¡Œçš„ JDK8 å†™æ³•ï¼Œä¿æŒè¡Œä¸ºä¸€è‡´å³å¯ã€‚ + +### 8.3 åŒæ–‡ä»¶å¤šæ¥æºå†²çªå¤„ç† + +如果åŒä¸€æ–‡ä»¶åŒæ—¶å­˜åœ¨ï¼š + +- 当å‰åˆ†æ”¯çš„去 Redis/JDK8 é€‚é… +- 目标分支的新业务功能 + +则采用手工整åˆï¼Œä¸åšæ•´æ–‡ä»¶è¦†ç›–ã€‚ + +### 8.4 脚本与环境冲çªå¤„ç† + +部署脚本与环境é…置以目标分支行为为目标,但需è¦é‡æ–°æ ¸å¯¹ï¼š + +- ç«¯å£ +- 目录 +- 进程识别规则 +- 当å‰ä»“库的å¯åŠ¨æ–¹å¼ + +### 8.5 æ–‡æ¡£è·¯å¾„å¤„ç† + +目标分支中存在 `docs/superpowers/...` 路径文档,但当å‰ä»“åº“è§„èŒƒè¦æ±‚将本次文档统一è½åˆ° `doc/`。因此文档åªè¿ç§»å†…å®¹ï¼Œä¸æ²¿ç”¨ç›®æ ‡åˆ†æ”¯æ–‡æ¡£ç›®å½•结构。 + +## 9. 详细è¿ç§»æ¸…å• + +### 9.1 贷款定价主业务 + +- 列表: + - 测算利率 + - 执行利率 + - æ›´æ–°æ—¶é—´ + - 返回列表自动刷新 +- 详情: + - ä¸ªäººè¯¦æƒ…å­—æ®µè¡¥é½ + - 详情å¡ç‰‡é¡ºåºè°ƒæ•´ + - 最终测算利率展示 +- 建å•: + - 个人测算入å‚å¯¹é½ + - 创建请求字段与模型调用字段统一 +- 安全: + - `custName` + - `idNum` + - å­˜å‚¨åŠ å¯†ã€æŸ¥è¯¢è„±æ•ã€æ¨¡åž‹è°ƒç”¨å‰è§£å¯† +- æ•°æ®ï¼š + - æµç¨‹è¡¨ã€è¾“出表字段脚本 + - èœå•脚本 + - 测试 API 文件 + +### 9.2 登录与账å·ç›¸å…³ + +- 登录页默认账å·å¯†ç ç§»é™¤ +- 密ç ä¼ è¾“工具函数 +- ç™»å½•ã€æ³¨å†Œã€ä¸ªäººä¸­å¿ƒã€ç”¨æˆ·ç®¡ç†ç›¸å…³å‰åŽç«¯æŽ¥å£å¯¹é½ +- å¯¹åº”æµ‹è¯•è¡¥é½ + +### 9.3 è¿è¡Œä¸Žéƒ¨ç½²ç›¸å…³ + +- `bin/restart_java_backend.sh` +- `bin/prod/*` +- `deploy/*` +- 环境é…置文件 +- ç›®å½•ç»“æž„ä¸ŽåŽ‹ç¼©åŒ…å¤„ç† +- å¯åœæµ‹è¯•脚本 + +### 9.4 åˆå§‹åŒ–与交付物 + +- åˆå§‹åŒ–æ•°æ®åº“脚本 +- 贷款定价èœå•脚本 +- 生产交付压缩包相关目录 +- 其他目标分支新增 SQL + +## 10. 验收å£å¾„ + +è¿ç§»å®Œæˆéœ€åŒæ—¶æ»¡è¶³ä»¥ä¸‹æ¡ä»¶ï¼š + +### 10.1 åŽç«¯ + +- å—影哿¨¡å—测试å¯é€šè¿‡ +- 新增关键测试覆盖关键行为 +- 当å‰åˆ†æ”¯èƒ½æ­£å¸¸å¯åЍåŽç«¯æœåŠ¡ + +### 10.2 å‰ç«¯ + +- `ruoyi-ui` 在 `nvm use` åŽå¯å®‰è£…ä¾èµ– +- `npm run build:prod` æˆåŠŸ +- ç™»å½•ã€æµç¨‹åˆ—表ã€è¯¦æƒ…ã€å»ºå•ã€ç¼“存监控等关键页é¢å¯æ­£å¸¸è®¿é—® + +### 10.3 业务行为 + +- 贷款定价链路行为与目标分支一致 +- 登录行为与目标分支一致 +- 部署脚本的执行逻辑与目标分支一致 +- 目标分支新增 SQL 在当å‰åˆ†æ”¯å…·å¤‡ç­‰ä»·èƒ½åŠ› + +### 10.4 文档 + +- 在 `doc/` ç›®å½•è¡¥é½æœ¬æ¬¡ï¼š + - 设计文档 + - åŽç«¯å®žæ–½è®¡åˆ’ + - å‰ç«¯å®žæ–½è®¡åˆ’ + - 实施记录 + +## 11. 测试与验è¯è®¾è®¡ + +### 11.1 åŽç«¯éªŒè¯ + +- å•元或控制器测试: + - 列表字段返回 + - è¯¦æƒ…è„±æ• + - 登录密ç ä¼ è¾“ + - ç¼“å­˜ç›‘æŽ§æŽ¥å£ +- é…置与脚本核对: + - 多环境é…ç½® + - ç«¯å£ + - 路径 + - 进程识别规则 +- å¯åŠ¨éªŒè¯ï¼š + - 至少确认è¿ç§»åŽå¯æ­£å¸¸å¯åЍ + +### 11.2 å‰ç«¯éªŒè¯ + +- 陿€æž„建验è¯ï¼š + - `nvm use` + - `npm install` + - `npm run build:prod` +- 页é¢é“¾è·¯éªŒè¯ï¼š + - 登录 + - æµç¨‹åˆ—表 + - æµç¨‹è¯¦æƒ… + - ä¸ªäººå»ºå• + - 缓存监控页 + +### 11.3 进程清ç†è¦æ±‚ + +若验è¯è¿‡ç¨‹ä¸­å¯åЍå‰åŽç«¯è¿›ç¨‹ï¼ŒéªŒè¯ç»“æŸåŽç»Ÿä¸€å…³é—­ï¼Œä¸ä¿ç•™æµ‹è¯•进程。 + +## 12. éžç›®æ ‡ + +- ä¸è¿½æ±‚ä¸Žç›®æ ‡åˆ†æ”¯é€æ–‡ä»¶å®Œå…¨ä¸€è‡´ +- ä¸è¿ç§»ç›®æ ‡åˆ†æ”¯ git åŽ†å² +- ä¸ä¸ºäº†å¤åˆ»ç›®æ ‡åˆ†æ”¯è€Œå›žé€€å½“å‰ JDK8 或去 Redis 基线 +- 䏿–°å¢žéœ€æ±‚之外的兼容或é™çº§é€»è¾‘ + +## 13. åŽç»­å®žæ–½æ–¹å¼ + +设计确认åŽï¼ŒåŽç»­å®žæ–½å°†æ‹†åˆ†ä¸ºä¸¤ä»½è®¡åˆ’: + +- åŽç«¯å®žæ–½è®¡åˆ’ +- å‰ç«¯å®žæ–½è®¡åˆ’ + +实施时采用“分包è¿ç§» + æ¯åŒ…自验è¯â€çš„æ–¹å¼æŽ¨è¿›ï¼Œé€å—完æˆå¹¶éªŒè¯ï¼Œä¸åšä¸€æ¬¡æ€§å¤§æ‰¹é‡è½åœ°åŽå†é›†ä¸­æŽ’错。