# Итоговая сводка: Функционал психотипа **Дата:** 2026-05-01 **Проект:** SAR-MCHS (Search and Rescue Management System) **Сервер:** LXC 108 (192.168.0.108) ## ✅ Выполненные задачи ### Backend (Полностью готов) 1. **Сервис психотипа** - `backend/services/psychotype_service.py` - 3 функции: detect_psychotype, get_psychotype_modifiers, get_search_recommendations - 5 психотипов с модификаторами зон - Основано на методике Рындиной О.Г., Ивановой О.Ю. (2015) 2. **API Endpoint** - `POST /api/v1/analyze/psychotype` - ✅ Работает и протестирован - Возвращает психотип, модификаторы, рекомендации - Валидация входных данных 3. **Тесты** - Все психотипы протестированы: - Dominant: зона 1500-2500м ×1.4, модель chaotic_far - Anxious: зона 0-500м ×1.4, модель stay - Harmonic: равномерное распределение, модель linear_landmark - Introvert Passive: зона 0-500м ×1.3, модель stay_hidden - Introvert Active: зона 500-2500м ×1.2, модель linear_landmark ### Frontend (Полностью готов) 1. **Компонент формы** - `frontend/src/components/MobileForm.jsx` - Блок психотипа с 4 вопросами - Touch-friendly кнопки (min 52px) - Адаптивный дизайн - Все поля необязательные 2. **Стили** - `frontend/src/components/MobileForm.css` - Мобильная оптимизация - Крупные кнопки для сенсорных экранов - Визуальная обратная связь 3. **Интеграция** - App.js обновлен для показа формы ### Документация 1. **PSYCHOTYPE_API.md** - полная документация API 2. **MOBILE_FORM_README.md** - руководство по использованию формы 3. **SERVICES_README.md** - обновлена информация о сервисах ## 🌐 Доступ к сервисам - **Frontend:** http://192.168.0.108:3000 - **Backend API:** http://192.168.0.108:8000 - **API Docs:** http://192.168.0.108:8000/docs - **Adminer (БД):** http://192.168.0.108:8080 ## 📋 Структура данных ### Вопросы в форме 1. **Как ведёт себя в незнакомой обстановке?** - Активно исследует → `unfamiliar_env: 'explore'` - Ждёт → `unfamiliar_env: 'wait'` - Замирает → `unfamiliar_env: 'freeze'` - Паникует → `unfamiliar_env: 'panic'` 2. **Реакция на неудачи?** - Злится, кричит → `stress_reaction: 'active'` - Плачет, замыкается → `stress_reaction: 'cry'` - Спокойно ищет выход → `stress_reaction: 'calm'` 3. **Лидер или ведомый?** - Лидер → `group_role: 'leader'` - Иногда → `group_role: 'sometimes'` - Всегда ведомый → `group_role: 'follower'` 4. **Любит рисковать?** - Очень → `risk_taking: 'high'` - Иногда → `risk_taking: 'medium'` - Нет, осторожный → `risk_taking: 'low'` ### Пример запроса ```bash curl -X POST http://192.168.0.108:8000/api/v1/analyze/psychotype \ -H "Content-Type: application/json" \ -d '{ "stress_reaction": "cry", "group_role": "follower", "risk_taking": "low", "unfamiliar_env": "freeze" }' ``` ### Пример ответа ```json { "psychotype": "anxious", "modifiers": { "zone_0_500": 1.4, "zone_500_1500": 1.1, "zone_1500_2500": 0.5, "zone_2500plus": 0.3, "movement_model": "stay", "description": "Тревожный тип: минимальное движение, остается близко к точке потери" }, "recommendations": { "priority_zones": "Ближняя зона (0-500м) - критически важна", "search_pattern": "Тщательный осмотр ближайшей территории", "key_locations": "Укрытия, углубления, густая растительность рядом с точкой потери", "communication": "Спокойные голосовые сигналы, избегать резких звуков" } } ``` ## 🎯 Психотипы и их характеристики | Психотип | Триггер | Зона 0-500м | Зона 1500-2500м | Модель движения | |----------|---------|-------------|-----------------|-----------------| | **Dominant** | active + leader + high | 0.7 (низкий) | 1.4 (высокий) | chaotic_far | | **Harmonic** | calm + leader + low | 0.8 | 1.1 | linear_landmark | | **Anxious** | cry + follower + low | 1.4 (высокий) | 0.5 (низкий) | stay | | **Introvert Passive** | freeze + follower + low | 1.3 (высокий) | 0.6 (низкий) | stay_hidden | | **Introvert Active** | active + leader + medium | 0.8 | 1.2 | linear_landmark | ## 🔄 Интеграция с другими модулями Модификаторы психотипа можно использовать в: 1. **scoring_service.py** - взвешивание зон поиска 2. **geo_service.py** - построение приоритетных зон 3. **distance_service.py** - корректировка максимальной дистанции ### Пример интеграции ```python from services.psychotype_service import detect_psychotype, get_psychotype_modifiers # Определяем психотип psychotype = detect_psychotype(answers) modifiers = get_psychotype_modifiers(psychotype) # Применяем к базовым вероятностям base_prob = 0.5 adjusted_prob = base_prob * modifiers['zone_0_500'] ``` ## 📝 Следующие шаги 1. Интегрировать психотип в основной flow создания карточки 2. Добавить визуализацию модификаторов на карте 3. Сохранять психотип в БД вместе с карточкой 4. Использовать модификаторы в расчете приоритетных зон 5. Добавить статистику по эффективности психотипов ## 🧪 Тестирование Запустить тесты: ```bash # Backend тесты pct exec 108 -- bash /root/test_psychotype_flow.sh # Проверка frontend curl http://192.168.0.108:3000 # Проверка API curl http://192.168.0.108:8000/api/v1/analyze/psychotype \ -H "Content-Type: application/json" \ -d '{"stress_reaction":"active","group_role":"leader","risk_taking":"high","unfamiliar_env":"explore"}' ``` ## 📚 Документация - `PSYCHOTYPE_API.md` - API документация - `MOBILE_FORM_README.md` - документация формы - `SERVICES_README.md` - обзор всех сервисов - `backend/services/psychotype_service.py` - docstrings в коде --- **Статус:** ✅ Полностью готово к использованию **Протестировано:** Backend API, Frontend компонент, Интеграция **Источник методики:** Рындина О.Г., Иванова О.Ю., Чебоксары, 2015