feat: add CLAUDE.md for comprehensive development guidance, including commands, architecture overview, and deployment details
All checks were successful
test / build (push) Successful in 1m12s
test / deploy (push) Successful in 2s

This commit is contained in:
Kai 2025-11-28 19:12:02 +08:00
parent 5b387cffd9
commit ee6c8e8253

115
CLAUDE.md Normal file
View File

@ -0,0 +1,115 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Development Commands
### Running the Application
```bash
# Start development server (for local development)
python manage.py runserver
# Start with uvicorn (production-like)
uvicorn mysite.asgi:application --host=0.0.0.0 --port=8000 --reload
```
### Database Operations
```bash
# Run migrations
python manage.py makemigrations
python manage.py migrate
# Create superuser
python manage.py createsuperuser
```
### Docker Development
```bash
# Build Docker image
docker build -t my-django:latest .
# Run with Docker Compose (see deploy/compose-test.yaml)
docker-compose -f deploy/compose-test.yaml up -d
```
### Testing
```bash
# Run tests
python manage.py test
# Run tests for specific app
python manage.py test apps.role
```
## Architecture Overview
### Project Structure
This is a Django 5.1 REST API project with the following key components:
- **mysite/**: Main Django project configuration
- **apps/**: Modular Django applications
- `area/`: Geographic area management
- `dictionary/`: Data dictionary/configuration
- `menu/`: Navigation menu system
- `menu_button/`: Menu button permissions
- `role/`: Role-based access control
- `system_user/`: User management
- **utils/**: Shared utilities and middleware
### Key Configuration Details
#### Database Setup
- **Primary Database**: MySQL (host: 47.108.232.131:3306, database: ky)
- **Secondary Database**: MongoDB (host: 47.108.232.131:27017, database: wk)
- **Caching**: Redis with multiple databases (0: default, 1: queue, 2: base, 3: cache)
#### REST Framework Configuration
- Uses Django REST Framework 3.15.2
- JSON response format with custom response wrapper
- Exception handling via `utils.exception.CustomExceptionMiddleware`
- Filtering support via django-filter
- API documentation with CoreAPI
#### Internationalization
- Primary language: Chinese (zh-hans)
- Timezone: Asia/Shanghai
- Localization support enabled
### API Structure
All APIs follow the pattern:
- `/area/` - Area management endpoints
- `/role/` - Role management endpoints
- `/menu/` - Menu management endpoints
- `/menu_button/` - Menu button endpoints
- `/dictionary/` - Dictionary endpoints
- `/system_user/` - User management endpoints
### Custom Utilities
- `utils.json_response.Response`: Standardized API response wrapper
- `utils.exception.CustomExceptionMiddleware`: Global exception handling
- `utils.paginator`: Custom pagination logic
- `utils.redis`: Redis connection utilities
### Deployment
- Containerized with Docker (Python 3.11-slim base)
- Uses uvicorn ASGI server
- CI/CD via GitHub Actions with self-hosted runners
- Deployment to test environment via Docker Compose
## Development Notes
### Dependencies
- Core: Django 5.1.5, Django REST Framework 3.15.2
- Database: PyMySQL, mongoengine
- Caching: django-redis
- Server: uvicorn
### Security Considerations
- CSRF middleware is disabled (line 55 in settings.py)
- Custom exception middleware catches all unhandled exceptions
- Debug mode enabled (should be disabled in production)
### Logging
- Comprehensive logging setup with rotation
- Separate log files for general logs and error logs
- File-based logging with console output for development