Import Vector lab project
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
# Итоговая сводка: Функционал психотипа
|
||||
|
||||
**Дата:** 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** - обновлена информация о сервисах
|
||||
|
||||
## 🌐 Доступ к сервисам
|
||||
|
||||
- **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
|
||||
|
||||
## 📋 Структура данных
|
||||
|
||||
### Вопросы в форме
|
||||
|
||||
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.99: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.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
|
||||
Reference in New Issue
Block a user