Files
loan-pricing/doc/2026-04-15-全量迁移892-without-redis后端实施计划.md

22 KiB
Raw Blame History

全量迁移 892-without-redis 后端实施计划

For agentic workers: REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 在保留当前分支 JDK8 与去 Redis 基线的前提下,把 origin/892-without-redis 的后端业务、脚本、SQL、配置能力完整迁移到当前分支并保证行为对齐。

Architecture: 以后端主工程为基线,新增 ruoyi-loan-pricing 业务模块并接入 ruoyi-admin、根 pom.xml 与 SQL/脚本目录。所有与 Redis 或高版本 JDK 冲突的实现只迁业务行为,不回退当前分支的技术底座;同文件冲突采用手工整合,不做整文件覆盖。

Tech Stack: Java 8, Spring Boot 2.5.x, Maven multi-module, MyBatis/XML Mapper, JUnit, Shell scripts, SQL


仓库约束补充:本仓库 AGENTS.md 明确要求不开启 subagent因此执行本计划时应在当前会话内分批完成不走子代理评审流。

文件结构映射

根工程与模块接入

  • Modify: pom.xml
  • Modify: ruoyi-admin/pom.xml
  • Create: ruoyi-loan-pricing/pom.xml

贷款定价后端模块

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/controller/LoanPricingWorkflowController.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/controller/LoanRatePricingMockController.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/CorporateLoanPricingCreateDTO.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/PersonalLoanPricingCreateDTO.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/ModelInvokeDTO.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/LoanPricingWorkflow.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFields.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelCorpOutputFields.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowListVO.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowVO.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/LoanPricingWorkflowMapper.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/ModelRetailOutputFieldsMapper.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/ModelCorpOutputFieldsMapper.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/ILoanPricingWorkflowService.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/LoanPricingModelService.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/ModelService.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/SensitiveFieldCryptoService.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/LoanPricingSensitiveDisplayService.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImpl.java
  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/util/LoanPricingConverter.java
  • Create: ruoyi-loan-pricing/src/main/resources/mapper/loanpricing/LoanPricingWorkflowMapper.xml
  • Create: ruoyi-loan-pricing/src/main/resources/data/corp_output.json
  • Create: ruoyi-loan-pricing/src/main/resources/data/retail_output.json

登录密码传输与系统接口调整

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  • Modify: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
  • Modify: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java

缓存、配置、部署与 SQL

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
  • Modify: ruoyi-admin/src/main/resources/application.yml
  • Create: ruoyi-admin/src/main/resources/application-pro.yml
  • Create: ruoyi-admin/src/main/resources/application-uat.yml
  • Modify: bin/restart_java_backend.sh
  • Create: bin/restart_java_backend_test.sh
  • Create: bin/prod/deploy_from_package.sh
  • Create: bin/prod/deploy_from_package_test.sh
  • Create: bin/prod/deploy_release.sh
  • Create: bin/prod/install_env.sh
  • Create: bin/prod/restart_java.sh
  • Create: bin/prod/restart_java_test.sh
  • Create: deploy/nginx.conf
  • Create: deploy/2026-03-31-local-nginx-java-install-manual.md
  • Create: sql/loan_pricing_schema_20260328.sql
  • Create: sql/loan_pricing_required_data_20260328.sql
  • Create: sql/loan_pricing_prod_init_20260331.sql
  • Create: sql/loan_pricing_menu.sql
  • Create: sql/loan_pricing_workflow.sql
  • Create: sql/model_retail.sql
  • Create: sql/model_corp.sql

后端测试

  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFieldsTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowListVOTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/mapper/LoanPricingWorkflowMapperXmlTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/LoanPricingModelServicePersonalParamsTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/LoanPricingModelServiceTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/LoanPricingSensitiveDisplayServiceTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/SensitiveFieldCryptoServiceTest.java
  • Create: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImplTest.java
  • Create: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysLoginControllerPasswordTransferTest.java
  • Create: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysRegisterControllerPasswordTransferTest.java
  • Create: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysProfileControllerPasswordTransferTest.java
  • Create: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysUserControllerPasswordTransferTest.java
  • Modify: ruoyi-admin/src/test/java/com/ruoyi/web/controller/monitor/CacheControllerTest.java

后端实施记录

  • Create: doc/2026-04-15-全量迁移892-without-redis后端实施记录.md

Task 1: 接入 ruoyi-loan-pricing 模块到底座工程

