# 🚀 РАДИКАЛЬНОЕ РЕШЕНИЕ: Обычная установка с отключением компиляции

## ❌ Все предыдущие попытки не сработали

### Попытка #1: --ignore-scripts
**Результат:** Быстро (3-5 минут), но нет движков Prisma ❌

### Попытка #2: Prisma first → generate → install
**Результат:** `yarn install` стирает генерацию ❌

### Попытка #3: install → Prisma → generate
**Результат:** TypeScript не видит экспорты ❌

---

## ✅ РАДИКАЛЬНОЕ РЕШЕНИЕ

### Концепция

Отказываемся от `--ignore-scripts` полностью!

Вместо этого:
1. Устанавливаем ВСЕ зависимости (включая Prisma) **С postinstall**
2. Используем переменные окружения для отключения компиляции нативных модулей
3. Позволяем Prisma установить движки и сгенерировать клиент автоматически

### Код

```dockerfile
# АГРЕССИВНО отключаем ВСЕ компиляции
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV NEXT_TELEMETRY_DISABLED=1
ENV npm_config_build_from_source=false
ENV PYTHON=/usr/bin/python3
ENV npm_config_optional=false
ENV SHARP_IGNORE_GLOBAL_LIBVIPS=1
ENV CANVAS_SKIP_INSTALL=1

# Копируем файлы (нужны для Prisma)
COPY nextjs_space/ ./

# Устанавливаем ВСЕ (включая Prisma) с postinstall
RUN yarn install --network-timeout 300000 --network-concurrency 4

# Генерируем Prisma Client (если postinstall не сработал)
RUN npx prisma generate --schema=./prisma/schema.prisma
```

---

## 🎯 Почему это должно сработать

### Переменные окружения блокируют компиляцию

| Переменная | Что отключает | Экономия времени |
|------------|---------------|------------------|
| `SKIP_SASS_BINARY_DOWNLOAD_FOR_CI` | Компиляцию Sass | ~5-10 минут |
| `CYPRESS_INSTALL_BINARY=0` | Установку Cypress | ~2-3 минуты |
| `PUPPETEER_SKIP_CHROMIUM_DOWNLOAD` | Скачивание Chrome | ~1-2 минуты |
| `npm_config_build_from_source=false` | GYP компиляцию | ~10-20 минут |
| `SHARP_IGNORE_GLOBAL_LIBVIPS=1` | Компиляцию Sharp | ~3-5 минут |
| `CANVAS_SKIP_INSTALL=1` | Компиляцию Canvas | ~5-10 минут |

**Итого экономия:** ~30-50 минут

### Prisma работает нормально

- ✅ postinstall скрипт Prisma **запускается** (скачиваются движки)
- ✅ Prisma Client **генерируется** автоматически
- ✅ TypeScript **видит** все экспорты
- ✅ Сборка Next.js **проходит** без ошибок

---

## ⏱️ Ожидаемое время сборки

```
[00:00-08:00]  yarn install (с postinstall, но без компиляции)
[08:00-08:30]  prisma generate (если не запустился автоматически)
[08:30-13:00]  yarn build
[13:00-13:30]  Финализация образа

ИТОГО: 13-15 минут
```

⚠️ **Может быть дольше первого раза** (~20 минут), но не 16+ часов!

---

## 🚀 Применение

### 1. Получите обновление

```bash
cd /home/ubuntu/global_it24_landing
git pull origin master
```

Проверьте версию:
```bash
git log --oneline -1
```

Должно показать:  
`"РАДИКАЛЬНО: обычный yarn install с агрессивными ENV..."`

### 2. Очистите кэш Docker

```bash
docker system prune -a
```

⚠️ **КРИТИЧНО!** Нажмите `y` для подтверждения.

### 3. Запустите сборку

```bash
./deploy-simple.sh
```

### 4. Мониторинг

Следите за процессом:
```bash
watch -n 2 "docker ps -a | grep global_it24"
```

---

## 📊 Что ожидать в логах

### ШАГ 1: Установка зависимостей

```bash
=> [ 6/11] RUN yarn install --network-timeout 300000 ...
[1/5] 🔍  Resolving packages...
[2/5] 🚚  Fetching packages...
[3/5] 🔗  Linking dependencies...
[4/5] 🔨  Building fresh packages...  # ← Может зависнуть здесь
```

⚠️ **Если зависнет на "Building fresh packages" дольше 5 минут:**
- Переменные окружения не сработали
- Какой-то пакет все равно пытается компилироваться

**Решение:** Прервите (Ctrl+C) и сообщите мне.

### ШАГ 2: Генерация Prisma

```bash
=> [ 7/11] RUN npx prisma generate ...
✔ Generated Prisma Client (v6.7.0)
✅ Prisma Client сгенерирован
```

### ШАГ 3: Сборка Next.js

```bash
=> [ 8/11] RUN yarn build
✓ Compiled successfully
✓ Checking validity of types ...  # ← НЕ должно быть ошибок Prisma!
✓ Collecting page data ...
✓ Generating static pages
```

---

## ✅ Проверка после сборки

```bash
# Статус
./status.sh

# Логи
./logs.sh

# HTTP
curl http://localhost:3000
```

---

## 🆚 Сравнение подходов

| Подход | Время | Prisma | TypeScript | Статус |
|--------|-------|--------|------------|--------|
| Обычный install | 16+ часов | ✅ | ✅ | ⛔ Слишком долго |
| --ignore-scripts | 3-5 минут | ❌ | ❌ | ⛔ Нет движков |
| Prisma first | 8-12 минут | ❌ | ❌ | ⛔ Стирается генерация |
| install → Prisma | 8-12 минут | ✅ | ❌ | ⛔ TypeScript не видит |
| **ENV + install** | **13-15 минут** | **✅** | **✅** | **✅ Должно работать!** |

---

## ❓ Troubleshooting

### Зависает на "Building fresh packages" > 5 минут

```bash
# Прервите сборку
Ctrl+C

# Проверьте какой пакет компилируется
docker logs $(docker ps -a | grep global_it24_web | awk '{print $1}') 2>&1 | grep "Building"
```

Пришлите мне вывод!

### Ошибка "Prisma Client not found"

```bash
# Проверьте что schema.prisma на месте
ls -la /home/ubuntu/global_it24_landing/nextjs_space/prisma/schema.prisma
```

### Ошибка на TypeScript

Пришлите полный вывод шага `yarn build`.

---

## 🎯 Ключевая идея

**Не боремся с postinstall скриптами!**

Вместо этого:
- ✅ Позволяем им запускаться
- ✅ Но блокируем компиляцию через ENV
- ✅ Prisma работает (его postinstall только скачивает файлы, не компилирует)
- ✅ TypeScript видит все типы

---

## 📖 История попыток

1. **v1:** --ignore-scripts → нет движков Prisma
2. **v2:** Prisma first → стирается генерация
3. **v3:** install → Prisma → TypeScript не видит экспорты
4. **v4:** **ENV + обычный install** → *проверяем сейчас*

---

**Репозиторий:** `git.mscsrv.ru/sa/global_it24_landing.git`  
**Коммит:** "РАДИКАЛЬНО: обычный yarn install с агрессивными ENV..."

---

## 🎯 Если это не сработает

Тогда единственный вариант:
- Удалить проблемные пакеты из `package.json` (canvas, sharp, и т.д.)
- Или собирать на более мощном сервере с большим RAM

**Но я верю, что это сработает!** 🤞

**Запускайте и отправляйте результат!**
