Import Vector lab project

This commit is contained in:
root
2026-06-06 18:31:55 +00:00
commit fcc22063ed
105 changed files with 31639 additions and 0 deletions
+183
View File
@@ -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