# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 项目概述 这是一个基于 **RuoYi-Vue-Plus 5.5.1** 框架的 **AR 智能巡检平台**,采用前后端分离架构: - **后端**: Spring Boot 3.5.7 + Java 17 + Maven 多模块 - **前端**: Vue 3.5.13 + TypeScript 5.8.3 + Vite 6.3.2 - **数据库**: MySQL / PostgreSQL / Oracle + MyBatis-Plus 3.5.14 - **缓存**: Redis + Redisson 3.51.0 (非 Lettuce) - **认证**: Sa-Token 1.44.0 (非 Spring Security) ### 开发环境要求 **后端环境:** - JDK 17 或 JDK 21 - Maven 3.6+ - MySQL 5.7+ / PostgreSQL / Oracle / SQL Server - Redis 5.0+ **前端环境:** - Node.js >= 18.18.0 - npm >= 8.9.0 ## 项目架构详解 ### 后端模块结构 ``` ar-inspection/ ├── ruoyi-admin/ # 主应用模块,Web服务入口 ├── ruoyi-common/ # 通用功能模块(插件化架构) │ ├── ruoyi-common-core/ # 核心工具包 │ ├── ruoyi-common-mybatis/ # MyBatis-Plus 集成 │ ├── ruoyi-common-security/ # Sa-Token 安全认证 │ ├── ruoyi-common-redis/ # Redis 缓存 │ ├── ruoyi-common-oss/ # 对象存储(S3/MinIO) │ ├── ruoyi-common-doc/ # SpringDoc API文档 │ ├── ruoyi-common-web/ # Web 配置 │ ├── ruoyi-common-json/ # Jackson 序列化 │ ├── ruoyi-common-log/ # 操作日志 │ ├── ruoyi-common-job/ # SnailJob 定时任务 │ ├── ruoyi-common-translation/# 数据翻译 │ ├── ruoyi-common-encrypt/ # 数据加解密 │ ├── ruoyi-common-sensitive/ # 数据脱敏 │ ├── ruoyi-common-idempotent/ # 幂等处理 │ ├── ruoyi-common-ratelimiter/# 限流 │ ├── ruoyi-common-social/ # 第三方登录 │ ├── ruoyi-common-sms/ # 短信服务 │ ├── ruoyi-common-mail/ # 邮件服务 │ └── ruoyi-common-websocket/ # WebSocket/SSE ├── ruoyi-modules/ # 业务功能模块 │ ├── ruoyi-system/ # 系统管理模块 │ ├── ruoyi-inspection/ # AR智能巡检模块 │ ├── ruoyi-generator/ # 代码生成器 │ ├── ruoyi-demo/ # 演示案例 │ ├── ruoyi-workflow/ # 工作流模块(Warm-Flow) │ └── ruoyi-job/ # 任务调度 └── ruoyi-extend/ # 扩展模块 ├── ruoyi-monitor-admin/ # Spring Boot Admin 监控 └── ruoyi-snailjob-server/ # SnailJob 调度中心 ``` ### 前端目录结构 ``` plus-ui/ ├── src/ │ ├── api/ # API 接口定义 │ │ ├── demo/ # 演示模块 │ │ ├── monitor/ # 监控模块 │ │ ├── system/ # 系统管理 │ │ ├── tool/ # 工具模块 │ │ └── workflow/ # 工作流 │ ├── assets/ # 静态资源 │ ├── components/ # 公共组件 │ ├── directive/ # 自定义指令 │ ├── hooks/ # 组合式函数 │ ├── layout/ # 布局组件 │ ├── lang/ # 国际化 │ ├── plugins/ # 插件封装 │ ├── router/ # 路由配置 │ ├── store/ # Pinia 状态管理 │ ├── types/ # TypeScript 类型定义 │ ├── utils/ # 工具函数 │ └── views/ # 页面视图 ├── vite/ # Vite 插件配置 └── vite.config.ts # Vite 配置文件 ``` ## 核心技术架构 ### 后端核心组件 1. **权限认证: Sa-Token + JWT** (非 Spring Security) - 支持登录校验、角色校验、权限校验、二级认证 - 支持复杂权限表达式 (AND/OR) - 轻量级,性能优于 Spring Security 2. **ORM 框架: MyBatis-Plus** - 雪花ID主键 (ASSIGN_ID) - 多租户插件 (默认启用) - 数据权限插件 - 分页插件 - 逻辑删除支持 3. **缓存方案: Redisson** (非 Lettuce) - 支持分布式锁 (Lock4j) - 支持 Spring Cache 注解 - 更强大的分布式特性 4. **多数据源: Dynamic-Datasource** - 支持异构数据库动态切换 - 支持多主多从、混合模式 5. **任务调度: SnailJob** (非 Quartz) - 分布式任务调度 - 支持分片、重试、DAG 任务流 - 可视化管理界面 6. **工作流引擎: Warm-Flow** - 国产工作流引擎 - 支持复杂审批流程 - 轻量级,易于扩展 7. **文件存储: MinIO / AWS S3** - 支持七牛、阿里云、腾讯云等 - 统一的 OSS 抽象接口 8. **API 文档: SpringDoc** (非 Springfox) - 基于 javadoc 注释自动生成 - 零注解入侵 - 符合 OpenAPI 3.0 规范 ### 前端核心特性 1. **UI 框架**: Element Plus 2.9.8 2. **状态管理**: Pinia 3.0.2 (非 Vuex) 3. **路由**: Vue Router 4.5.0 4. **HTTP 客户端**: Axios 1.8.4 5. **表格组件**: vxe-table 4.13.7 6. **接口加密**: RSA + AES 动态加密 7. **原子化CSS**: UnoCSS 66.5.2 ## 常用命令 ### 后端开发 ```bash # 构建项目(跳过测试) mvn clean install -DskipTests # 启动后端服务 cd ruoyi-admin && mvn spring-boot:run -Dspring-boot.run.profiles=dev # 运行测试 mvn test # 打包生产环境 mvn clean package -Pprod -DskipTests ``` ### 前端开发 ```bash # 安装依赖 cd plus-ui && npm install --registry=https://registry.npmmirror.com # 启动开发服务器 npm run dev # 构建生产环境 npm run build:prod # 代码检查和修复 npm run lint:eslint:fix # 代码格式化 npm run prettier ``` ### 自定义斜杠命令 - `/build` - 构建整个 Maven 项目并运行测试 - `/start-backend` - 启动后端 Spring Boot 应用 - `/start-frontend` - 启动前端 Vue3 开发服务器 - `/new-module` - 创建新的业务模块(Controller, Service, Mapper, Domain) - `/analyze` - 分析项目结构并生成架构文档 - `/lint` - 运行前端代码检查和格式化 ## 配置说明 ### 后端配置 **主配置文件**: `ruoyi-admin/src/main/resources/application.yml` **环境配置文件**: - `application-dev.yml` - 开发环境 - `application-prod.yml` - 生产环境 - `application-local.yml` - 本地环境 **多环境切换**: 通过 Maven Profile 切换 ```bash # 开发环境(默认) mvn spring-boot:run -Pdev # 本地环境 mvn spring-boot:run -Plocal # 生产环境 mvn spring-boot:run -Pprod ``` ### 重要配置项 1. **多租户**: `tenant.enable=true` (默认开启) 2. **接口加密**: `api-decrypt.enabled=true` 3. **数据加密**: `mybatis-encryptor.enable=false` (默认关闭) 4. **WebSocket**: 默认关闭,推荐使用 SSE 5. **验证码**: `captcha.enable=true` 6. **逻辑删除**: `mybatis-plus.enableLogicDelete=true` ### 前端配置 **环境变量**: `.env.development` / `.env.production` ```bash # 应用标题 VITE_APP_TITLE = AR智能巡检平台 # 后端接口地址 VITE_APP_BASE_API = /dev-api # 应用访问路径 VITE_APP_CONTEXT_PATH = / ``` **代理配置**: `vite.config.ts` 中配置后端代理,默认代理到 `http://localhost:8080` ## 数据库设计 ### 主键策略 - 使用 **雪花ID** (ASSIGN_ID),不使用数据库自增 - 分布式友好,全局唯一 - 64位长整型 ### 逻辑删除 - 默认启用逻辑删除 - 删除字段: `del_flag` (0=正常, 1=删除) - 查询时自动过滤已删除数据 ### 多租户设计 - 自动添加 `tenant_id` 字段 - 支持租户隔离 - 排除表在配置中指定 - 使用 `@TenantIgnore` 注解排除租户过滤 ### 数据权限 - 基于部门和角色的数据权限 - 支持本部门、本部门及以下、仅本人等权限范围 - 通过 MyBatis-Plus 插件实现 ## 开发规范 ### 后端代码分层 ``` controller/ # 控制器层,处理HTTP请求 service/ # 业务逻辑层接口 service/impl/ # 业务逻辑实现 mapper/ # 数据访问层 domain/ # 实体类 vo/ # 视图对象 bo/ # 业务对象 ``` ### 必须遵循的规范 1. **实体类**: 继承 `BaseEntity` 并使用 Lombok 注解 2. **Mapper 接口**: 继承 `BaseMapperPlus<实体类Mapper, 实体类, VO类>` 3. **Service 实现**: 使用 `@RequiredArgsConstructor` 注入依赖 4. **Controller 返回**: 统一返回 `R` 类型 5. **权限控制**: 使用 `@SaCheckPermission` 注解 6. **API 文档**: 添加 `@Tag`, `@Operation`, `@Parameters` 注解 ### 命名约定 - 实体类: `XxxEntity` 或直接 `Xxx` - Mapper: `XxxMapper` - Service: `IXxxService` (接口) / `XxxServiceImpl` (实现) - Controller: `XxxController` - VO: `XxxVo` - BO: `XxxBo` ### 数据库操作 - 优先使用 MyBatis-Plus 的内置方法 - 复杂查询在 Mapper XML 中编写 - 使用 `LambdaQueryWrapper` 构建动态查询 - 分页使用 `TableDataInfo` 和 `PageQuery` ### 前端开发规范 1. **组件开发**: - 使用 Vue 3 Composition API (`