feat: Complete Rust port of WiFi-DensePose with modular crates
Major changes: - Organized Python v1 implementation into v1/ subdirectory - Created Rust workspace with 9 modular crates: - wifi-densepose-core: Core types, traits, errors - wifi-densepose-signal: CSI processing, phase sanitization, FFT - wifi-densepose-nn: Neural network inference (ONNX/Candle/tch) - wifi-densepose-api: Axum-based REST/WebSocket API - wifi-densepose-db: SQLx database layer - wifi-densepose-config: Configuration management - wifi-densepose-hardware: Hardware abstraction - wifi-densepose-wasm: WebAssembly bindings - wifi-densepose-cli: Command-line interface Documentation: - ADR-001: Workspace structure - ADR-002: Signal processing library selection - ADR-003: Neural network inference strategy - DDD domain model with bounded contexts Testing: - 69 tests passing across all crates - Signal processing: 45 tests - Neural networks: 21 tests - Core: 3 doc tests Performance targets: - 10x faster CSI processing (~0.5ms vs ~5ms) - 5x lower memory usage (~100MB vs ~500MB) - WASM support for browser deployment
This commit is contained in:
610
v1/docs/integration/README.md
Normal file
610
v1/docs/integration/README.md
Normal file
@@ -0,0 +1,610 @@
|
||||
# WiFi-DensePose System Integration Guide
|
||||
|
||||
This document provides a comprehensive guide to the WiFi-DensePose system integration, covering all components and their interactions.
|
||||
|
||||
## Overview
|
||||
|
||||
The WiFi-DensePose system is a fully integrated solution for WiFi-based human pose estimation using CSI data and DensePose neural networks. The system consists of multiple interconnected components that work together to provide real-time pose detection capabilities.
|
||||
|
||||
## System Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ WiFi-DensePose System │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ CLI Interface (src/cli.py) │
|
||||
│ ├── Commands: start, stop, status, config │
|
||||
│ └── Entry Point: wifi-densepose │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ FastAPI Application (src/app.py) │
|
||||
│ ├── REST API Endpoints │
|
||||
│ ├── WebSocket Connections │
|
||||
│ ├── Middleware Stack │
|
||||
│ └── Error Handling │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ Core Processing Components │
|
||||
│ ├── CSI Processor (src/core/csi_processor.py) │
|
||||
│ ├── Phase Sanitizer (src/core/phase_sanitizer.py) │
|
||||
│ ├── Pose Estimator (src/core/pose_estimator.py) │
|
||||
│ └── Router Interface (src/core/router_interface.py) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ Service Layer │
|
||||
│ ├── Service Orchestrator (src/services/orchestrator.py) │
|
||||
│ ├── Health Check Service (src/services/health_check.py) │
|
||||
│ └── Metrics Service (src/services/metrics.py) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ Middleware Layer │
|
||||
│ ├── Authentication (src/middleware/auth.py) │
|
||||
│ ├── CORS (src/middleware/cors.py) │
|
||||
│ ├── Rate Limiting (src/middleware/rate_limit.py) │
|
||||
│ └── Error Handler (src/middleware/error_handler.py) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ Database Layer │
|
||||
│ ├── Connection Manager (src/database/connection.py) │
|
||||
│ ├── Models (src/database/models.py) │
|
||||
│ └── Migrations (src/database/migrations/) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ Background Tasks │
|
||||
│ ├── Cleanup Tasks (src/tasks/cleanup.py) │
|
||||
│ ├── Monitoring Tasks (src/tasks/monitoring.py) │
|
||||
│ └── Backup Tasks (src/tasks/backup.py) │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Component Integration
|
||||
|
||||
### 1. Application Entry Points
|
||||
|
||||
#### Main Application (`src/main.py`)
|
||||
- Primary entry point for the application
|
||||
- Handles application lifecycle management
|
||||
- Integrates with all system components
|
||||
|
||||
#### FastAPI Application (`src/app.py`)
|
||||
- Web application setup and configuration
|
||||
- API endpoint registration
|
||||
- Middleware integration
|
||||
- Error handling setup
|
||||
|
||||
#### CLI Interface (`src/cli.py`)
|
||||
- Command-line interface for system management
|
||||
- Integration with all system services
|
||||
- Configuration management commands
|
||||
|
||||
### 2. Configuration Management
|
||||
|
||||
#### Centralized Settings (`src/config.py`)
|
||||
- Environment-based configuration
|
||||
- Database connection settings
|
||||
- Service configuration parameters
|
||||
- Security settings
|
||||
|
||||
#### Logger Configuration (`src/logger.py`)
|
||||
- Structured logging setup
|
||||
- Log level management
|
||||
- Integration with monitoring systems
|
||||
|
||||
### 3. Core Processing Pipeline
|
||||
|
||||
The core processing components work together in a pipeline:
|
||||
|
||||
```
|
||||
Router Interface → CSI Processor → Phase Sanitizer → Pose Estimator
|
||||
```
|
||||
|
||||
#### Router Interface
|
||||
- Connects to WiFi routers
|
||||
- Collects CSI data
|
||||
- Manages device connections
|
||||
|
||||
#### CSI Processor
|
||||
- Processes raw CSI data
|
||||
- Applies signal processing algorithms
|
||||
- Prepares data for pose estimation
|
||||
|
||||
#### Phase Sanitizer
|
||||
- Removes phase noise and artifacts
|
||||
- Improves signal quality
|
||||
- Enhances pose detection accuracy
|
||||
|
||||
#### Pose Estimator
|
||||
- Applies DensePose neural networks
|
||||
- Generates pose predictions
|
||||
- Provides confidence scores
|
||||
|
||||
### 4. Service Integration
|
||||
|
||||
#### Service Orchestrator
|
||||
- Coordinates all system services
|
||||
- Manages service lifecycle
|
||||
- Handles inter-service communication
|
||||
|
||||
#### Health Check Service
|
||||
- Monitors system health
|
||||
- Provides health status endpoints
|
||||
- Integrates with monitoring systems
|
||||
|
||||
#### Metrics Service
|
||||
- Collects system metrics
|
||||
- Provides Prometheus-compatible metrics
|
||||
- Monitors performance indicators
|
||||
|
||||
### 5. Database Integration
|
||||
|
||||
#### Connection Management
|
||||
- Async database connections
|
||||
- Connection pooling
|
||||
- Transaction management
|
||||
|
||||
#### Data Models
|
||||
- SQLAlchemy ORM models
|
||||
- Database schema definitions
|
||||
- Relationship management
|
||||
|
||||
#### Migrations
|
||||
- Database schema versioning
|
||||
- Automated migration system
|
||||
- Data integrity maintenance
|
||||
|
||||
### 6. Background Task Integration
|
||||
|
||||
#### Cleanup Tasks
|
||||
- Periodic data cleanup
|
||||
- Resource management
|
||||
- System maintenance
|
||||
|
||||
#### Monitoring Tasks
|
||||
- System monitoring
|
||||
- Performance tracking
|
||||
- Alert generation
|
||||
|
||||
#### Backup Tasks
|
||||
- Data backup operations
|
||||
- System state preservation
|
||||
- Disaster recovery
|
||||
|
||||
## Integration Patterns
|
||||
|
||||
### 1. Dependency Injection
|
||||
|
||||
The system uses dependency injection for component integration:
|
||||
|
||||
```python
|
||||
# Example: Service integration
|
||||
from src.services.orchestrator import get_service_orchestrator
|
||||
from src.database.connection import get_database_manager
|
||||
|
||||
async def initialize_system():
|
||||
settings = get_settings()
|
||||
db_manager = get_database_manager(settings)
|
||||
orchestrator = get_service_orchestrator(settings)
|
||||
|
||||
await db_manager.initialize()
|
||||
await orchestrator.initialize()
|
||||
```
|
||||
|
||||
### 2. Event-Driven Architecture
|
||||
|
||||
Components communicate through events:
|
||||
|
||||
```python
|
||||
# Example: Event handling
|
||||
from src.core.events import EventBus
|
||||
|
||||
event_bus = EventBus()
|
||||
|
||||
# Publisher
|
||||
await event_bus.publish("csi_data_received", data)
|
||||
|
||||
# Subscriber
|
||||
@event_bus.subscribe("csi_data_received")
|
||||
async def process_csi_data(data):
|
||||
# Process the data
|
||||
pass
|
||||
```
|
||||
|
||||
### 3. Middleware Pipeline
|
||||
|
||||
Request processing through middleware:
|
||||
|
||||
```python
|
||||
# Middleware stack
|
||||
app.add_middleware(ErrorHandlerMiddleware)
|
||||
app.add_middleware(AuthenticationMiddleware)
|
||||
app.add_middleware(RateLimitMiddleware)
|
||||
app.add_middleware(CORSMiddleware)
|
||||
```
|
||||
|
||||
### 4. Resource Management
|
||||
|
||||
Proper resource lifecycle management:
|
||||
|
||||
```python
|
||||
# Context managers for resources
|
||||
async with db_manager.get_async_session() as session:
|
||||
# Database operations
|
||||
pass
|
||||
|
||||
async with router_interface.get_connection() as connection:
|
||||
# Router operations
|
||||
pass
|
||||
```
|
||||
|
||||
## Configuration Integration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
```bash
|
||||
# Core settings
|
||||
WIFI_DENSEPOSE_ENVIRONMENT=production
|
||||
WIFI_DENSEPOSE_DEBUG=false
|
||||
WIFI_DENSEPOSE_LOG_LEVEL=INFO
|
||||
|
||||
# Database settings
|
||||
WIFI_DENSEPOSE_DATABASE_URL=postgresql+asyncpg://user:pass@localhost/db
|
||||
WIFI_DENSEPOSE_DATABASE_POOL_SIZE=20
|
||||
|
||||
# Redis settings
|
||||
WIFI_DENSEPOSE_REDIS_URL=redis://localhost:6379/0
|
||||
WIFI_DENSEPOSE_REDIS_ENABLED=true
|
||||
|
||||
# Security settings
|
||||
WIFI_DENSEPOSE_SECRET_KEY=your-secret-key
|
||||
WIFI_DENSEPOSE_JWT_ALGORITHM=HS256
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
|
||||
```yaml
|
||||
# config/production.yaml
|
||||
database:
|
||||
pool_size: 20
|
||||
max_overflow: 30
|
||||
pool_timeout: 30
|
||||
|
||||
services:
|
||||
health_check:
|
||||
interval: 30
|
||||
timeout: 10
|
||||
|
||||
metrics:
|
||||
enabled: true
|
||||
port: 9090
|
||||
|
||||
processing:
|
||||
csi:
|
||||
sampling_rate: 1000
|
||||
buffer_size: 1024
|
||||
|
||||
pose:
|
||||
model_path: "models/densepose.pth"
|
||||
confidence_threshold: 0.7
|
||||
```
|
||||
|
||||
## API Integration
|
||||
|
||||
### REST Endpoints
|
||||
|
||||
```python
|
||||
# Device management
|
||||
GET /api/v1/devices
|
||||
POST /api/v1/devices
|
||||
GET /api/v1/devices/{device_id}
|
||||
PUT /api/v1/devices/{device_id}
|
||||
DELETE /api/v1/devices/{device_id}
|
||||
|
||||
# Session management
|
||||
GET /api/v1/sessions
|
||||
POST /api/v1/sessions
|
||||
GET /api/v1/sessions/{session_id}
|
||||
PATCH /api/v1/sessions/{session_id}
|
||||
DELETE /api/v1/sessions/{session_id}
|
||||
|
||||
# Data endpoints
|
||||
POST /api/v1/csi-data
|
||||
GET /api/v1/sessions/{session_id}/pose-detections
|
||||
GET /api/v1/sessions/{session_id}/csi-data
|
||||
```
|
||||
|
||||
### WebSocket Integration
|
||||
|
||||
```python
|
||||
# Real-time data streaming
|
||||
WS /ws/csi-data/{session_id}
|
||||
WS /ws/pose-detections/{session_id}
|
||||
WS /ws/system-status
|
||||
```
|
||||
|
||||
## Monitoring Integration
|
||||
|
||||
### Health Checks
|
||||
|
||||
```python
|
||||
# Health check endpoints
|
||||
GET /health # Basic health check
|
||||
GET /health?detailed=true # Detailed health information
|
||||
GET /metrics # Prometheus metrics
|
||||
```
|
||||
|
||||
### Metrics Collection
|
||||
|
||||
```python
|
||||
# System metrics
|
||||
- http_requests_total
|
||||
- http_request_duration_seconds
|
||||
- database_connections_active
|
||||
- csi_data_processed_total
|
||||
- pose_detections_total
|
||||
- system_memory_usage
|
||||
- system_cpu_usage
|
||||
```
|
||||
|
||||
## Testing Integration
|
||||
|
||||
### Unit Tests
|
||||
|
||||
```bash
|
||||
# Run unit tests
|
||||
pytest tests/unit/ -v
|
||||
|
||||
# Run with coverage
|
||||
pytest tests/unit/ --cov=src --cov-report=html
|
||||
```
|
||||
|
||||
### Integration Tests
|
||||
|
||||
```bash
|
||||
# Run integration tests
|
||||
pytest tests/integration/ -v
|
||||
|
||||
# Run specific integration test
|
||||
pytest tests/integration/test_full_system_integration.py -v
|
||||
```
|
||||
|
||||
### End-to-End Tests
|
||||
|
||||
```bash
|
||||
# Run E2E tests
|
||||
pytest tests/e2e/ -v
|
||||
|
||||
# Run with real hardware
|
||||
pytest tests/e2e/ --hardware=true -v
|
||||
```
|
||||
|
||||
## Deployment Integration
|
||||
|
||||
### Docker Integration
|
||||
|
||||
```dockerfile
|
||||
# Multi-stage build
|
||||
FROM python:3.11-slim as builder
|
||||
# Build stage
|
||||
|
||||
FROM python:3.11-slim as runtime
|
||||
# Runtime stage
|
||||
```
|
||||
|
||||
### Kubernetes Integration
|
||||
|
||||
```yaml
|
||||
# Deployment configuration
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: wifi-densepose
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: wifi-densepose
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: wifi-densepose
|
||||
spec:
|
||||
containers:
|
||||
- name: wifi-densepose
|
||||
image: wifi-densepose:latest
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
```
|
||||
|
||||
## Security Integration
|
||||
|
||||
### Authentication
|
||||
|
||||
```python
|
||||
# JWT-based authentication
|
||||
from src.middleware.auth import AuthenticationMiddleware
|
||||
|
||||
app.add_middleware(AuthenticationMiddleware)
|
||||
```
|
||||
|
||||
### Authorization
|
||||
|
||||
```python
|
||||
# Role-based access control
|
||||
from src.middleware.auth import require_role
|
||||
|
||||
@require_role("admin")
|
||||
async def admin_endpoint():
|
||||
pass
|
||||
```
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
```python
|
||||
# Rate limiting middleware
|
||||
from src.middleware.rate_limit import RateLimitMiddleware
|
||||
|
||||
app.add_middleware(RateLimitMiddleware,
|
||||
requests_per_minute=100)
|
||||
```
|
||||
|
||||
## Performance Integration
|
||||
|
||||
### Caching
|
||||
|
||||
```python
|
||||
# Redis caching
|
||||
from src.cache import get_cache_manager
|
||||
|
||||
cache = get_cache_manager()
|
||||
await cache.set("key", value, ttl=300)
|
||||
value = await cache.get("key")
|
||||
```
|
||||
|
||||
### Connection Pooling
|
||||
|
||||
```python
|
||||
# Database connection pooling
|
||||
from src.database.connection import get_database_manager
|
||||
|
||||
db_manager = get_database_manager(settings)
|
||||
# Automatic connection pooling
|
||||
```
|
||||
|
||||
### Async Processing
|
||||
|
||||
```python
|
||||
# Async task processing
|
||||
from src.tasks import get_task_manager
|
||||
|
||||
task_manager = get_task_manager()
|
||||
await task_manager.submit_task("process_csi_data", data)
|
||||
```
|
||||
|
||||
## Troubleshooting Integration
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Database Connection Issues**
|
||||
```bash
|
||||
# Check database connectivity
|
||||
wifi-densepose config validate
|
||||
```
|
||||
|
||||
2. **Service Startup Issues**
|
||||
```bash
|
||||
# Check service status
|
||||
wifi-densepose status
|
||||
|
||||
# View logs
|
||||
wifi-densepose logs --tail=100
|
||||
```
|
||||
|
||||
3. **Performance Issues**
|
||||
```bash
|
||||
# Check system metrics
|
||||
curl http://localhost:8000/metrics
|
||||
|
||||
# Check health status
|
||||
curl http://localhost:8000/health?detailed=true
|
||||
```
|
||||
|
||||
### Debug Mode
|
||||
|
||||
```bash
|
||||
# Enable debug mode
|
||||
export WIFI_DENSEPOSE_DEBUG=true
|
||||
export WIFI_DENSEPOSE_LOG_LEVEL=DEBUG
|
||||
|
||||
# Start with debug logging
|
||||
wifi-densepose start --debug
|
||||
```
|
||||
|
||||
## Integration Validation
|
||||
|
||||
### Automated Validation
|
||||
|
||||
```bash
|
||||
# Run integration validation
|
||||
./scripts/validate-integration.sh
|
||||
|
||||
# Run specific validation
|
||||
./scripts/validate-integration.sh --component=database
|
||||
```
|
||||
|
||||
### Manual Validation
|
||||
|
||||
```bash
|
||||
# Check package installation
|
||||
pip install -e .
|
||||
|
||||
# Verify imports
|
||||
python -c "import src; print(src.__version__)"
|
||||
|
||||
# Test CLI
|
||||
wifi-densepose --help
|
||||
|
||||
# Test API
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Error Handling
|
||||
- Use structured error responses
|
||||
- Implement proper exception handling
|
||||
- Log errors with context
|
||||
|
||||
### 2. Resource Management
|
||||
- Use context managers for resources
|
||||
- Implement proper cleanup procedures
|
||||
- Monitor resource usage
|
||||
|
||||
### 3. Configuration Management
|
||||
- Use environment-specific configurations
|
||||
- Validate configuration on startup
|
||||
- Provide sensible defaults
|
||||
|
||||
### 4. Testing
|
||||
- Write comprehensive integration tests
|
||||
- Use mocking for external dependencies
|
||||
- Test error conditions
|
||||
|
||||
### 5. Monitoring
|
||||
- Implement health checks
|
||||
- Collect relevant metrics
|
||||
- Set up alerting
|
||||
|
||||
### 6. Security
|
||||
- Validate all inputs
|
||||
- Use secure authentication
|
||||
- Implement rate limiting
|
||||
|
||||
### 7. Performance
|
||||
- Use async/await patterns
|
||||
- Implement caching where appropriate
|
||||
- Monitor performance metrics
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Run Integration Validation**
|
||||
```bash
|
||||
./scripts/validate-integration.sh
|
||||
```
|
||||
|
||||
2. **Start the System**
|
||||
```bash
|
||||
wifi-densepose start
|
||||
```
|
||||
|
||||
3. **Monitor System Health**
|
||||
```bash
|
||||
wifi-densepose status
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
4. **Run Tests**
|
||||
```bash
|
||||
pytest tests/ -v
|
||||
```
|
||||
|
||||
5. **Deploy to Production**
|
||||
```bash
|
||||
docker build -t wifi-densepose .
|
||||
docker run -p 8000:8000 wifi-densepose
|
||||
```
|
||||
|
||||
For more detailed information, refer to the specific component documentation in the `docs/` directory.
|
||||
Reference in New Issue
Block a user