package com.ankurm.mcpadvanced; import java.util.List; import java.util.Map; import org.springframework.stereotype.Component; /** Fixed in-memory data so every run of the demo reads the same bytes. */ @Component public class IncidentData { private final Map logs = Map.of( "INC-1042", """ 09:14:02 payments-api WARN connection pool at 48/50 09:14:09 payments-api ERROR timeout acquiring connection after 30000ms 09:14:09 payments-api ERROR timeout acquiring connection after 30000ms 09:14:31 payments-api ERROR HTTP 503 returned to 212 clients 09:15:02 payments-db WARN slow query 14.8s: SELECT * FROM ledger WHERE account_id = ? """, "INC-1043", """ 11:02:44 search-api WARN index segment merge running 11:02:51 search-api INFO p99 latency 840ms (SLO 500ms) """); private final Map runbooks = Map.of( "payments", "1. Check pool metrics. 2. Look for slow queries on payments-db. 3. Restart payments-api only after approval.", "search", "1. Check segment merges. 2. Scale read replicas. 3. Restart is safe at any time."); public String log(String incidentId) { return logs.get(incidentId); } public String runbook(String service) { return runbooks.get(service); } public List incidentIds() { return logs.keySet().stream().sorted().toList(); } }