# 2026-05-19 — Статическая страница «О покупке» (удаление админ-CRUD)

## Цель

Убрать ручное наполнение информационной страницы админом через `InfoPageBlock` CRUD.
Заменить на статическую страницу с хардкод-контентом в React-компонентах: схемы процессов,
пошаговые инструкции, карточки доставки, список оплат, условия возврата.

## Что удаляется

| Файл/директория | Действие |
|---|---|
| `client/src/pages/admin-info/` | Удалить целиком (AdminInfoPage + index.ts) |
| `client/src/entities/info/` | Удалить целиком (api, model, index.ts) |
| `server/src/routes/api/info-page.js` | Удалить целиком |
| `server/src/routes/api.js` | Убрать `import` + вызов `registerInfoPageRoutes` |
| `server/prisma/schema.prisma` | Удалить модель `InfoPageBlock` и связанный индекс |
| `client/src/pages/admin-layout/ui/AdminLayoutPage.tsx` | Убрать пункт меню «Инфо-страница», импорт и роут |
| Миграция `20260503144425_...` | Не трогать, Prisma обработает через `db:migrate` |

После удаления модели Prisma нужно выполнить `npm run db:migrate` в `server/`.

## Что остаётся

- Публичный роут `GET /api/info-page/blocks` удаляется — страница больше не ходит на сервер
- Роут `/info` в `client/src/app/routes/index.tsx` остаётся как есть
- Ссылка «О покупке» в футере `MainLayout.tsx` остаётся как есть

## Новая структура страницы

```
client/src/pages/info/
  ui/
    InfoPage.tsx                    -- контейнер: заголовок + секции
    sections/
      HowToOrderSection.tsx         -- Stepper: 5 шагов покупки
      DeliverySection.tsx           -- Grid-карточки: самовывоз, курьер, почта
      PaymentSection.tsx            -- List со способами оплаты
      ReturnsSection.tsx            -- Paper-блоки: возврат, гарантия
  index.ts                          -- export { InfoPage }
```

## Дизайн секций

### InfoPage (контейнер)

- Typography `variant="h4"`: «Информация для покупателей»
- Typography `color="text.secondary"` с текущим подзаголовком
- Секции рендерятся последовательно с `Stack spacing={4}`

### HowToOrderSection

- MUI `Stepper` вертикальный, `activeStep=-1` (все шаги видны, не активные)
- 5 шагов с `StepLabel`, каждый содержит:
  - Заголовок шага
  - Пояснительный текст
  - Иконку через `StepIconComponent` или проп icon в `Step`

Шаги:
1. «Выберите товары» (ShoppingCart) — Найдите нужное в каталоге, добавьте в корзину
2. «Проверьте корзину» (ClipboardList) — Проверьте состав заказа, количество и итоговую сумму
3. «Укажите контакты и адрес» (Mail) — Заполните имя, телефон, email и адрес доставки
4. «Выберите доставку и оплату» (Truck) — Выберите удобный способ получения и оплаты
5. «Подтвердите заказ» (CheckCircle) — Проверьте всё ещё раз и нажмите «Оформить заказ»

### DeliverySection

- Три карточки в `Grid container spacing={2}` с `Paper variant="outlined"`:
  - **Самовывоз** (Store) — Бесплатно. Адрес. Перед визитом согласуем время.
  - **Курьер по городу** (Truck) — Доставка в пределах города. Сроки и стоимость уточняются.
  - **Почта / СДЭК** (Package) — Отправка с трек-номером. Стоимость по тарифу перевозчика.

### PaymentSection

- MUI `List` с `ListItem` элементами, каждый с `ListItemIcon`:
  - Банковская карта онлайн (CreditCard)
  - Оплата при получении (Banknote)
- Текст: «Оплата происходит после подтверждения заказа мастером.»

### ReturnsSection

- Два `Paper variant="outlined"` блока:
  - «Возврат» — Если товар не соответствует описанию или есть дефект, свяжитесь с нами. Мы заменим изделие или вернём деньги.
  - «Гарантия» — Мы отвечаем за качество каждого изделия. Все дефекты, возникшие не по вине покупателя, устраняем или меняем изделие.

## Константы

Использовать существующие:
- `PICKUP_ADDRESS_FULL`, `PICKUP_COORDINATES` из `@/shared/constants/pickup-point`
- `STORE_EMAIL` из `@/shared/constants/store`
- Для способов оплаты — текст захардкожен, т.к. payment-method из shared/constants содержит только ключи

## Иконки

Все иконки из `lucide-react`: ShoppingCart, ClipboardList, Mail, Truck, CheckCircle, Store, Package, CreditCard, Banknote.

## Что НЕ входит в scope

- Сохранение обратной совместимости с текущей динамической страницей
- Миграция существующих данных InfoPageBlock (они просто удаляются)
- Автообновление контента админом (страница статическая)
- Телефоны поддержки (если понадобятся — отдельной задачей)
