feat: replay E2E fonctionnel — 25/25 actions, 0 retries, SomEngine via serveur

Validé sur PC Windows (DESKTOP-58D5CAC, 2560x1600) :
- 8 clics résolus visuellement (1 anchor_template, 1 som_text_match, 6 som_vlm)
- Score moyen 0.75, temps moyen 1.6s
- Texte tapé correctement (bonjour, test word, date, email)
- 0 retries, 2 actions non vérifiées (OK)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-31 14:04:41 +02:00
parent 5e0b53cfd1
commit a7de6a488b
79542 changed files with 6091757 additions and 1 deletions

View File

@@ -0,0 +1,299 @@
# Design Document: RPA System Unification
## Overview
Cette conception unifie définitivement le système RPA Vision V3 en créant une architecture centralisée qui élimine les incohérences de configuration, les chemins de données dispersés, et les services mal synchronisés.
## Architecture
### Composants Principaux
```mermaid
graph TB
CM[Configuration Manager] --> SR[Service Registry]
CM --> DM[Data Manager]
CM --> HM[Health Monitor]
SR --> API[API Service]
SR --> DASH[Dashboard Service]
SR --> WORK[Worker Service]
SR --> AGENT[Agent Service]
DM --> SESS[Sessions Storage]
DM --> WF[Workflows Storage]
DM --> LOGS[Logs Storage]
HM --> API
HM --> DASH
HM --> WORK
HM --> AGENT
```
### Configuration Manager
Le Configuration Manager est le point central de toute configuration système :
```python
@dataclass
class SystemConfig:
# Chemins unifiés
base_path: Path
data_path: Path
logs_path: Path
# Services
api_port: int = 8000
dashboard_port: int = 5001
worker_threads: int = 4
# Base de données
sessions_path: Path
workflows_path: Path
embeddings_path: Path
# Sécurité
secret_key: str
auth_enabled: bool = True
# Monitoring
health_check_interval: int = 30
metrics_enabled: bool = True
```
### Service Registry
Le Service Registry maintient l'état de tous les services :
```python
class ServiceRegistry:
def register_service(self, service_id: str, service_info: ServiceInfo)
def unregister_service(self, service_id: str)
def get_service_status(self, service_id: str) -> ServiceStatus
def get_all_services(self) -> Dict[str, ServiceStatus]
def wait_for_service(self, service_id: str, timeout: int = 30)
```
## Components and Interfaces
### 1. Configuration Manager
**Interface:**
```python
class ConfigurationManager:
def load_config(self) -> SystemConfig
def validate_config(self, config: SystemConfig) -> List[ValidationError]
def apply_config(self, config: SystemConfig)
def watch_config_changes(self, callback: Callable)
```
**Responsabilités:**
- Charger la configuration depuis les variables d'environnement et fichiers
- Valider la cohérence de la configuration
- Propager les changements aux services actifs
- Fournir des valeurs par défaut sensées
### 2. Data Manager
**Interface:**
```python
class DataManager:
def initialize_directories(self)
def get_sessions_path(self) -> Path
def get_workflows_path(self) -> Path
def migrate_data_if_needed(self)
def validate_data_integrity(self) -> List[IntegrityError]
```
**Responsabilités:**
- Créer et maintenir la structure de répertoires
- Gérer les migrations de données
- Valider l'intégrité des données
- Fournir des chemins cohérents à tous les composants
### 3. Health Monitor
**Interface:**
```python
class HealthMonitor:
def start_monitoring(self)
def stop_monitoring(self)
def check_service_health(self, service_id: str) -> HealthStatus
def get_system_health(self) -> SystemHealthStatus
def register_health_check(self, service_id: str, check_func: Callable)
```
**Responsabilités:**
- Surveiller la santé de tous les services
- Détecter les pannes et tenter la récupération
- Fournir des métriques de santé unifiées
- Alerter en cas de problèmes critiques
### 4. System Controller
**Interface:**
```python
class SystemController:
def start_all_services(self)
def stop_all_services(self)
def restart_service(self, service_id: str)
def get_system_status(self) -> SystemStatus
def run_consistency_check(self) -> ConsistencyReport
```
**Responsabilités:**
- Coordonner le démarrage/arrêt des services
- Respecter les dépendances entre services
- Fournir des commandes de gestion système
- Exécuter les vérifications de cohérence
## Data Models
### Configuration Models
```python
@dataclass
class ServiceInfo:
service_id: str
service_type: str
host: str
port: int
pid: Optional[int]
started_at: datetime
health_check_url: str
@dataclass
class ServiceStatus:
service_id: str
status: Literal["starting", "running", "stopping", "stopped", "error"]
last_health_check: datetime
error_message: Optional[str]
uptime: timedelta
@dataclass
class SystemHealthStatus:
overall_status: Literal["healthy", "degraded", "critical"]
services: Dict[str, ServiceStatus]
last_check: datetime
issues: List[str]
```
### Migration Models
```python
@dataclass
class MigrationTask:
migration_id: str
description: str
source_version: str
target_version: str
migration_func: Callable
@dataclass
class MigrationResult:
migration_id: str
success: bool
duration: timedelta
error_message: Optional[str]
backup_path: Optional[Path]
```
## Correctness Properties
*A property is a characteristic or behavior that should hold true across all valid executions of a system-essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.*
### Property 1: Configuration Consistency
*For any* system startup, all components should use identical configuration values for shared settings
**Validates: Requirements 1.1, 1.2**
### Property 2: Data Path Unification
*For any* data access operation, all components should resolve to the same physical paths for the same logical data
**Validates: Requirements 2.1, 2.2, 2.3**
### Property 3: Service Registration Completeness
*For any* active service, it should be registered in the Service Registry with accurate status information
**Validates: Requirements 3.1, 3.2, 3.3**
### Property 4: Health Check Responsiveness
*For any* registered service, health checks should complete within the configured timeout period
**Validates: Requirements 4.1, 4.2**
### Property 5: Startup Order Correctness
*For any* system startup sequence, services should start in dependency order and all dependencies should be ready before dependent services start
**Validates: Requirements 5.1, 5.3**
### Property 6: Shutdown Graceful Completion
*For any* system shutdown sequence, all services should stop cleanly within the configured timeout
**Validates: Requirements 5.2, 5.4**
### Property 7: Error Correlation Consistency
*For any* error event, it should be logged with consistent format and correlation IDs across all components
**Validates: Requirements 6.1, 6.2, 6.3**
### Property 8: Data Consistency Validation
*For any* consistency check run, detected inconsistencies should be accurately reported with actionable repair suggestions
**Validates: Requirements 7.1, 7.2, 7.3**
### Property 9: Migration Safety
*For any* data migration, the original data should be backed up and the migration should be reversible
**Validates: Requirements 8.1, 8.3, 8.5**
### Property 10: Configuration Validation Completeness
*For any* invalid configuration, the system should detect and report all validation errors before attempting to start services
**Validates: Requirements 1.4, 1.5**
## Error Handling
### Configuration Errors
- Invalid paths → Create directories or fail with clear message
- Missing required values → Use defaults or fail with specific missing keys
- Type mismatches → Convert when safe or fail with type information
### Service Errors
- Service startup failure → Log error, mark as failed, don't start dependents
- Service health check failure → Attempt restart, escalate if repeated failures
- Service communication failure → Retry with backoff, mark as degraded
### Data Errors
- Missing directories → Create with correct permissions
- Corrupted data → Attempt repair, restore from backup if available
- Schema version mismatch → Run migrations automatically
### Migration Errors
- Migration failure → Restore from backup, log detailed error
- Backup failure → Abort migration, require manual intervention
- Validation failure → Report specific issues, provide repair options
## Testing Strategy
### Unit Tests
- Configuration loading and validation
- Service registry operations
- Health check logic
- Migration procedures
- Error handling paths
### Property-Based Tests
- Configuration consistency across components (Property 1)
- Data path resolution correctness (Property 2)
- Service lifecycle management (Properties 3, 5, 6)
- Error correlation and logging (Property 7)
- Migration safety and reversibility (Property 9)
### Integration Tests
- Full system startup/shutdown cycles
- Service failure and recovery scenarios
- Configuration change propagation
- Cross-component data access
- End-to-end health monitoring
### Performance Tests
- System startup time under various loads
- Health check response times
- Configuration change propagation speed
- Migration performance with large datasets
**Testing Configuration:**
- Minimum 100 iterations per property test
- Each property test tagged with: **Feature: rpa-system-unification, Property {number}: {property_text}**
- Integration tests run in isolated environments
- Performance tests with realistic data volumes

