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

161 lines
9.4 KiB
JavaScript
Raw Permalink Normal View History

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