tasks.md 5.6 KB

任务拆分 — 分布式幂等防重组件(美团GTIS方案实现)

拆分顺序:基础结构 → 核心注解 → 生成器 → 存储服务 → 切面/拦截器 → 配置 → 测试 每个任务 = 可独立提交的原子变更(3-5 个文件) 每个任务必须精确到文件路径和函数签名

前置条件

  • 需求Spec已确认
  • [x] 所有待澄清问题已解决

    Task 1: 创建幂等组件模块结构与基础依赖

  • 目标: 创建forge-starter-idempotent启动器模块,定义基础依赖和自动配置结构

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/pom.xml — 新增,依赖Spring Boot、Redis、AOP等
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports — 新增,自动配置注册
    • forge/forge-framework/forge-starter-parent/pom.xml — 修改,添加forge-starter-idempotent模块

      Task 2: 定义@Idempotent注解与配置类

  • 目标: 定义幂等注解和自动配置属性类

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/annotation/Idempotent.java — 新增,注解定义
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/properties/IdempotentProperties.java — 新增,配置属性类
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/constant/IdempotentConstant.java — 新增,常量定义
  • 关键签名:

    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Idempotent {
      // 幂等键前缀
      String prefix() default "";
      // 过期时间(秒),默认10分钟
      int expire() default 600;
      // SpEL表达式,自定义幂等键
      String key() default "";
      // 校验失败提示信息
      String message() default "请勿重复提交";
      // 是否删除幂等键(执行成功后删除,允许后续重复执行)
      boolean deleteKeyAfterSuccess() default false;
    }
    

    Task 3: 实现幂等键生成器

  • 目标: 实现默认幂等键生成策略和SpEL表达式支持

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/generator/IdempotentKeyGenerator.java — 新增,生成器接口
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/generator/DefaultIdempotentKeyGenerator.java — 新增,默认生成实现
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/util/SpelUtil.java — 新增,SpEL解析工具

      Task 4: 实现Redis幂等存储服务

  • 目标: 实现基于Redis的幂等存储服务,支持原子操作、降级逻辑

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/service/IdempotentStorageService.java — 新增,存储服务接口
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/service/RedisIdempotentStorageService.java — 新增,Redis实现
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/exception/IdempotentException.java — 新增,自定义异常

      Task 5: 实现AOP切面与Web拦截器

  • 目标: 实现幂等校验的AOP切面和Web请求拦截器

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/aop/IdempotentAspect.java — 新增,AOP切面实现
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/interceptor/IdempotentInterceptor.java — 新增,Web拦截器(可选)
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/config/IdempotentAutoConfiguration.java — 新增,自动配置类

      Task 6: 实现全局开关与异常处理

  • 目标: 实现全局配置开关和统一异常处理

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/handler/IdempotentExceptionHandler.java — 新增,全局异常处理
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/main/java/com/mdframe/forge/starter/idempotent/config/IdempotentWebConfig.java — 新增,Web配置类(注册拦截器)

      Task 7: 编写单元测试与集成测试

  • 目标: 完成核心逻辑测试,覆盖所有场景

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/test/java/com/mdframe/forge/starter/idempotent/IdempotentTest.java — 新增,单元测试
    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/src/test/resources/application-test.yml — 新增,测试配置

      Task 8: 编写使用文档与示例

  • 目标: 提供使用说明和示例代码

  • 涉及文件:

    • forge/forge-framework/forge-starter-parent/forge-starter-idempotent/README.md — 新增,使用文档
    • forge-docs/backend/modules/idempotent.md — 新增,官方文档