Files
ridebus-status/shared/impact.mjs
2026-10-13 02:24:39 +03:00

20 lines
1.1 KiB
JavaScript

export function serviceImpact(service, services = []) {
if (!['down', 'degraded'].includes(service.status)) return null;
const scope = service.availabilityStatus === 'operational' && ['down', 'degraded'].includes(service.scenario?.status) ? 'scenario' : 'availability';
const message = service.impactPolicy?.[scope] || {
ru: 'Возможны ограничения в работе сервиса. Подробности уточняются.',
en: 'The service may have limitations. Details are being confirmed.',
};
const advice = service.impactPolicy?.advice || null;
const alternatives = (service.impactPolicy?.fallbacks || []).flatMap(id => {
const target = services.find(item => item.id === id);
return target?.status === 'operational' ? [{ id: target.id, name: target.name, url: target.publicUrl }] : [];
});
return { scope, message, advice, alternatives };
}
export function incidentImpact(incident, services) {
const service = services.find(item => item.id === incident.serviceId);
return service?.impactPolicy?.[incident.scope || 'availability'] || null;
}