View File

@@ -0,0 +1,112 @@
# Requirements Document
## Introduction
Le système RPA Vision V3 souffre d'un manque d'unification critique qui cause des problèmes récurrents de configuration, de chemins de données incohérents, et de services mal synchronisés. Cette spécification vise à unifier définitivement tous les composants du système.
## Glossary
- **System**: Le système RPA Vision V3 complet
- **Component**: Un service ou module du système (dashboard, worker, API, agent)
- **Configuration_Manager**: Gestionnaire centralisé de configuration
- **Data_Path**: Chemin unifié pour toutes les données
- **Service_Registry**: Registre des services actifs
- **Health_Monitor**: Moniteur de santé système
## Requirements
### Requirement 1: Configuration Centralisée
**User Story:** En tant qu'administrateur système, je veux une configuration centralisée unique, afin d'éviter les incohérences entre composants.
#### Acceptance Criteria
1. THE Configuration_Manager SHALL load configuration from a single source of truth
2. WHEN any component starts, THE System SHALL use the same configuration values
3. WHEN configuration changes, THE System SHALL propagate changes to all active components
4. THE Configuration_Manager SHALL validate all configuration values before application
5. IF configuration is invalid, THEN THE System SHALL fail fast with clear error messages
### Requirement 2: Chemins de Données Unifiés
**User Story:** En tant que développeur, je veux des chemins de données cohérents, afin que tous les composants accèdent aux mêmes données.
#### Acceptance Criteria
1. THE System SHALL use a single DATA_PATH for all data storage
2. WHEN any component accesses sessions, THE System SHALL use the same sessions directory
3. WHEN any component accesses workflows, THE System SHALL use the same workflows directory
4. THE System SHALL create missing directories automatically with correct permissions
5. THE Data_Path SHALL be configurable via environment variables with sensible defaults
### Requirement 3: Services Synchronisés
**User Story:** En tant qu'administrateur, je veux que tous les services soient synchronisés, afin d'éviter les états incohérents.
#### Acceptance Criteria
1. THE Service_Registry SHALL track all active system components
2. WHEN a service starts, THE System SHALL register it in the Service_Registry
3. WHEN a service stops, THE System SHALL update the Service_Registry
4. THE System SHALL provide a unified health check endpoint for all services
5. WHEN services are restarted, THE System SHALL ensure proper initialization order
### Requirement 4: Monitoring Unifié
**User Story:** En tant qu'administrateur, je veux un monitoring unifié, afin de surveiller l'état complet du système.
#### Acceptance Criteria
1. THE Health_Monitor SHALL check all system components periodically
2. WHEN a component fails, THE Health_Monitor SHALL log the failure and attempt recovery
3. THE System SHALL provide unified metrics for all components
4. THE Health_Monitor SHALL expose a single status endpoint showing overall system health
5. WHEN system health degrades, THE System SHALL send alerts
### Requirement 5: Démarrage et Arrêt Coordonnés
**User Story:** En tant qu'administrateur, je veux un démarrage/arrêt coordonné, afin d'éviter les problèmes de dépendances.
#### Acceptance Criteria
1. THE System SHALL provide a single command to start all services
2. THE System SHALL provide a single command to stop all services
3. WHEN starting, THE System SHALL respect service dependencies
4. WHEN stopping, THE System SHALL gracefully shutdown services in reverse order
5. THE System SHALL wait for proper initialization before marking services as ready
### Requirement 6: Gestion d'Erreurs Centralisée
**User Story:** En tant qu'administrateur, je veux une gestion d'erreurs centralisée, afin de diagnostiquer rapidement les problèmes.
#### Acceptance Criteria
1. THE System SHALL use a unified logging format across all components
2. WHEN errors occur, THE System SHALL log them with consistent structure
3. THE System SHALL provide error correlation across components
4. THE System SHALL aggregate logs in a central location
5. WHEN critical errors occur, THE System SHALL trigger automated recovery procedures
### Requirement 7: Validation de Cohérence
**User Story:** En tant qu'administrateur, je veux une validation de cohérence automatique, afin de détecter les problèmes avant qu'ils n'impactent les utilisateurs.
#### Acceptance Criteria
1. THE System SHALL validate data consistency across all components
2. WHEN inconsistencies are detected, THE System SHALL report them clearly
3. THE System SHALL provide automated repair procedures for common issues
4. THE System SHALL run consistency checks at startup
5. THE System SHALL provide manual consistency check commands
### Requirement 8: Migration et Mise à Jour
**User Story:** En tant qu'administrateur, je veux des migrations automatiques, afin de maintenir la cohérence lors des mises à jour.
#### Acceptance Criteria
1. THE System SHALL detect schema version mismatches automatically
2. WHEN schema migrations are needed, THE System SHALL perform them safely
3. THE System SHALL backup data before performing migrations
4. THE System SHALL validate data integrity after migrations
5. IF migrations fail, THEN THE System SHALL restore from backup automatically

