163 lines
5.3 KiB
Markdown
163 lines
5.3 KiB
Markdown
# Инструкция по добавлению категорий тарифов
|
||
|
||
## ⚠️ ВАЖНО: Выберите один из вариантов миграции
|
||
|
||
### Вариант 1: Безопасная миграция (рекомендуется)
|
||
Сохраняет существующие серверы и тарифы, добавляет новые тарифы.
|
||
|
||
**Файл:** `backend/prisma/safe_tariff_migration.sql`
|
||
|
||
### Вариант 2: Полная очистка (только для разработки!)
|
||
Удаляет ВСЕ серверы, платежи и тарифы. Начинает с чистого листа.
|
||
|
||
**Файл:** `backend/prisma/clean_slate_migration.sql`
|
||
|
||
---
|
||
|
||
## 📋 Порядок действий (Вариант 1 - Безопасная миграция):
|
||
|
||
### 1. Подключитесь к MySQL
|
||
|
||
```bash
|
||
mysql -u root -p ospabhost
|
||
```
|
||
|
||
Или через phpMyAdmin / Adminer / другой клиент БД.
|
||
|
||
### 2. Проверьте текущее состояние
|
||
|
||
```sql
|
||
-- Посмотрите, какие тарифы используются
|
||
SELECT
|
||
t.id,
|
||
t.name,
|
||
COUNT(s.id) as servers_count
|
||
FROM `tariff` t
|
||
LEFT JOIN `server` s ON s.tariffId = t.id
|
||
GROUP BY t.id, t.name;
|
||
```
|
||
|
||
### 3. Примените безопасную миграцию
|
||
|
||
```bash
|
||
source backend/prisma/safe_tariff_migration.sql
|
||
```
|
||
|
||
Или скопируйте и выполните вручную.
|
||
|
||
**Этот скрипт:**
|
||
- ✅ Добавит поле `category` в таблицу `tariff`
|
||
- ✅ Обновит существующие тарифы (присвоит им `category = 'vps'`)
|
||
- ✅ Удалит только неиспользуемые тарифы
|
||
- ✅ Добавит 17 новых тарифов с категориями
|
||
|
||
### 4. Проверьте результат
|
||
|
||
```sql
|
||
SELECT * FROM `tariff` ORDER BY `category`, `price`;
|
||
```
|
||
|
||
---
|
||
|
||
## 🔥 Порядок действий (Вариант 2 - Полная очистка):
|
||
|
||
### ⚠️ ВНИМАНИЕ! Это удалит ВСЕ данные о серверах!
|
||
|
||
Используйте только если:
|
||
- Это тестовая/dev среда
|
||
- Вы хотите начать с чистого листа
|
||
- У вас есть резервная копия БД
|
||
|
||
### 1. Сделайте резервную копию!
|
||
|
||
```bash
|
||
mysqldump -u root -p ospabhost > backup_before_migration.sql
|
||
```
|
||
|
||
### 2. Примените миграцию
|
||
|
||
```bash
|
||
mysql -u root -p ospabhost < backend/prisma/clean_slate_migration.sql
|
||
```
|
||
|
||
**Этот скрипт:**
|
||
- ❌ Удалит все метрики серверов
|
||
- ❌ Удалит все платежи
|
||
- ❌ Удалит все серверы
|
||
- ❌ Удалит все тарифы
|
||
- ✅ Добавит поле `category`
|
||
- ✅ Добавит 17 новых тарифов
|
||
|
||
### 3. Сбросьте Prisma клиент (опционально)
|
||
|
||
```bash
|
||
cd backend
|
||
npx prisma generate
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 Новые тарифы (17 шт):
|
||
|
||
### VPS/VDS (6 тарифов):
|
||
|
||
```bash
|
||
cd backend
|
||
npm start
|
||
# или
|
||
node dist/src/index.js
|
||
```
|
||
|
||
## 🎨 Что изменилось на frontend:
|
||
|
||
### Новая страница тарифов:
|
||
- ✅ **3 категории**: VPS/VDS, Хостинг, S3 Хранилище
|
||
- ✅ **Вкладки** для переключения между категориями
|
||
- ✅ **Иконки** для каждой категории
|
||
- ✅ **Карточки** с галочками для списка функций
|
||
- ✅ **Hero секция** с описанием
|
||
- ✅ **Секция преимуществ** внизу
|
||
- ✅ **CTA секция** с призывом к действию
|
||
|
||
### Дизайн:
|
||
- Современный многосекционный layout
|
||
- Sticky-табы для удобной навигации
|
||
- Hover-эффекты на карточках
|
||
- Градиентные фоны для Hero и CTA секций
|
||
- Адаптивный дизайн для всех устройств
|
||
|
||
## 📦 Размеры после сборки:
|
||
|
||
- **index.html**: 6.71 kB (gzip: 2.46 kB)
|
||
- **CSS**: 66.64 kB (gzip: 10.64 kB)
|
||
- **JS main**: 938.19 kB (gzip: 237.62 kB)
|
||
- **React vendor**: 173.20 kB (gzip: 57.00 kB)
|
||
- **UI vendor**: 17.26 kB (gzip: 5.99 kB)
|
||
|
||
## 🔧 Изменённые файлы:
|
||
|
||
### Backend:
|
||
- ✅ `backend/prisma/schema.prisma` - добавлено поле `category`
|
||
- ✅ `backend/prisma/manual_migration_category.sql` - миграция БД
|
||
- ✅ `backend/prisma/add_tariff_categories.sql` - новые тарифы
|
||
|
||
### Frontend:
|
||
- ✅ `frontend/src/pages/tariffs.tsx` - полностью переделана страница
|
||
|
||
## 📝 Примечания:
|
||
|
||
1. **Старые тарифы** не удаляются автоматически. Если нужно их удалить:
|
||
```sql
|
||
DELETE FROM `tariff` WHERE `category` IS NULL;
|
||
```
|
||
|
||
2. **Category enum**: Доступные значения - `vps`, `hosting`, `s3`
|
||
|
||
3. **API**: Backend автоматически вернёт поле `category` в ответе `/api/tariff`
|
||
|
||
4. **Фильтрация**: Frontend фильтрует тарифы по категории на клиентской стороне
|
||
|
||
## 🚀 Готово к деплою!
|
||
|
||
После применения SQL и перезапуска backend всё будет работать.
|