From 3d77f7a3dccc1ee953a7136172e07919a2bbe725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E7=A7=8B=E6=97=AD?= Date: Sat, 31 Jan 2026 02:00:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20CLAUDE.md=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E4=B8=BA=20Claude=20Code=20=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E9=A1=B9=E7=9B=AE=E5=BC=80=E5=8F=91=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.5 --- CLAUDE.md | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..e75f17fe --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,150 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +RuoYi-Vue v3.9.1 is a rapid development platform with Spring Boot + Vue.js separated architecture. It provides a complete admin dashboard system with JWT authentication, role-based access control, code generation, and 18 built-in functional modules. + +**Technology Stack:** +- Backend: Spring Boot 2.5.15, Spring Security 5.7.14, MyBatis, Redis, JWT +- Frontend: Vue 2.6.12, Element UI 2.15.14, Vuex 3.6.0, Vue Router 3.4.9 +- Database: MySQL with Druid connection pool +- Build: Maven (backend), Vue CLI 4.4.6 (frontend) + +## Project Structure + +``` +RuoYi-Vue/ +├── pom.xml # Root Maven configuration +├── ruoyi-admin/ # Web service entry point (Controllers, Config) +├── ruoyi-framework/ # Core framework (Security, AOP, Interceptors) +├── ruoyi-system/ # System business logic (Services, Mappers) +├── ruoyi-common/ # Common utilities, constants, exceptions +├── ruoyi-quartz/ # Scheduled tasks module +├── ruoyi-generator/ # Code generation module +└── ruoyi-ui/ # Frontend Vue.js application + ├── package.json + ├── vue.config.js # Webpack config with proxy to backend + ├── .env.development # Dev environment (VUE_APP_BASE_API=/dev-api) + ├── .env.production # Prod environment (VUE_APP_BASE_API=/prod-api) + └── src/ + ├── api/ # API service layer + ├── components/ # Reusable components + ├── directive/ # Custom directives (permission, etc.) + ├── layout/ # Layout components + ├── plugins/ # Plugins (cache, modal, download) + ├── router/ # Vue Router configuration + ├── store/ # Vuex store modules + ├── utils/ # Utility functions + └── views/ # Page views (login, system, monitor, tool) +``` + +## Development Commands + +### Backend (Maven) + +```bash +# Package application (skips tests) +mvn clean package -Dmaven.test.skip=true + +# Run application from JAR +cd ruoyi-admin/target +java -jar ruoyi-admin.jar + +# Or use provided scripts from project root +./ry.sh start|stop|restart|status # Unix +ry.bat # Windows +``` + +### Frontend (npm) + +```bash +cd ruoyi-ui + +# Install dependencies +npm install + +# Development server (runs on port 80, proxies /dev-api to localhost:8080) +npm run dev + +# Production build +npm run build:prod + +# Staging build +npm run build:stage + +# Preview production build +npm run preview +``` + +## Architecture Patterns + +### Backend Architecture + +**Module Dependencies:** +- `ruoyi-admin` → `ruoyi-framework` → `ruoyi-system` → `ruoyi-common` +- `ruoyi-generator` and `ruoyi-quartz` are independent modules + +**Key Patterns:** +1. **Layered Architecture:** Controller → Service → Mapper → Domain +2. **Security:** JWT + Spring Security with role-based access control +3. **Dynamic Datasource:** Primary/secondary database support via Druid +4. **AOP:** Aspect-oriented logging (`@Log` annotation) and data scope filtering +5. **Global Exception Handling:** `GlobalExceptionHandler` with `AjaxResult` wrapper +6. **XSS Prevention:** Built-in XSS filtering via `XssFilter` +7. **Repeat Submit Prevention:** `@RepeatSubmit` annotation with interceptor + +**Key Files:** +- `ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java` - Entry point +- `ruoyi-admin/src/main/resources/application.yml` - Main configuration +- `ruoyi-admin/src/main/resources/application-druid.yml` - Database configuration +- `ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java` - Security config +- `ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java` - Logging aspect + +### Frontend Architecture + +**Key Patterns:** +1. **Route Guards:** `permission.js` handles JWT token validation and dynamic route generation +2. **Axios Interceptors:** Request/response handling in `utils/request.js` +3. **Global Methods:** Mounted on Vue prototype (e.g., `this.getDicts()`, `this.parseTime()`) +4. **Global Components:** `DictTag`, `Pagination`, `RightToolbar`, `Editor`, `FileUpload`, `ImageUpload` +5. **Store Modules:** `user`, `app`, `tagsView`, `permission`, `settings` +6. **Directives:** `v-hasPermi`, `v-hasRole`, `v-debounce`, `v-copy`, `v-ellipsis` + +**API Proxy Configuration:** +- Development: `/dev-api` → `http://localhost:8080` +- Production: `/prod-api` → configured via nginx or context + +**Key Files:** +- `ruoyi-ui/src/main.js` - Entry point with global registrations +- `ruoyi-ui/src/permission.js` - Route permission control +- `ruoyi-ui/src/utils/request.js` - Axios configuration +- `ruoyi-ui/src/utils/ruoyi.js` - Common utility functions +- `ruoyi-ui/src/store/modules/permission.js` - Dynamic route generation + +## Code Generation + +The code generator creates CRUD operations from database tables: + +1. Access the generator UI at System → Code Generator +2. Import a table from the database +3. Configure field types, validation, and UI options +4. Generate code (creates backend + frontend files) +5. Copy generated files to appropriate directories + +Templates are in `ruoyi-generator/src/main/resources/vm/` + +## Database + +- Main schema: `sql/ry_20250522.sql` +- Quartz tables: `sql/quartz.sql` +- Default login: admin/admin123 + +## Common Development Notes + +- Backend runs on port 8080 by default +- Frontend dev server runs on port 80 with proxy to backend +- Swagger API docs available at `/swagger-ui/index.html` when enabled +- Redis required for caching and session storage +- File upload path configured in `application.yml` under `ruoyi.profile`