添加 CLAUDE.md 文件,为 Claude Code 提供项目开发指南
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
8a1cf9ed55
commit
3d77f7a3dc
150
CLAUDE.md
Normal file
150
CLAUDE.md
Normal file
@ -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`
|
||||||
Loading…
Reference in New Issue
Block a user