diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..37c5684 --- /dev/null +++ b/CLAUDE.md @@ -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 \ No newline at end of file