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; }