Files:

  • Modify: pom.xml

  • Modify: ruoyi-admin/pom.xml

  • Create: ruoyi-loan-pricing/pom.xml

  • Step 1: 写出模块接入失败测试条件

在计划执行时,先确认当前工程不存在贷款定价模块:

test -d ruoyi-loan-pricing || echo "ruoyi-loan-pricing missing"

Expected: 输出 ruoyi-loan-pricing missing

  • Step 2: 建立最小模块骨架

创建:

ruoyi-loan-pricing/
ruoyi-loan-pricing/pom.xml
ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/
ruoyi-loan-pricing/src/main/resources/
ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/

ruoyi-loan-pricing/pom.xml 最小内容应包含:

<artifactId>ruoyi-loan-pricing</artifactId>
<dependencies>
    <dependency>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-common</artifactId>
    </dependency>
    <dependency>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-framework</artifactId>
    </dependency>
    <dependency>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-system</artifactId>
    </dependency>
</dependencies>
  • Step 3: 把模块接入聚合与启动工程

修改 pom.xml

<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-loan-pricing</artifactId>
    <version>${ruoyi.version}</version>
</dependency>

以及:

<module>ruoyi-loan-pricing</module>

修改 ruoyi-admin/pom.xml 增加:

<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-loan-pricing</artifactId>
</dependency>
  • Step 4: 运行 Maven 校验模块被识别

Run:

mvn -pl ruoyi-loan-pricing -am -DskipTests package

Expected: Maven 能识别 ruoyi-loan-pricing 模块;若后续类未补齐可先因编译缺类失败,但不能再是“模块不存在”。

  • Step 5: 提交
git add pom.xml ruoyi-admin/pom.xml ruoyi-loan-pricing
git commit -m "接入贷款定价后端模块骨架"

Task 2: 落地贷款定价后端主链与 Mapper

Files:

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/controller/LoanPricingWorkflowController.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/controller/LoanRatePricingMockController.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/CorporateLoanPricingCreateDTO.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/PersonalLoanPricingCreateDTO.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/ModelInvokeDTO.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/LoanPricingWorkflow.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFields.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelCorpOutputFields.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowListVO.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/vo/LoanPricingWorkflowVO.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/LoanPricingWorkflowMapper.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/ModelRetailOutputFieldsMapper.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/mapper/ModelCorpOutputFieldsMapper.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/ILoanPricingWorkflowService.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/LoanPricingModelService.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/ModelService.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImpl.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/util/LoanPricingConverter.java

  • Create: ruoyi-loan-pricing/src/main/resources/mapper/loanpricing/LoanPricingWorkflowMapper.xml

  • Test: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/mapper/LoanPricingWorkflowMapperXmlTest.java

  • Test: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImplTest.java

  • Step 1: 先写列表/详情契约失败测试

LoanPricingWorkflowMapperXmlTest 中先写断言,覆盖:

assertThat(xml).contains("calculate_rate");
assertThat(xml).contains("execute_rate");
assertThat(xml).contains("update_time");
assertThat(xml).contains("final_calculate_rate");

以及在 LoanPricingWorkflowServiceImplTest 中先写:

assertEquals("个人", workflow.getCustType());
assertEquals("1", dto.getRunType());
  • Step 2: 创建 DTO / Entity / VO / Mapper 骨架

最小要保证这些字段到位:

private String serialNum;
private String custIsn;
private String custName;
private String idNum;
private String custType;
private BigDecimal executeRate;
private BigDecimal calculateRate;
private BigDecimal finalCalculateRate;
private Date updateTime;
  • Step 3: 实现列表 SQL 与详情装配

LoanPricingWorkflowMapper.xml 中明确写联表,不做前端拼装:

LEFT JOIN model_retail_output_fields mr ON lpw.model_output_id = mr.id
LEFT JOIN model_corp_output_fields mc ON lpw.model_output_id = mc.id

个人列表测算利率按目标分支行为取:

CASE WHEN lpw.cust_type = '个人' THEN mr.final_calculate_rate
     WHEN lpw.cust_type = '企业' THEN mc.calculate_rate
END AS calculateRate

并返回:

lpw.execute_rate AS executeRate,
lpw.update_time AS updateTime
  • Step 4: 实现建单与模型调用链路

PersonalLoanPricingCreateDTO 至少补齐:

private String loanPurpose;
private Integer loanTerm;
private String loanLoop;
private String collThirdParty;