View File

@@ -0,0 +1,156 @@
# Implementation Plan: RPA System Unification
## Overview
Ce plan unifie définitivement le système RPA Vision V3 en créant une architecture centralisée qui élimine les incohérences et problèmes récurrents.
## Tasks
- [x] 1. Créer le Configuration Manager centralisé
- Implémenter la classe SystemConfig avec tous les paramètres unifiés
- Créer le ConfigurationManager pour charger/valider la configuration
- Ajouter la gestion des variables d'environnement et fichiers de config
- _Requirements: 1.1, 1.2, 1.4, 1.5_
- [x]* 1.1 Écrire les tests de propriété pour la configuration
- **Property 1: Configuration Consistency**
- **Property 10: Configuration Validation Completeness**
- **Validates: Requirements 1.1, 1.2, 1.4, 1.5**
- [ ] 2. Implémenter le Data Manager unifié
- Créer la classe DataManager pour gérer tous les chemins de données
- Unifier les chemins sessions, workflows, embeddings, logs
- Ajouter la création automatique des répertoires avec permissions
- Implémenter la validation d'intégrité des données
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5_
- [ ]* 2.1 Écrire les tests de propriété pour les chemins de données
- **Property 2: Data Path Unification**
- **Property 8: Data Consistency Validation**
- **Validates: Requirements 2.1, 2.2, 2.3, 7.1, 7.2**
- [ ] 3. Créer le Service Registry
- Implémenter la classe ServiceRegistry pour tracker tous les services
- Ajouter l'enregistrement/désenregistrement automatique des services
- Créer les modèles ServiceInfo et ServiceStatus
- Implémenter la synchronisation entre services
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5_
- [ ]* 3.1 Écrire les tests de propriété pour le Service Registry
- **Property 3: Service Registration Completeness**
- **Validates: Requirements 3.1, 3.2, 3.3**
- [ ] 4. Implémenter le Health Monitor
- Créer la classe HealthMonitor pour surveiller tous les composants
- Ajouter les vérifications de santé périodiques
- Implémenter la détection de pannes et récupération automatique
- Créer l'endpoint de santé système unifié
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5_
- [ ]* 4.1 Écrire les tests de propriété pour le Health Monitor
- **Property 4: Health Check Responsiveness**
- **Validates: Requirements 4.1, 4.2**
- [ ] 5. Créer le System Controller
- Implémenter la classe SystemController pour coordonner les services
- Ajouter les commandes start/stop/restart unifiées
- Gérer les dépendances entre services au démarrage
- Implémenter l'arrêt gracieux en ordre inverse
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_
- [ ]* 5.1 Écrire les tests de propriété pour le System Controller
- **Property 5: Startup Order Correctness**
- **Property 6: Shutdown Graceful Completion**
- **Validates: Requirements 5.1, 5.2, 5.3, 5.4**
- [ ] 6. Checkpoint - Vérifier l'architecture de base
- Ensure all tests pass, ask the user if questions arise.
- [ ] 7. Implémenter la gestion d'erreurs centralisée
- Créer le format de log unifié pour tous les composants
- Ajouter la corrélation d'erreurs entre composants
- Implémenter l'agrégation centralisée des logs
- Créer les procédures de récupération automatique
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5_
- [ ]* 7.1 Écrire les tests de propriété pour la gestion d'erreurs
- **Property 7: Error Correlation Consistency**
- **Validates: Requirements 6.1, 6.2, 6.3**
- [ ] 8. Créer le système de migration
- Implémenter la détection automatique des versions de schéma
- Créer le framework de migration avec backup automatique
- Ajouter la validation d'intégrité post-migration
- Implémenter la restauration automatique en cas d'échec
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_
- [ ]* 8.1 Écrire les tests de propriété pour les migrations
- **Property 9: Migration Safety**
- **Validates: Requirements 8.1, 8.3, 8.5**
- [ ] 9. Migrer le Dashboard Service
- Modifier web_dashboard/app.py pour utiliser le Configuration Manager
- Remplacer les chemins hardcodés par le Data Manager
- Intégrer avec le Service Registry et Health Monitor
- Corriger le problème des sessions non trouvées
- _Requirements: 1.2, 2.1, 2.2, 3.1_
- [ ] 10. Migrer l'API Service
- Modifier server/api_upload.py pour utiliser la configuration centralisée
- Intégrer avec le Service Registry
- Unifier les chemins de données avec le Data Manager
- _Requirements: 1.2, 2.1, 2.2, 3.1_
- [ ] 11. Migrer le Worker Service
- Modifier server/worker_daemon.py pour la configuration centralisée
- Intégrer avec le Service Registry et Health Monitor
- Unifier les chemins de traitement des données
- _Requirements: 1.2, 2.1, 2.2, 3.1_
- [ ] 12. Migrer l'Agent Service
- Modifier agent_v0/ pour utiliser la configuration centralisée
- Intégrer avec le Service Registry
- Unifier les chemins d'upload et de stockage
- _Requirements: 1.2, 2.1, 2.2, 3.1_
- [ ] 13. Créer les scripts de gestion système
- Créer rpa-system start/stop/restart/status
- Ajouter les commandes de vérification de cohérence
- Implémenter les outils de diagnostic et réparation
- Créer les scripts de migration manuelle
- _Requirements: 5.1, 5.2, 7.3, 7.5_
- [ ]* 13.1 Écrire les tests d'intégration système
- Tester les cycles complets start/stop
- Tester la récupération après panne
- Tester les migrations de données
- _Requirements: 5.1, 5.2, 8.1, 8.2_
- [ ] 14. Mettre à jour la configuration systemd
- Modifier les services systemd pour utiliser le nouveau système
- Ajouter les dépendances correctes entre services
- Mettre à jour les variables d'environnement
- Tester le démarrage automatique au boot
- _Requirements: 3.5, 5.3, 5.4_
- [ ] 15. Checkpoint final - Validation complète
- Ensure all tests pass, ask the user if questions arise.
- Vérifier que tous les services utilisent la configuration centralisée
- Valider que les chemins de données sont unifiés
- Tester les scénarios de panne et récupération
- Valider les migrations de données
- [ ]* 15.1 Tests de performance système
- Mesurer les temps de démarrage/arrêt
- Tester la performance des health checks
- Valider les performances de migration
- _Requirements: 4.1, 5.5, 8.4_
## Notes
- Tasks marked with `*` are optional and can be skipped for faster MVP
- Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Property tests validate universal correctness properties
- Integration tests validate cross-component behavior
- Cette unification résoudra définitivement les problèmes récurrents de configuration et de synchronisation