import React from 'react'; import './BehavioralProfile.css'; interface BehavioralProfileProps { diagnosis_type?: string[]; has_transport?: string; age_years?: number; reason?: string; } interface ProfileCardData { id: string; title: string; color: string; recommendations: string[]; zoneModifiers: { zone: string; multiplier: number }[]; } const BehavioralProfile: React.FC = ({ diagnosis_type = [], has_transport, age_years, reason }) => { const getActiveProfiles = (): ProfileCardData[] => { const profiles: ProfileCardData[] = []; // РАС (Расстройство аутистического спектра) if (diagnosis_type.includes('РАС') || diagnosis_type.includes('аутизм')) { profiles.push({ id: 'ras', title: 'РАС (Расстройство аутистического спектра)', color: 'red', recommendations: [ 'Не кричать имя — может спрятаться от громких звуков', 'Приоритет: водоёмы, тихие места, укрытия', 'Перекрыть доступ к воде (пруды, реки, колодцы)', 'Проверить железнодорожные пути и технические помещения', 'Искать в радиусе до 5 км, часто движется по прямой' ], zoneModifiers: [ { zone: 'Водоём', multiplier: 3.0 }, { zone: 'Укрытие', multiplier: 2.0 }, { zone: 'Населённый пункт', multiplier: 0.4 } ] }); } // Эпилепсия if (diagnosis_type.includes('эпилепсия')) { profiles.push({ id: 'epilepsy', title: 'Эпилепсия', color: 'orange', recommendations: [ 'Искать близко к точке потери — радиус до 1 км', 'Проверить канавы, овраги, низины (риск падения)', 'Приоритет: водоёмы и опасные участки', 'Срочная медицинская помощь при обнаружении', 'Проверить укрытия (мог укрыться после приступа)' ], zoneModifiers: [ { zone: 'Водоём', multiplier: 3.5 }, { zone: 'Укрытие', multiplier: 2.5 }, { zone: 'Радиус поиска', multiplier: 0.6 } ] }); } // СДВГ (Синдром дефицита внимания и гиперактивности) if (diagnosis_type.includes('СДВГ') || diagnosis_type.includes('гиперактивность')) { profiles.push({ id: 'adhd', title: 'СДВГ (Гиперактивность)', color: 'yellow', recommendations: [ 'Расширенный радиус поиска — может уйти далеко', 'Приоритет: дороги, тропы, интересные объекты', 'Проверить игровые площадки, стройки, заброшенные здания', 'Может отвлечься и изменить направление', 'Искать вдоль дорог и троп' ], zoneModifiers: [ { zone: 'Дороги', multiplier: 1.6 }, { zone: 'Радиус поиска', multiplier: 1.4 } ] }); } // Деменция if (diagnosis_type.includes('деменция') || diagnosis_type.includes('Альцгеймер')) { profiles.push({ id: 'dementia', title: 'Деменция / Альцгеймер', color: 'purple', recommendations: [ 'Искать в радиусе до 2 км от дома', 'Проверить знакомые места (бывший дом, работа)', 'Приоритет: дороги, тропы (идёт по привычному маршруту)', 'Может не откликаться на имя', 'Проверить водоёмы и опасные участки' ], zoneModifiers: [ { zone: 'Дороги', multiplier: 1.8 }, { zone: 'Исторические места', multiplier: 2.0 }, { zone: 'Водоём', multiplier: 1.5 } ] }); } // Велосипед if (has_transport === 'велосипед') { profiles.push({ id: 'bicycle', title: 'Транспорт: Велосипед', color: 'blue', recommendations: [ 'Радиус поиска ×5 — может уехать на 10-25 км', 'Приоритет: дороги, велодорожки, тропы', 'Запросить записи с камер на дорогах', 'Проверить популярные велосипедные маршруты', 'Лес и бездорожье менее вероятны' ], zoneModifiers: [ { zone: 'Радиус поиска', multiplier: 5.0 }, { zone: 'Дороги', multiplier: 1.8 }, { zone: 'Лес', multiplier: 0.8 } ] }); } // Автомобиль if (has_transport === 'автомобиль' || has_transport === 'машина') { profiles.push({ id: 'car', title: 'Транспорт: Автомобиль', color: 'blue', recommendations: [ 'Радиус поиска ×10 — может уехать на 50+ км', 'Запросить записи с камер ГИБДД и дорожных камер', 'Проверить заправки, парковки, придорожные кафе', 'Ориентация на дороги и трассы', 'Розыск по номеру автомобиля' ], zoneModifiers: [ { zone: 'Радиус поиска', multiplier: 10.0 }, { zone: 'Дороги', multiplier: 2.5 }, { zone: 'Лес', multiplier: 0.3 } ] }); } // Подросток, ушедший из дома if (age_years && age_years >= 13 && age_years <= 17 && (reason?.includes('ушёл из дома') || reason?.includes('конфликт'))) { profiles.push({ id: 'runaway', title: 'Подросток: Уход из дома', color: 'gray', recommendations: [ 'Розыск через соцсети и друзей', 'Проверить дома друзей, торговые центры, вокзалы', 'Лес и удалённые места менее вероятны', 'Может иметь телефон — запросить геолокацию', 'Проверить популярные места встреч подростков' ], zoneModifiers: [ { zone: 'Населённый пункт', multiplier: 2.0 }, { zone: 'Лес', multiplier: 0.3 }, { zone: 'Дороги', multiplier: 1.5 } ] }); } // Грибник if (reason?.includes('грибы') || reason?.includes('грибник')) { profiles.push({ id: 'mushroom', title: 'Активность: Сбор грибов', color: 'green', recommendations: [ 'Приоритет: лесные массивы, особенно смешанные леса', 'Радиус до 3 км от точки входа в лес', 'Проверить популярные грибные места', 'Может углубиться в лес, потеряв ориентацию', 'Искать вдоль просек и лесных дорог' ], zoneModifiers: [ { zone: 'Лес', multiplier: 3.0 }, { zone: 'Дороги', multiplier: 0.6 }, { zone: 'Радиус поиска', multiplier: 1.2 } ] }); } // Охотник if (reason?.includes('охота') || reason?.includes('охотник')) { profiles.push({ id: 'hunter', title: 'Активность: Охота', color: 'green', recommendations: [ 'Радиус до 5-10 км — охотники перемещаются активно', 'Приоритет: лесные массивы, поля, болота', 'Проверить охотничьи вышки, избушки, кормушки', 'Может иметь оружие — соблюдать осторожность', 'Искать вдоль звериных троп и просек' ], zoneModifiers: [ { zone: 'Лес', multiplier: 2.5 }, { zone: 'Радиус поиска', multiplier: 2.0 }, { zone: 'Укрытие', multiplier: 1.5 } ] }); } return profiles; }; const activeProfiles = getActiveProfiles(); if (activeProfiles.length === 0) { return null; } return (

Поведенческие профили

{activeProfiles.map((profile) => (

{profile.title}

Рекомендации:
    {profile.recommendations.map((rec, idx) => (
  • = 2 ? 'mobile-hidden' : ''}> {rec}
  • ))}
Модификаторы зон:
{profile.zoneModifiers.map((mod, idx) => (
{mod.zone}: ×{mod.multiplier.toFixed(1)}
))}
))}
); }; export default BehavioralProfile;