File size: 3,671 Bytes
6d20eab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
Seed RAG graph with historical healing action success rates.
Run once before starting the API server.
"""
import sys
import os
sys.path.append(os.path.dirname(__file__))

from app.core.deps import get_rag_graph
from agentic_reliability_framework.core.models.event import HealingAction

def seed_historical_data():
    rag = get_rag_graph()
    
    # Define seed incidents (each with an outcome)
    seed_data = [
        # restart_container successes
        {"incident_id": "seed_restart_1", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 2},
        {"incident_id": "seed_restart_2", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 3},
        {"incident_id": "seed_restart_3", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": False, "resolution_time_minutes": 10},
        
        # rollback successes
        {"incident_id": "seed_rollback_1", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 1},
        {"incident_id": "seed_rollback_2", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 2},
        {"incident_id": "seed_rollback_3", "component": "test", "action": HealingAction.ROLLBACK.value, "success": False, "resolution_time_minutes": 5},
        
        # scale_out successes
        {"incident_id": "seed_scale_1", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": True, "resolution_time_minutes": 5},
        {"incident_id": "seed_scale_2", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": False, "resolution_time_minutes": 15},
        
        # circuit_breaker successes
        {"incident_id": "seed_cb_1", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 1},
        {"incident_id": "seed_cb_2", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 2},
        
        # traffic_shift successes
        {"incident_id": "seed_ts_1", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": True, "resolution_time_minutes": 4},
        {"incident_id": "seed_ts_2", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": False, "resolution_time_minutes": 8},
    ]
    
    # Add each outcome to the RAG graph
    for item in seed_data:
        # Create a dummy reliability event (simplified)
        from agentic_reliability_framework.core.models.event import ReliabilityEvent
        event = ReliabilityEvent(
            component=item["component"],
            latency_p99=500,  # placeholder
            error_rate=0.1,
            service_mesh="default"
        )
        # Record the outcome
        rag.record_outcome(
            incident_id=item["incident_id"],
            event=event,
            action_taken=item["action"],
            success=item["success"],
            resolution_time_minutes=item["resolution_time_minutes"]
        )
        print(f"Seeded: {item['action']} -> success={item['success']}")
    
    print(f"Seeded {len(seed_data)} historical outcomes.")
    print(f"Stats per action:")
    for action in HealingAction:
        stats = rag.get_historical_effectiveness(action.value, component_filter="test")
        print(f"  {action.value}: uses={stats['total_uses']}, success_rate={stats['success_rate']:.2f}, avg_time={stats['avg_resolution_time_minutes']:.1f} min")

if __name__ == "__main__":
    seed_historical_data()