Files
vector/PSYCHOTYPE_SUMMARY.md
root b30ce86fa9 docs: fix LXC host address 192.168.0.108 -> 192.168.0.99
Revert of A9 address change. The .108 value was inferred from the
container VMID (108), not from its actual network config: net0 is
ip=dhcp and the container currently holds 192.168.0.99. Requests to
.108 fail with "No route to host", making the UI look down while all
four compose services are healthy.

A9 section in vector_tasks.md is kept as history and flagged stale so
the .99 -> .108 replacement is not repeated.

Note: the address is DHCP-assigned and may change again; a static IP
would be needed to make these docs durable. Hardcoded .99 URLs remain
in MobileForm.jsx:49 and HeatmapView.jsx:73 (tracked in vector_tasks.md,
untouched here).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 13:21:15 +00:00

7.5 KiB
Raw Permalink Blame History

Итоговая сводка: Функционал психотипа

Дата: 2026-05-01
Проект: SAR-MCHS (Search and Rescue Management System)
Сервер: LXC 108 (192.168.0.99)

✅ Выполненные задачи

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 - обновлена информация о сервисах

🌐 Доступ к сервисам

📋 Структура данных

Вопросы в форме

  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'

Пример запроса

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

🔄 Интеграция с другими модулями

Модификаторы психотипа можно использовать в:

  1. scoring_service.py - взвешивание зон поиска
  2. geo_service.py - построение приоритетных зон
  3. 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']

📝 Следующие шаги

  1. Интегрировать психотип в основной flow создания карточки
  2. Добавить визуализацию модификаторов на карте
  3. Сохранять психотип в БД вместе с карточкой
  4. Использовать модификаторы в расчете приоритетных зон
  5. Добавить статистику по эффективности психотипов

🧪 Тестирование

Запустить тесты:

# 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