feat: Integrate auto-recording feature into USDA Vision Camera System

- Added instructions for implementing auto-recording functionality in the React app.
- Updated TypeScript interfaces to include new fields for auto-recording status and configuration.
- Created new API endpoints for enabling/disabling auto-recording and retrieving system status.
- Enhanced UI components to display auto-recording status, controls, and error handling.
- Developed a comprehensive Auto-Recording Feature Implementation Guide.
- Implemented a test script for validating auto-recording functionality, including configuration checks and API connectivity.
- Introduced AutoRecordingManager to manage automatic recording based on machine state changes with retry logic.
- Established a retry mechanism for failed recording attempts and integrated status tracking for auto-recording.
This commit is contained in:
Alireza Vaezi
2025-07-29 09:43:14 -04:00
parent 0a26a8046e
commit 0c92b6c277
18 changed files with 1543 additions and 91 deletions

View File

@@ -40,6 +40,11 @@ class CameraConfig:
target_fps: float = 3.0
enabled: bool = True
# Auto-recording settings
auto_start_recording_enabled: bool = False # Enable automatic recording when machine turns on
auto_recording_max_retries: int = 3 # Maximum retry attempts for failed auto-recording starts
auto_recording_retry_delay_seconds: int = 5 # Delay between retry attempts
# Image Quality Settings
sharpness: int = 100 # 0-200, default 100 (no sharpening)
contrast: int = 100 # 0-200, default 100 (normal contrast)
@@ -86,7 +91,10 @@ class SystemConfig:
api_host: str = "0.0.0.0"
api_port: int = 8000
enable_api: bool = True
timezone: str = "America/New_York" # Atlanta, Georgia timezone
timezone: str = "America/New_York"
# Auto-recording system settings
auto_recording_enabled: bool = True # Global enable/disable for auto-recording feature # Atlanta, Georgia timezone
class Config:

View File

@@ -77,6 +77,13 @@ class CameraInfo:
current_recording_file: Optional[str] = None
recording_start_time: Optional[datetime] = None
# Auto-recording status
auto_recording_enabled: bool = False
auto_recording_active: bool = False # Whether auto-recording is currently managing this camera
auto_recording_failure_count: int = 0
auto_recording_last_attempt: Optional[datetime] = None
auto_recording_last_error: Optional[str] = None
@dataclass
class RecordingInfo: