7.5 KiB
7.5 KiB
Итоговая сводка: Функционал психотипа
Дата: 2026-05-01
Проект: SAR-MCHS (Search and Rescue Management System)
Сервер: LXC 108 (192.168.0.99)
✅ Выполненные задачи
Backend (Полностью готов)
-
Сервис психотипа -
backend/services/psychotype_service.py- 3 функции: detect_psychotype, get_psychotype_modifiers, get_search_recommendations
- 5 психотипов с модификаторами зон
- Основано на методике Рындиной О.Г., Ивановой О.Ю. (2015)
-
API Endpoint -
POST /api/v1/analyze/psychotype- ✅ Работает и протестирован
- Возвращает психотип, модификаторы, рекомендации
- Валидация входных данных
-
Тесты - Все психотипы протестированы:
- 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 (Полностью готов)
-
Компонент формы -
frontend/src/components/MobileForm.jsx- Блок психотипа с 4 вопросами
- Touch-friendly кнопки (min 52px)
- Адаптивный дизайн
- Все поля необязательные
-
Стили -
frontend/src/components/MobileForm.css- Мобильная оптимизация
- Крупные кнопки для сенсорных экранов
- Визуальная обратная связь
-
Интеграция - App.js обновлен для показа формы
Документация
- PSYCHOTYPE_API.md - полная документация API
- MOBILE_FORM_README.md - руководство по использованию формы
- SERVICES_README.md - обновлена информация о сервисах
🌐 Доступ к сервисам
- Frontend: http://192.168.0.99:3000
- Backend API: http://192.168.0.99:8000
- API Docs: http://192.168.0.99:8000/docs
- Adminer (БД): http://192.168.0.99:8080
📋 Структура данных
Вопросы в форме
-
Как ведёт себя в незнакомой обстановке?
- Активно исследует →
unfamiliar_env: 'explore' - Ждёт →
unfamiliar_env: 'wait' - Замирает →
unfamiliar_env: 'freeze' - Паникует →
unfamiliar_env: 'panic'
- Активно исследует →
-
Реакция на неудачи?
- Злится, кричит →
stress_reaction: 'active' - Плачет, замыкается →
stress_reaction: 'cry' - Спокойно ищет выход →
stress_reaction: 'calm'
- Злится, кричит →
-
Лидер или ведомый?
- Лидер →
group_role: 'leader' - Иногда →
group_role: 'sometimes' - Всегда ведомый →
group_role: 'follower'
- Лидер →
-
Любит рисковать?
- Очень →
risk_taking: 'high' - Иногда →
risk_taking: 'medium' - Нет, осторожный →
risk_taking: 'low'
- Очень →
Пример запроса
curl -X POST http://192.168.0.99:8000/api/v1/analyze/psychotype \
-H "Content-Type: application/json" \
-d '{
"stress_reaction": "cry",
"group_role": "follower",
"risk_taking": "low",
"unfamiliar_env": "freeze"
}'
Пример ответа
{
"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 |
🔄 Интеграция с другими модулями
Модификаторы психотипа можно использовать в:
- scoring_service.py - взвешивание зон поиска
- geo_service.py - построение приоритетных зон
- distance_service.py - корректировка максимальной дистанции
Пример интеграции
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']
📝 Следующие шаги
- Интегрировать психотип в основной flow создания карточки
- Добавить визуализацию модификаторов на карте
- Сохранять психотип в БД вместе с карточкой
- Использовать модификаторы в расчете приоритетных зон
- Добавить статистику по эффективности психотипов
🧪 Тестирование
Запустить тесты:
# Backend тесты
pct exec 108 -- bash /root/test_psychotype_flow.sh
# Проверка frontend
curl http://192.168.0.99:3000
# Проверка API
curl http://192.168.0.99: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