VWED_server/CLAUDE.md

169 lines
5.7 KiB
Markdown
Raw Normal View History

2025-07-30 15:11:59 +08:00
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
VWED Task Module is a FastAPI-based Python system for managing and executing task workflows for AMR (Autonomous Mobile Robot) scheduling systems. The system provides a low-code configuration tool that allows users to design and configure complex robot task flows through a visual interface.
## Development Commands
### Application Startup
```bash
# Primary method - run the main application
python app.py
# Alternative method - using uvicorn directly
uvicorn app:app --host 0.0.0.0 --port 8000 --reload
```
### Database Operations
```bash
# Run database migrations
python scripts/run_migration.py
# Generate new migrations
python scripts/generate_migration.py
# Initialize database
python scripts/init_db.py
```
### Docker Deployment
```bash
# Build and run with Docker
docker build -t vwed-task:latest .
docker run -d -p 8000:8000 --name vwed-task-container vwed-task:latest
# Or use Docker Compose (recommended)
docker-compose up -d
```
## Architecture Overview
The system follows a layered architecture with clear separation of concerns:
### Core Layers
- **API Layer (`routes/`)**: FastAPI REST endpoints for client communication
- **Middleware Layer (`middlewares/`)**: Request logging, error handling, and cross-cutting concerns
- **Business Logic Layer (`services/`)**: Core business logic including task execution and scheduling
- **Data Layer (`data/`)**: ORM models, database session management, and data persistence
- **Component Layer (`components/`)**: Extensible component system for task workflow building
- **Configuration Layer (`config/`)**: System settings, database configuration, and error mappings
### Key Services
- **Task Execution Engine (`services/execution/`)**: Handles task lifecycle and execution
- `task_executor.py`: Main task execution controller
- `block_executor.py`: Individual task block execution
- `task_context.py`: Execution context and variable management
- `handlers/`: Specific handlers for different component types
- **Enhanced Scheduler (`services/enhanced_scheduler/`)**: High-performance async task scheduling
- **Intelligence Layer (`services/intelligence/`)**: AI-powered features (partial implementation)
### Data Models
Key models in `data/models/`:
- `taskdef.py`: Task definition and configuration
- `taskrecord.py`: Task execution records
- `blockrecord.py`: Individual block execution records
- `tasktemplate.py`: Reusable task templates
- `calldevice.py`: Device integration configurations
## Key Features
### Task Management
- Visual task flow designer with drag-and-drop interface
- Version control for task configurations
- Task templates for reusability
- Real-time execution monitoring
### Component System
Components are registered in `config/components/` and include:
- Foundation components (basic operations)
- Robot scheduling components
- HTTP request components
- Storage location management
- Progress tracking components
- Script execution components
### Device Integration
- Modbus protocol support (`modbusconfig.py`)
- Generic device calling interface (`calldevice.py`)
- Extensible communication protocols
## Development Guidelines
### Database Schema Changes
1. Modify models in `data/models/`
2. Generate migration: `python scripts/generate_migration.py`
3. Apply migration: `python scripts/run_migration.py`
### Adding New Components
1. Define component configuration in `config/components/`
2. Implement handler in `services/execution/handlers/`
3. Register component in the component system
### Task Execution Flow
1. Task definition stored in `taskdef` table
2. Execution creates `taskrecord` entry
3. Individual blocks create `blockrecord` entries
4. Context variables managed through `task_context.py`
5. Component handlers execute specific business logic
### Configuration Management
- Environment-specific settings in `config/settings.py`
- Database configuration in `config/database_config.py`
- Error messages centralized in `config/error_messages.py`
## Important Technical Details
### Async Task Scheduling
The system uses a custom enhanced scheduler (`services/enhanced_scheduler/`) that:
- Maintains worker pools for concurrent task execution
- Provides priority-based task queuing
- Handles task persistence and recovery
- Manages worker lifecycle
### Component Architecture
Components follow a registry pattern:
- Each component type has a handler class
- Handlers implement standard execution interface
- Components are configurable through JSON definitions
- Extensible for new component types
### Database Session Management
- Uses SQLAlchemy ORM with session management in `data/session.py`
- Supports both sync and async database operations
- Automatic connection pooling and cleanup
## Testing and Debugging
### Test Files
- Basic tests in `tests/` directory
- Test data and fixtures available
- Integration tests for API endpoints
### Logging
- Centralized logging configuration in `utils/logger.py`
- Application logs stored in `logs/` directory
- Structured logging for debugging task execution
### API Documentation
- Swagger UI available at `http://localhost:8000/docs`
- Comprehensive API documentation in `VWED任务模块接口文档/`
## Common Troubleshooting
### Database Issues
- Check database connection in `config/database_config.py`
- Verify database migrations are up to date
- Review logs in `logs/app.log`
### Task Execution Problems
- Monitor task status through API endpoints
- Check execution logs for specific error messages
- Verify component configurations are correct
### Performance Optimization
- Adjust scheduler worker counts in settings
- Monitor database connection pool usage
- Review task complexity and component efficiency