Files
rltn/test-collider-position-saving.js

161 lines
9.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Тест исправления сохранения перемещенных коллайдеров
// Файл: 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('Попробуйте переместить старый коллайдер и сохранить изменения');