feat: establish NekoNest Cloud control and relay
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
export type IncidentSeverity = "maintenance" | "degraded" | "outage";
|
||||
|
||||
export type ServiceStatusLevel =
|
||||
| "operational"
|
||||
| "maintenance"
|
||||
| "degraded"
|
||||
| "outage";
|
||||
|
||||
const severityRank: Record<IncidentSeverity, number> = {
|
||||
maintenance: 1,
|
||||
degraded: 2,
|
||||
outage: 3,
|
||||
};
|
||||
|
||||
export function deriveServiceStatus(
|
||||
incidents: ReadonlyArray<{ severity: IncidentSeverity; status: string }>,
|
||||
): ServiceStatusLevel {
|
||||
let selected: IncidentSeverity | null = null;
|
||||
for (const incident of incidents) {
|
||||
if (incident.status !== "active") continue;
|
||||
if (!selected || severityRank[incident.severity] > severityRank[selected]) {
|
||||
selected = incident.severity;
|
||||
}
|
||||
}
|
||||
return selected ?? "operational";
|
||||
}
|
||||
Reference in New Issue
Block a user