diff --git a/novalon-manage-api/docs/plans/2026-03-13-module-refactoring.md b/novalon-manage-api/docs/plans/2026-03-13-module-refactoring.md
new file mode 100644
index 0000000..f0500af
--- /dev/null
+++ b/novalon-manage-api/docs/plans/2026-03-13-module-refactoring.md
@@ -0,0 +1,884 @@
+# 模块架构重构执行计划
+
+> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
+
+**Goal:** 重构项目模块架构,实现清晰的职责划分和依赖倒置
+
+**Architecture:**
+- app模块:只包含启动类、应用级配置和flyway脚本
+- sys模块:包含所有业务代码(domain、service、handler等)和业务级配置
+- gateway模块:包含路由和限流配置
+- db模块:依赖sys模块,实现repository接口
+- common模块:提供通用工具类和基础配置
+
+**Tech Stack:** Maven, Spring Boot, Spring WebFlux, Spring Security, R2DBC
+
+---
+
+## 重构目标
+
+### 模块职责划分
+
+| 模块 | 职责 | 内容 |
+|-------|--------|------|
+| manage-app | 应用启动和配置 | ManageApplication.java、application.yml、flyway脚本、应用级配置(WebFluxConfig、MultipartConfig、OpenApiConfig) |
+| manage-sys | 业务逻辑 | domain、repository接口、service接口和实现、handler、业务级配置(SecurityConfig、WebSocketConfig) |
+| manage-gateway | 网关路由和限流 | GatewayApplication.java、路由配置(SystemRouter)、限流配置(RateLimitConfig) |
+| manage-db | 数据访问实现 | entity、dao、repository实现、converter |
+| manage-common | 通用工具和配置 | 工具类、通用DTO、基础配置、全局异常处理(GlobalExceptionHandler) |
+
+### 依赖关系
+
+```
+manage-gateway → 无依赖(独立模块)
+manage-app → manage-sys + manage-db
+manage-sys → manage-common
+manage-db → manage-sys
+manage-common → 无依赖
+```
+
+---
+
+## Task 1: 将RateLimitConfig从app模块移到gateway模块
+
+**Files:**
+- Create: `manage-gateway/src/main/java/cn/novalon/manage/gateway/config/RateLimitConfig.java`
+- Delete: `manage-app/src/main/java/cn/novalon/manage/app/config/RateLimitConfig.java`
+
+**Step 1: 创建gateway模块的config目录**
+
+```bash
+mkdir -p manage-gateway/src/main/java/cn/novalon/manage/gateway/config
+```
+
+**Step 2: 移动RateLimitConfig.java**
+
+```bash
+mv manage-app/src/main/java/cn/novalon/manage/app/config/RateLimitConfig.java \
+ manage-gateway/src/main/java/cn/novalon/manage/gateway/config/
+```
+
+**Step 3: 更新RateLimitConfig.java的包声明**
+
+```java
+// 将
+package cn.novalon.manage.sys.config;
+// 改为
+package cn.novalon.manage.gateway.config;
+```
+
+**Step 4: 更新gateway模块的pom.xml,添加Resilience4j依赖**
+
+```xml
+
+ io.github.resilience4j
+ resilience4j-spring-boot3
+ 2.2.0
+
+
+ io.github.resilience4j
+ resilience4j-reactor
+ 2.2.0
+
+```
+
+**Step 5: 更新gateway模块的application.yml,添加限流配置**
+
+```yaml
+rate:
+ limit:
+ limit-for-period: 100
+ limit-refresh-period: 1s
+ timeout-duration: 0
+```
+
+**Step 6: 提交更改**
+
+```bash
+git add manage-gateway/src/main/java/cn/novalon/manage/gateway/config/RateLimitConfig.java
+git add manage-gateway/pom.xml
+git add manage-gateway/src/main/resources/application.yml
+git rm manage-app/src/main/java/cn/novalon/manage/app/config/RateLimitConfig.java
+git commit -m "refactor: move RateLimitConfig to gateway module"
+```
+
+---
+
+## Task 2: 将SystemRouter从app模块移到gateway模块
+
+**Files:**
+- Create: `manage-gateway/src/main/java/cn/novalon/manage/gateway/config/SystemRouter.java`
+- Delete: `manage-app/src/main/java/cn/novalon/manage/app/config/SystemRouter.java`
+
+**Step 1: 移动SystemRouter.java**
+
+```bash
+mv manage-app/src/main/java/cn/novalon/manage/app/config/SystemRouter.java \
+ manage-gateway/src/main/java/cn/novalon/manage/gateway/config/
+```
+
+**Step 2: 更新SystemRouter.java的包声明**
+
+```java
+// 将
+package cn.novalon.manage.sys.config;
+// 改为
+package cn.novalon.manage.gateway.config;
+```
+
+**Step 3: 更新GatewayApplication.java,集成SystemRouter**
+
+```java
+package cn.novalon.manage.gateway;
+
+import cn.novalon.manage.gateway.config.SystemRouter;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.gateway.route.RouteLocator;
+import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class GatewayApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(GatewayApplication.class, args);
+ }
+
+ @Bean
+ public RouteLocator customRouteLocator(RouteLocatorBuilder builder, SystemRouter systemRouter) {
+ return systemRouter.buildRoutes(builder);
+ }
+}
+```
+
+**Step 4: 更新SystemRouter.java,使用RouteLocatorBuilder**
+
+```java
+package cn.novalon.manage.gateway.config;
+
+import org.springframework.cloud.gateway.route.RouteLocator;
+import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
+import org.springframework.stereotype.Component;
+
+/**
+ * 系统路由配置
+ *
+ * 文件定义:配置Spring Cloud Gateway的路由规则
+ * 涉及业务:API路由、负载均衡、服务发现
+ * 算法:使用Spring Cloud Gateway的路由匹配和转发
+ *
+ * @author 张翔
+ * @date 2026-03-13
+ */
+@Component
+public class SystemRouter {
+
+ public RouteLocator buildRoutes(RouteLocatorBuilder builder) {
+ return builder.routes()
+ .route("manage-app", r -> r
+ .path("/api/**")
+ .uri("http://manage-app:8081"))
+ .build();
+ }
+}
+```
+
+**Step 5: 提交更改**
+
+```bash
+git add manage-gateway/src/main/java/cn/novalon/manage/gateway/config/SystemRouter.java
+git add manage-gateway/src/main/java/cn/novalon/manage/gateway/GatewayApplication.java
+git rm manage-app/src/main/java/cn/novalon/manage/app/config/SystemRouter.java
+git commit -m "refactor: move SystemRouter to gateway module"
+```
+
+---
+
+## Task 3: 将SecurityConfig从app模块移到sys模块
+
+**Files:**
+- Create: `manage-sys/src/main/java/cn/novalon/manage/sys/config/SecurityConfig.java`
+- Delete: `manage-app/src/main/java/cn/novalon/manage/app/config/SecurityConfig.java`
+
+**Step 1: 创建sys模块的config目录**
+
+```bash
+mkdir -p manage-sys/src/main/java/cn/novalon/manage/sys/config
+```
+
+**Step 2: 移动SecurityConfig.java**
+
+```bash
+mv manage-app/src/main/java/cn/novalon/manage/app/config/SecurityConfig.java \
+ manage-sys/src/main/java/cn/novalon/manage/sys/config/
+```
+
+**Step 3: 更新SecurityConfig.java的包声明**
+
+```java
+// 将
+package cn.novalon.manage.sys.config;
+// 改为
+package cn.novalon.manage.sys.config;
+```
+
+**Step 4: 提交更改**
+
+```bash
+git add manage-sys/src/main/java/cn/novalon/manage/sys/config/SecurityConfig.java
+git rm manage-app/src/main/java/cn/novalon/manage/app/config/SecurityConfig.java
+git commit -m "refactor: move SecurityConfig to sys module"
+```
+
+---
+
+## Task 4: 将WebSocketConfig从app模块移到sys模块
+
+**Files:**
+- Create: `manage-sys/src/main/java/cn/novalon/manage/sys/config/WebSocketConfig.java`
+- Delete: `manage-app/src/main/java/cn/novalon/manage/app/config/WebSocketConfig.java`
+
+**Step 1: 移动WebSocketConfig.java**
+
+```bash
+mv manage-app/src/main/java/cn/novalon/manage/app/config/WebSocketConfig.java \
+ manage-sys/src/main/java/cn/novalon/manage/sys/config/
+```
+
+**Step 2: 更新WebSocketConfig.java的包声明**
+
+```java
+// 将
+package cn.novalon.manage.sys.config;
+// 改为
+package cn.novalon.manage.sys.config;
+```
+
+**Step 3: 提交更改**
+
+```bash
+git add manage-sys/src/main/java/cn/novalon/manage/sys/config/WebSocketConfig.java
+git rm manage-app/src/main/java/cn/novalon/manage/app/config/WebSocketConfig.java
+git commit -m "refactor: move WebSocketConfig to sys module"
+```
+
+---
+
+## Task 5: 将GlobalExceptionHandler移到common模块并重构
+
+**Files:**
+- Create: `manage-common/src/main/java/cn/novalon/manage/common/handler/GlobalExceptionHandler.java`
+- Create: `manage-common/src/main/java/cn/novalon/manage/common/handler/ExceptionLogService.java`
+- Delete: `manage-app/src/main/java/cn/novalon/manage/app/handler/GlobalExceptionHandler.java`
+
+**Step 1: 创建common模块的handler目录**
+
+```bash
+mkdir -p manage-common/src/main/java/cn/novalon/manage/common/handler
+```
+
+**Step 2: 创建异常日志服务接口**
+
+```java
+package cn.novalon.manage.common.handler;
+
+import reactor.core.publisher.Mono;
+
+/**
+ * 异常日志服务接口
+ *
+ * 文件定义:定义异常日志记录的抽象接口
+ * 涉及业务:异常日志记录、错误追踪
+ * 算法:使用响应式编程实现异步日志记录
+ *
+ * @author 张翔
+ * @date 2026-03-13
+ */
+public interface ExceptionLogService {
+ Mono logException(String title, String exceptionName, String exceptionMsg,
+ String methodName, String ip, String stackTrace);
+}
+```
+
+**Step 3: 重构GlobalExceptionHandler,移除对sys模块的依赖**
+
+```java
+package cn.novalon.manage.common.handler;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.server.ResponseStatusException;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.ServerWebInputException;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 全局异常处理器
+ *
+ * 文件定义:统一处理系统中抛出的各种异常,返回标准化的错误响应
+ * 涉及业务:异常捕获、错误日志记录、错误响应格式化
+ * 算法:使用@RestControllerAdvice注解实现全局异常拦截
+ *
+ * @author 张翔
+ * @date 2026-03-13
+ */
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+
+ private final ExceptionLogService exceptionLogService;
+
+ public GlobalExceptionHandler(ExceptionLogService exceptionLogService) {
+ this.exceptionLogService = exceptionLogService;
+ }
+
+ @ExceptionHandler(RuntimeException.class)
+ public ResponseEntity