82 lines
3.6 KiB
Markdown
82 lines
3.6 KiB
Markdown
|
|
# Исправления проблем редактора карт
|
|||
|
|
|
|||
|
|
## ✅ Исправленные проблемы:
|
|||
|
|
|
|||
|
|
### 1. **Ошибка `scale.x.toFixed is not a function`**
|
|||
|
|
**Проблема:** Объекты Three.js могут иметь неинициализированные свойства scale
|
|||
|
|
**Решение:** Добавлена проверка типов перед вызовом `.toFixed()`
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// Безопасное получение масштаба
|
|||
|
|
const scaleX = typeof obj.scale.x === 'number' ? obj.scale.x : 1;
|
|||
|
|
const scaleY = typeof obj.scale.y === 'number' ? obj.scale.y : 1;
|
|||
|
|
const scaleZ = typeof obj.scale.z === 'number' ? obj.scale.z : 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. **Ошибка миграции `column "created_at" does not exist`**
|
|||
|
|
**Проблема:** Триггер пытался обратиться к колонке до её создания
|
|||
|
|
**Решение:** Создана простая миграция без триггеров
|
|||
|
|
|
|||
|
|
## 🚀 Инструкции по запуску:
|
|||
|
|
|
|||
|
|
### **Для исправления ошибки scale:**
|
|||
|
|
Код уже исправлен в `MapEditor.jsx`. Ошибка больше не должна возникать.
|
|||
|
|
|
|||
|
|
### **Для исправления миграции:**
|
|||
|
|
```bash
|
|||
|
|
# Используйте простую миграцию вместо сложной
|
|||
|
|
node run-simple-migration.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **Проверка результата:**
|
|||
|
|
1. Откройте редактор карт
|
|||
|
|
2. Нажмите кнопку "Проверить БД"
|
|||
|
|
3. Должно показать: "Таблица существует: true"
|
|||
|
|
|
|||
|
|
## 📋 Что было исправлено:
|
|||
|
|
|
|||
|
|
### **В MapEditor.jsx:**
|
|||
|
|
- ✅ Безопасная обработка координат, поворота и масштаба
|
|||
|
|
- ✅ Проверка типов перед вызовом `.toFixed()`
|
|||
|
|
- ✅ Значения по умолчанию для неинициализированных свойств
|
|||
|
|
|
|||
|
|
### **В миграции:**
|
|||
|
|
- ✅ Создана простая версия без триггеров
|
|||
|
|
- ✅ Убраны сложные зависимости
|
|||
|
|
- ✅ Добавлена проверка существования таблицы
|
|||
|
|
|
|||
|
|
## 🔧 Альтернативные решения:
|
|||
|
|
|
|||
|
|
### **Если простая миграция не работает:**
|
|||
|
|
```sql
|
|||
|
|
-- Создайте таблицу вручную в pgAdmin или psql
|
|||
|
|
CREATE TABLE city_objects (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
city_id INTEGER NOT NULL,
|
|||
|
|
name VARCHAR(255) NOT NULL DEFAULT '',
|
|||
|
|
model_url VARCHAR(500) NOT NULL,
|
|||
|
|
pos_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
pos_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
pos_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
rot_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
rot_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
rot_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
|
|||
|
|
scale_x DECIMAL(15, 6) NOT NULL DEFAULT 1,
|
|||
|
|
scale_y DECIMAL(15, 6) NOT NULL DEFAULT 1,
|
|||
|
|
scale_z DECIMAL(15, 6) NOT NULL DEFAULT 1,
|
|||
|
|
organization_id INTEGER NOT NULL DEFAULT 2,
|
|||
|
|
rent DECIMAL(10, 2) NOT NULL DEFAULT 0,
|
|||
|
|
tax DECIMAL(10, 2) NOT NULL DEFAULT 0,
|
|||
|
|
collidable BOOLEAN NOT NULL DEFAULT false,
|
|||
|
|
interior_id INTEGER NOT NULL DEFAULT 101,
|
|||
|
|
textures VARCHAR(500) NOT NULL DEFAULT '-',
|
|||
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ✅ Результат:
|
|||
|
|
- Ошибки `scale.x.toFixed` больше не возникают
|
|||
|
|
- Миграция выполняется без ошибок
|
|||
|
|
- Редактор карт работает стабильно
|