ModelInvokeDTO 至少补齐:

private String loanPurpose;
private Integer loanTerm;
private String loanLoop;

LoanPricingConverterLoanPricingModelService 保证个人入参完整透传。

  • Step 5: 跑定向测试

Run:

mvn -pl ruoyi-loan-pricing -Dtest=LoanPricingWorkflowMapperXmlTest,LoanPricingWorkflowServiceImplTest,LoanPricingModelServicePersonalParamsTest test

Expected: 以上测试通过。

  • Step 6: 提交
git add ruoyi-loan-pricing
git commit -m "迁移贷款定价后端主链"

Task 3: 落地敏感字段加密脱敏与个人展示字段

Files:

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/SensitiveFieldCryptoService.java

  • Create: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/LoanPricingSensitiveDisplayService.java

  • Modify: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/impl/LoanPricingWorkflowServiceImpl.java

  • Modify: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/service/LoanPricingModelService.java

  • Modify: ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFields.java

  • Test: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/SensitiveFieldCryptoServiceTest.java

  • Test: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/LoanPricingSensitiveDisplayServiceTest.java

  • Test: ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFieldsTest.java

  • Step 1: 先写加解密和脱敏失败测试

assertThat(crypto.encrypt("张三")).isNotEqualTo("张三");
assertThat(crypto.decrypt(cipher)).isEqualTo("张三");
assertThat(display.maskIdNum("330102199001011234")).contains("****");

再补个人输出字段断言:

assertThat(fieldsClassText).contains("loanRateHistory");
assertThat(fieldsClassText).contains("minRateProduct");
assertThat(fieldsClassText).contains("smoothRange");
assertThat(fieldsClassText).contains("finalCalculateRate");
assertThat(fieldsClassText).contains("referenceRate");
  • Step 2: 实现敏感字段服务

SensitiveFieldCryptoService 只做:

String encrypt(String plainText)
String decrypt(String cipherText)

LoanPricingSensitiveDisplayService 只做:

String maskName(String name)
String maskIdNum(String idNum)
void maskWorkflow(LoanPricingWorkflowVO vo)
  • Step 3: 接入流程创建、详情、列表、模型调用

LoanPricingWorkflowServiceImpl 中:

workflow.setCustName(cryptoService.encrypt(workflow.getCustName()));
workflow.setIdNum(cryptoService.encrypt(workflow.getIdNum()));

在返回前:

sensitiveDisplayService.maskWorkflow(vo);

LoanPricingModelService 调模型前:

invokeDTO.setCustName(cryptoService.decrypt(workflow.getCustName()));
invokeDTO.setIdNum(cryptoService.decrypt(workflow.getIdNum()));
  • Step 4: 补实体字段与详情组装

ModelRetailOutputFields 增加:

private BigDecimal loanRateHistory;
private BigDecimal minRateProduct;
private BigDecimal smoothRange;
private BigDecimal finalCalculateRate;
private BigDecimal referenceRate;
  • Step 5: 跑定向测试

Run:

mvn -pl ruoyi-loan-pricing -Dtest=SensitiveFieldCryptoServiceTest,LoanPricingSensitiveDisplayServiceTest,ModelRetailOutputFieldsTest,LoanPricingModelServiceTest test

Expected: 以上测试通过。

  • Step 6: 提交
git add ruoyi-loan-pricing
git commit -m "补齐贷款定价敏感信息与详情字段"

Task 4: 迁移登录密码传输与缓存监控后端行为

Files:

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

  • Modify: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java

  • Modify: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java

  • Modify: ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java

  • Test: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysLoginControllerPasswordTransferTest.java

  • Test: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysRegisterControllerPasswordTransferTest.java

  • Test: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysProfileControllerPasswordTransferTest.java

  • Test: ruoyi-admin/src/test/java/com/ruoyi/web/controller/system/SysUserControllerPasswordTransferTest.java

  • Test: ruoyi-admin/src/test/java/com/ruoyi/web/controller/monitor/CacheControllerTest.java

  • Step 1: 先写密码透传失败测试

每个测试至少断言控制器能接收透传后的密码字段:

assertEquals("plain-password", body.getPassword());

或断言 controller 调 service 前已拿到预期值。

  • Step 2: 调整请求体与控制器

LoginBody / RegisterBody 保证可承接前端密码传输字段,控制器保持接口路径不变,只修正入参读取与传递行为。

  • Step 3: 校准缓存监控行为

