5.7 KiB
5.7 KiB
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
# 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
# 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
# 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 executiontask_executor.py
: Main task execution controllerblock_executor.py
: Individual task block executiontask_context.py
: Execution context and variable managementhandlers/
: 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 configurationtaskrecord.py
: Task execution recordsblockrecord.py
: Individual block execution recordstasktemplate.py
: Reusable task templatescalldevice.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
- Modify models in
data/models/
- Generate migration:
python scripts/generate_migration.py
- Apply migration:
python scripts/run_migration.py
Adding New Components
- Define component configuration in
config/components/
- Implement handler in
services/execution/handlers/
- Register component in the component system
Task Execution Flow
- Task definition stored in
taskdef
table - Execution creates
taskrecord
entry - Individual blocks create
blockrecord
entries - Context variables managed through
task_context.py
- 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