File size: 3,671 Bytes
afa4de7 | 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()
|