161 lines
9.4 KiB
JavaScript
161 lines
9.4 KiB
JavaScript
// Тест исправления сохранения перемещенных коллайдеров
|
||
// Файл: test-collider-position-saving.js
|
||
|
||
console.log('🔧 Исправление сохранения перемещенных коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('❓ Проблема:');
|
||
console.log('Перемещаю старый коллайдер, нажимаю "сохранить", но при новом входе он стоит на том же месте');
|
||
console.log('');
|
||
|
||
console.log('🔍 Причина проблемы:');
|
||
console.log('');
|
||
|
||
console.log('1. 🆔 Отсутствие ID у коллайдеров:');
|
||
console.log(' - Старые коллайдеры загружались из JSON без ID');
|
||
console.log(' - Новые коллайдеры создавались без ID');
|
||
console.log(' - Сервер не мог различить существующие и новые коллайдеры');
|
||
console.log('');
|
||
|
||
console.log('2. 🔄 Неправильная логика сохранения:');
|
||
console.log(' - Сервер удалял ВСЕ коллайдеры и создавал заново');
|
||
console.log(' - Потеря связи между фронтендом и базой данных');
|
||
console.log(' - Новые позиции не сохранялись');
|
||
console.log('');
|
||
|
||
console.log('✅ Исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🆔 Добавление ID к коллайдерам:');
|
||
console.log(' - Старые коллайдеры получают ID из базы данных при загрузке');
|
||
console.log(' - Новые коллайдеры помечаются как id: null');
|
||
console.log(' - Дублированные коллайдеры помечаются как id: null');
|
||
console.log('');
|
||
|
||
console.log('2. 🔄 Улучшенная логика сохранения:');
|
||
console.log(' - Разделение коллайдеров на существующие (с ID) и новые (без ID)');
|
||
console.log(' - UPDATE для существующих коллайдеров');
|
||
console.log(' - INSERT для новых коллайдеров');
|
||
console.log(' - Сохранение связи между фронтендом и БД');
|
||
console.log('');
|
||
|
||
console.log('3. 🗄️ Обновление серверной логики:');
|
||
console.log(' - Фильтрация коллайдеров по наличию ID');
|
||
console.log(' - UPDATE запросы для существующих коллайдеров');
|
||
console.log(' - INSERT запросы для новых коллайдеров');
|
||
console.log(' - Логирование количества обновленных и созданных коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('🔧 Технические детали:');
|
||
console.log('');
|
||
|
||
console.log('🆔 ID система:');
|
||
console.log('- Старые коллайдеры: mesh.userData.id = c.id (из БД)');
|
||
console.log('- Новые коллайдеры: mesh.userData.id = null');
|
||
console.log('- Дублированные: mesh.userData.id = null');
|
||
console.log('- При сохранении: id: mesh.userData.id');
|
||
console.log('');
|
||
|
||
console.log('🔄 Логика сохранения:');
|
||
console.log('- existingColliders = colliders.filter(c => c.id)');
|
||
console.log('- newColliders = colliders.filter(c => !c.id)');
|
||
console.log('- UPDATE для существующих с WHERE id = $1');
|
||
console.log('- INSERT для новых без ID');
|
||
console.log('');
|
||
|
||
console.log('🗄️ Серверные изменения:');
|
||
console.log('- Разделение коллайдеров на две группы');
|
||
console.log('- UPDATE запросы для существующих');
|
||
console.log('- INSERT запросы для новых');
|
||
console.log('- Транзакционная безопасность');
|
||
console.log('');
|
||
|
||
console.log('🧪 Как тестировать исправления:');
|
||
console.log('');
|
||
|
||
console.log('1. 🔄 Перемещение существующих коллайдеров:');
|
||
console.log(' - Загрузите редактор коллизий');
|
||
console.log(' - Выберите один из старых коллайдеров');
|
||
console.log(' - Переместите его в новое место');
|
||
console.log(' - Нажмите "Сохранить сейчас"');
|
||
console.log(' - Проверьте консоль: должно появиться "💾 Сохраняем: X существующих, Y новых"');
|
||
console.log(' - Перезагрузите страницу');
|
||
console.log(' - Убедитесь, что коллайдер остался в новом месте');
|
||
console.log('');
|
||
|
||
console.log('2. 🆕 Создание новых коллайдеров:');
|
||
console.log(' - Создайте новый коллайдер');
|
||
console.log(' - Переместите его в нужное место');
|
||
console.log(' - Нажмите "Сохранить сейчас"');
|
||
console.log(' - Проверьте консоль: должно появиться сообщение о создании');
|
||
console.log(' - Перезагрузите страницу');
|
||
console.log(' - Убедитесь, что новый коллайдер сохранился');
|
||
console.log('');
|
||
|
||
console.log('3. 🔄 Дублирование коллайдеров:');
|
||
console.log(' - Выберите существующий коллайдер');
|
||
console.log(' - Нажмите "Дублировать коллайдер"');
|
||
console.log(' - Переместите дублированный коллайдер');
|
||
console.log(' - Нажмите "Сохранить сейчас"');
|
||
console.log(' - Перезагрузите страницу');
|
||
console.log(' - Убедитесь, что оба коллайдера сохранились');
|
||
console.log('');
|
||
|
||
console.log('4. 🎯 Автоматическое сохранение:');
|
||
console.log(' - Переместите коллайдер');
|
||
console.log(' - Подождите 2 секунды');
|
||
console.log(' - Проверьте консоль: "💾 Автоматическое сохранение выполнено"');
|
||
console.log(' - Перезагрузите страницу');
|
||
console.log(' - Убедитесь, что изменения сохранились');
|
||
console.log('');
|
||
|
||
console.log('🎯 Ожидаемые результаты:');
|
||
console.log('');
|
||
|
||
console.log('✅ Перемещение существующих:');
|
||
console.log('- [ ] Коллайдеры имеют ID из базы данных');
|
||
console.log('- [ ] При сохранении выполняется UPDATE');
|
||
console.log('- [ ] Позиция сохраняется в базе данных');
|
||
console.log('- [ ] После перезагрузки коллайдер остается в новом месте');
|
||
console.log('');
|
||
|
||
console.log('✅ Создание новых:');
|
||
console.log('- [ ] Новые коллайдеры помечены как id: null');
|
||
console.log('- [ ] При сохранении выполняется INSERT');
|
||
console.log('- [ ] Новый коллайдер получает ID в базе данных');
|
||
console.log('- [ ] После перезагрузки новый коллайдер загружается');
|
||
console.log('');
|
||
|
||
console.log('✅ Дублирование:');
|
||
console.log('- [ ] Дублированные коллайдеры помечены как id: null');
|
||
console.log('- [ ] При сохранении выполняется INSERT');
|
||
console.log('- [ ] Оригинал обновляется, копия создается');
|
||
console.log('- [ ] После перезагрузки оба коллайдера сохраняются');
|
||
console.log('');
|
||
|
||
console.log('✅ Автоматическое сохранение:');
|
||
console.log('- [ ] Срабатывает через 2 секунды после изменений');
|
||
console.log('- [ ] Правильно обрабатывает существующие и новые коллайдеры');
|
||
console.log('- [ ] Логирует количество обновленных и созданных');
|
||
console.log('- [ ] Сохраняет все изменения в базе данных');
|
||
console.log('');
|
||
|
||
console.log('🔍 Отладочная информация:');
|
||
console.log('');
|
||
|
||
console.log('📊 В консоли должно появляться:');
|
||
console.log('- "💾 Сохраняем: X существующих, Y новых коллайдеров"');
|
||
console.log('- "✅ Коллайдеры для города 1 сохранены в БД (X обновлено, Y новых)"');
|
||
console.log('- "💾 Автоматическое сохранение выполнено"');
|
||
console.log('');
|
||
|
||
console.log('🎯 Проверка в базе данных:');
|
||
console.log('- SELECT * FROM colliders WHERE city_id = 1;');
|
||
console.log('- Проверить updated_at для перемещенных коллайдеров');
|
||
console.log('- Проверить created_at для новых коллайдеров');
|
||
console.log('');
|
||
|
||
console.log('🚀 Исправления готовы к тестированию!');
|
||
console.log('Откройте: http://localhost:4000/enhanced-collision-editor');
|
||
console.log('Попробуйте переместить старый коллайдер и сохранить изменения');
|