按当前分支去 Redis 底座整合目标分支缓存监控效果,不回退到 Redis 实现。CacheController 只输出内存缓存统计所需字段。

  • Step 4: 跑 admin 定向测试

Run:

mvn -pl ruoyi-admin -am -Dtest=SysLoginControllerPasswordTransferTest,SysRegisterControllerPasswordTransferTest,SysProfileControllerPasswordTransferTest,SysUserControllerPasswordTransferTest,CacheControllerTest test

Expected: 以上测试通过。

  • Step 5: 提交
git add ruoyi-admin ruoyi-common
git commit -m "迁移登录密码传输与缓存监控后端逻辑"

Task 5: 迁移环境配置、脚本和 SQL 资产

Files:

  • Modify: ruoyi-admin/src/main/resources/application.yml

  • Create: ruoyi-admin/src/main/resources/application-pro.yml

  • Create: ruoyi-admin/src/main/resources/application-uat.yml

  • Modify: bin/restart_java_backend.sh

  • Create: bin/restart_java_backend_test.sh

  • Create: bin/prod/deploy_from_package.sh

  • Create: bin/prod/deploy_from_package_test.sh

  • Create: bin/prod/deploy_release.sh

  • Create: bin/prod/install_env.sh

  • Create: bin/prod/restart_java.sh

  • Create: bin/prod/restart_java_test.sh

  • Create: deploy/nginx.conf

  • Create: deploy/2026-03-31-local-nginx-java-install-manual.md

  • Create: sql/loan_pricing_schema_20260328.sql

  • Create: sql/loan_pricing_required_data_20260328.sql

  • Create: sql/loan_pricing_prod_init_20260331.sql

  • Create: sql/loan_pricing_menu.sql

  • Create: sql/loan_pricing_workflow.sql

  • Create: sql/model_retail.sql

  • Create: sql/model_corp.sql

  • Create: test_api/test_personal_create.http

  • Create: test_api/test_personal_create.sh

  • Create: test_api/test_corporate_create.http

  • Create: test_api/test_corporate_create.sh

  • Step 1: 先校验当前文件缺失

Run:

ls ruoyi-admin/src/main/resources/application-pro.yml bin/prod sql/loan_pricing_schema_20260328.sql test_api 2>/dev/null || true

Expected: 当前分支大部分路径不存在。

  • Step 2: 迁入配置与脚本骨架

先把文件原样引入,再逐个检查:

  • 端口
  • profile 名称
  • jar 名称
  • 目录路径
  • ps -ef / 端口识别逻辑

禁止直接照搬掉当前分支去 Redis 配置。

  • Step 3: 迁入 SQL 与 API 示例

SQL 必须覆盖:

  • 贷款定价表结构
  • 初始化基础数据
  • 菜单
  • 模型输出表字段补齐

测试脚本只作为联调辅助,不允许替代单元测试。

  • Step 4: 跑脚本与 SQL 静态自检

Run:

bash -n bin/restart_java_backend.sh
bash -n bin/prod/deploy_from_package.sh
bash -n bin/prod/deploy_release.sh

Expected: Shell 语法检查通过。

  • Step 5: 提交
git add ruoyi-admin/src/main/resources bin deploy sql test_api
git commit -m "迁移部署脚本与贷款定价SQL资产"

Task 6: 后端总验收与实施记录

Files:

  • Modify: doc/2026-04-15-全量迁移892-without-redis后端实施计划.md

  • Create: doc/2026-04-15-全量迁移892-without-redis后端实施记录.md

  • Step 1: 运行后端回归测试

Run:

mvn test

Expected: 全仓后端测试通过;若存在外部依赖导致个别测试不可跑,必须记录具体模块与原因。

  • Step 2: 运行后端启动验证

Run:

mvn -pl ruoyi-admin -am spring-boot:run

Expected: 服务启动成功,贷款定价相关 Bean 可加载;验证后主动停止进程。

  • Step 3: 补实施记录

doc/2026-04-15-全量迁移892-without-redis后端实施记录.md 至少记录:

  • 实际迁入模块

  • 与目标分支不做原样复制的整合点

  • 测试命令与结果

  • 启动验证结果

  • Step 4: 提交

git add doc/2026-04-15-全量迁移892-without-redis后端实施计划.md doc/2026-04-15-全量迁移892-without-redis后端实施记录.md
git commit -m "补充全量迁移后端实施记录"