648 lines
47 KiB
Markdown
648 lines
47 KiB
Markdown
# План действий по созданию сайта Рыбсток
|
|
|
|
## 1. Цель проекта
|
|
|
|
Создать максимально готовый интернет-магазин продуктов питания Рыбсток под ключ: быстрая витрина, удобная корзина, простое оформление заказа без регистрации, логичная гибкая админка, работа с фасовками, промокодами, доставкой по Москве и Московской области, выгрузкой прайс-листа и живыми блоками доверия.
|
|
|
|
Главный покупатель: частное лицо, семья, соседи, люди, которые покупают продукты домой крупными упаковками. Юридические лица, кафе, рестораны и магазины тоже учитываются, но интерфейс должен быть в первую очередь простым, понятным и не перегруженным.
|
|
|
|
Ключевой принцип: сайт должен быть удобен людям разного возраста, включая пожилых покупателей. Оформление заказа должно быть максимально простым, без лишних условий, регистрации, оплаты на сайте и сложных шагов.
|
|
|
|
## 2. Основные сущности сайта
|
|
|
|
### 2.1. Товары
|
|
|
|
- Около 1000 товаров.
|
|
- У товара могут быть разные фасовки и для каждой фасовки своя цена.
|
|
- Пример: горбуша неразделанная:
|
|
- упаковка 20 кг по 580 руб./кг;
|
|
- пласт 10 кг по 600 руб./кг.
|
|
- Покупка возможна только кратно выбранной фасовке.
|
|
- Если выбрана фасовка 10 кг, кнопки плюс/минус меняют количество на 10 кг.
|
|
- Для каждой фасовки хранить:
|
|
- название фасовки;
|
|
- количество;
|
|
- единицу измерения;
|
|
- цену за базовую единицу;
|
|
- цену за всю фасовку;
|
|
- доступность;
|
|
- признак публикации.
|
|
- Базовая единица по умолчанию: кг.
|
|
- В админке должна быть возможность выбрать другую базовую единицу: кг, штука, литр, упаковка и т.д.
|
|
|
|
### 2.2. Отображение цен
|
|
|
|
- Если товар продается весом и фасовка больше 1 кг, показывать цену за кг и цену за фасовку.
|
|
- Если товар имеет единственную фасовку 1 кг, не дублировать цену за упаковку 1 кг.
|
|
- Если товар штучный или имеет единственную фиксированную фасовку, например банка 320 г, показывать цену за упаковку 320 г и не пересчитывать за кг.
|
|
- В карточке-превью и в полной карточке товара должен быть выбор фасовки.
|
|
- Над выбором фасовки текст: "Выберите доступную фасовку".
|
|
- При переключении фасовки цена должна меняться сразу.
|
|
|
|
### 2.3. Категории
|
|
|
|
Основные категории должны строго соответствовать старому сайту, чтобы сохранить дерево, ссылки, индексацию и целостность переноса:
|
|
|
|
- Рыба;
|
|
- Рыбное филе;
|
|
- Рыбные стейки;
|
|
- Охлажденная рыба;
|
|
- Малосольная рыба;
|
|
- Копченая рыба;
|
|
- Вяленая рыба;
|
|
- Морепродукты;
|
|
- Фрукты, овощи, ягоды, грибы;
|
|
- Икра;
|
|
- Бакалея;
|
|
- Полуфабрикаты;
|
|
- Мясная гастрономия;
|
|
- Мясо;
|
|
- Сыры;
|
|
- Молочная продукция.
|
|
|
|
Нужны категории и подкатегории. Подкатегории визуально отделить от категорий, например более мягким цветом, меньшим шрифтом или отступом. Для сохранения индексации нужны точные старые URL/slug каждой категории и товара; если они отличаются от текущих slug в seed-файле, их нужно заменить перед переносом.
|
|
|
|
## 3. Структура сайта
|
|
|
|
### 3.1. Главная страница
|
|
|
|
Первый экран:
|
|
|
|
- Название/позиционирование Рыбсток.
|
|
- Заголовок про ассортимент: рыба, готовая продукция, полуфабрикаты, мясо, сыры, ягоды, овощи с доставкой по Москве и Московской области.
|
|
- Заметное сообщение: "Работаем без предоплаты. Оплата только при получении товара."
|
|
- Поиск по сайту.
|
|
- Быстрый переход в полный каталог.
|
|
- Сам каталог должен быть уже открыт на главной странице, чтобы покупатель сразу видел товары и не делал лишних переходов.
|
|
- Понятная кнопка "Доставка и оплата".
|
|
- Верхнее меню с категориями и подкатегориями.
|
|
|
|
Первый скролл:
|
|
|
|
- Три понятных блока с картинками:
|
|
- бесплатная доставка внутри МКАД;
|
|
- доставка за МКАД;
|
|
- самовывоз.
|
|
- Блок популярных товаров: около 10 товаров из разных категорий и подкатегорий.
|
|
- Популярные товары должны быть частично случайными при каждом посещении, но с приоритетом более покупаемых за последнее время.
|
|
- В админке нужна возможность вручную закреплять или полностью собирать популярные товары.
|
|
- Ссылка на полный каталог.
|
|
|
|
Блок доверия и свежести:
|
|
|
|
- Рейтинг Яндекс.Карт.
|
|
- Отзывы Яндекс.Карт только 5 звезд.
|
|
- Автоматическая дата последнего поступления товара: текущий рабочий день.
|
|
- В выходные и официальные праздничные дни дата должна показывать последний рабочий день.
|
|
- Виртуальные счетчики температуры:
|
|
- морозильная камера: примерно от -18 до -20 градусов;
|
|
- холодильная камера: примерно от -2 до +1 градуса.
|
|
- Температура должна периодически слегка меняться и выглядеть реалистично.
|
|
- Текст про склад:
|
|
- морозильные камеры более 1800 кв. м;
|
|
- холодильные камеры более 500 кв. м.
|
|
- Небольшой, но убедительный модуль фото склада.
|
|
|
|
Дополнительные блоки:
|
|
|
|
- Акции: товары выбираются вручную в админке.
|
|
- Мягкое описание для частных покупателей.
|
|
- Неброское упоминание для юридических лиц: работаем с юрлицами, безналичный расчет +8%, счета от 15000 руб.
|
|
- Неброское упоминание систем Меркурий и Честный знак: часть ассортимента проходит через эти системы.
|
|
- Небольшая ссылка на условия возврата.
|
|
|
|
### 3.2. Полный каталог
|
|
|
|
- Слева лаконичное закрепленное меню категорий и подкатегорий.
|
|
- Меню должно оставаться доступным при скролле.
|
|
- В основной области сразу отображаются товары с пагинацией или удобной подгрузкой.
|
|
- Карточка-превью товара должна включать:
|
|
- изображение;
|
|
- название;
|
|
- выбор фасовки;
|
|
- цену за базовую единицу, если это уместно;
|
|
- цену за выбранную фасовку;
|
|
- кнопку добавления в корзину именно выбранной фасовки;
|
|
- кнопку сравнения;
|
|
- доступность/публикацию.
|
|
|
|
### 3.3. Страница категории и подкатегории
|
|
|
|
- Слева закрепленное меню категорий и подкатегорий.
|
|
- Сначала товары, потом SEO/описательный текст, чтобы текст не мешал покупателю выбирать.
|
|
- Карточки товара такие же, как в полном каталоге.
|
|
|
|
### 3.4. Страница товара
|
|
|
|
- Фото товара.
|
|
- Название.
|
|
- Выбор фасовки.
|
|
- Цена за базовую единицу, если применимо.
|
|
- Цена за выбранную фасовку.
|
|
- Количество с шагом выбранной фасовки.
|
|
- Кнопка "В корзину".
|
|
- Описание и информация о товаре.
|
|
- Блок "С этим товаром приобретают" не менее 15 товаров.
|
|
- Товары в блоке могут быть случайными, но желательно учитывать совместные покупки и категорию.
|
|
|
|
### 3.5. Сравнение товаров
|
|
|
|
- До 10 товаров в списке сравнения.
|
|
- Формат: простой список с превью.
|
|
- Из списка можно перейти к товару, добавить товар в корзину, удалить товар из сравнения.
|
|
- Внизу кнопка "Сбросить список сравнения".
|
|
- Логика должна быть похожа на избранное/отложенные товары, чтобы покупатель мог сначала собрать варианты, а потом выбрать.
|
|
|
|
### 3.6. Поиск
|
|
|
|
- Очень понятная строка поиска.
|
|
- Морфологический поиск: склонения, формы слов, ошибки, ассоциации.
|
|
- Голосовой ввод.
|
|
- Нужна короткая инструкция рядом с поиском или внутри модального окна помощи.
|
|
- Поиск должен быть удобен пожилым пользователям: крупное поле, понятные подсказки, простые результаты.
|
|
|
|
### 3.7. Корзина
|
|
|
|
- Корзина без регистрации.
|
|
- Изменение количества только кратно фасовке.
|
|
- Промокод:
|
|
- поле ввода;
|
|
- кнопка применить;
|
|
- кнопка аннулировать промокод.
|
|
- Указать, что промокоды действуют при наличном расчете.
|
|
- Указать, что весовые товары могут быть пересчитаны при передаче клиенту.
|
|
- Минимальную сумму заказа не показывать и не блокировать оформление.
|
|
- Покупатель может оформить любой заказ, после чего менеджер свяжется и при необходимости уточнит детали.
|
|
|
|
### 3.8. Оформление заказа
|
|
|
|
Обязательные поля:
|
|
|
|
- Имя;
|
|
- телефон;
|
|
- тип получения:
|
|
- доставка внутри МКАД;
|
|
- доставка за МКАД;
|
|
- самовывоз.
|
|
|
|
Необязательные поля:
|
|
|
|
- адрес;
|
|
- email;
|
|
- комментарий;
|
|
- желаемая дата получения.
|
|
|
|
Не нужно:
|
|
|
|
- ФИО;
|
|
- выбор оплаты;
|
|
- оплата на сайте;
|
|
- SMS.
|
|
|
|
На странице можно просто описать доступные способы оплаты:
|
|
|
|
- для физических лиц: наличные или QR-код при получении;
|
|
- заказ на сайте является предзаказом;
|
|
- оплата не требуется ни на одной странице сайта.
|
|
|
|
После оформления:
|
|
|
|
- если указан email, клиенту отправляется письмо с заказом, суммой, фасовками и составом заказа;
|
|
- администратору отправляется копия заказа на email, который будет указан позже;
|
|
- клиент видит страницу благодарности.
|
|
|
|
Текст благодарности в мягкой редакции:
|
|
|
|
"Спасибо, ваш заказ принят.
|
|
|
|
Мы благодарим вас за доверие к Рыбсток. Доставка и самовывоз выполняются после подтверждения заказа по телефону: так мы сможем уточнить наличие, фасовки и удобное время получения.
|
|
|
|
Если заказ оформлен сегодня до 14:00, мы свяжемся с вами в течение этого дня. Если заказ оформлен после 14:00, мы перезвоним на следующий рабочий день с 10:00 до 14:00.
|
|
|
|
Если вы указали желаемую дату получения, мы свяжемся с вами в этот день.
|
|
|
|
Суббота и воскресенье - выходные. Заказы, оформленные в пятницу после 14:00, обрабатываются в понедельник.
|
|
|
|
Если вопрос срочный, пожалуйста, позвоните нам: +7-977-736-33-63."
|
|
|
|
### 3.9. Личный кабинет и история заказов
|
|
|
|
- Регистрация не обязательна.
|
|
- История заказов хранится по email.
|
|
- Если клиент хочет посмотреть историю, он вводит email.
|
|
- На email приходит код входа.
|
|
- SMS не используются.
|
|
- Интерфейс максимально простой:
|
|
- ввести email;
|
|
- получить код;
|
|
- ввести код;
|
|
- увидеть список заказов.
|
|
- Если email при заказе не указан, история по email не сохраняется.
|
|
|
|
### 3.10. Доставка
|
|
|
|
#### Внутри МКАД
|
|
|
|
- От 5000 руб. - бесплатно.
|
|
- От 2000 до 5000 руб. - 599 руб.
|
|
- Минимальную сумму заказа на сайте не показывать как ограничение и не блокировать заказ.
|
|
|
|
#### За МКАД
|
|
|
|
Пользователь вводит адрес доставки. Расстояние от МКАД нужно считать по дороге, желательно через Яндекс.Карты.
|
|
|
|
Логика:
|
|
|
|
- до 10 км от МКАД: бесплатная доставка от 10000 руб.;
|
|
- от 10 км и дальше: сумма для бесплатной доставки равна расстояние в км * 1000 руб.;
|
|
- если заказ не проходит на бесплатную доставку: доставка = расстояние в км * 60 руб. + 199 руб.
|
|
|
|
Примеры:
|
|
|
|
- 15 км от МКАД: бесплатная доставка от 15000 руб.; иначе 15 * 60 + 199 = 1099 руб.
|
|
- 100 км от МКАД: бесплатная доставка от 100000 руб.; иначе 100 * 60 + 199 = 6199 руб.
|
|
|
|
Дополнительно:
|
|
|
|
- подъем до квартиры/офиса: 390 руб.;
|
|
- радиус: Московская область, близлежащие области по договоренности;
|
|
- доставка и самовывоз только после подтверждения заказа по телефону.
|
|
|
|
### 3.11. Самовывоз
|
|
|
|
- Понедельник - пятница: 18:00-21:00.
|
|
- Только после подтверждения заказа.
|
|
- Минимальную сумму заказа не использовать как блокировку.
|
|
|
|
### 3.12. Промокоды
|
|
|
|
Промокоды должны поддерживать:
|
|
|
|
- фиксированную скидку;
|
|
- процентную скидку;
|
|
- минимальную сумму заказа;
|
|
- ограничение по категориям;
|
|
- ограничение по подкатегориям;
|
|
- ограничение по отдельным товарам;
|
|
- срок действия;
|
|
- включение/выключение;
|
|
- видимость на сайте;
|
|
- ручное выделение в админке.
|
|
|
|
Стартовые промокоды:
|
|
|
|
- Рыбсток7000: 300 руб. при заказе от 7000 руб.;
|
|
- Рыбсток20000: 5% при заказе от 20000 руб.;
|
|
- Рыбсток50000: 7% при заказе от 50000 руб.
|
|
|
|
Важно: промокоды действуют при наличном расчете.
|
|
|
|
### 3.13. Популярные товары и рекомендации
|
|
|
|
Популярные товары:
|
|
|
|
- около 10 товаров на главной;
|
|
- из разных категорий и подкатегорий;
|
|
- случайно обновляются при новом посещении;
|
|
- приоритет у более покупаемых за последнее время;
|
|
- админ может корректировать, закреплять или собирать блок вручную.
|
|
|
|
"С этим товаром приобретают":
|
|
|
|
- не менее 15 товаров;
|
|
- название именно "С этим товаром приобретают";
|
|
- случайный выбор с возможностью улучшить алгоритм на основе заказов.
|
|
|
|
### 3.14. Отзывы Яндекс.Карт
|
|
|
|
- На главной странице показывать рейтинг Яндекс.Карт.
|
|
- Отображать только отзывы с оценкой 5 звезд.
|
|
- Нужно проверить техническую и юридическую возможность получения отзывов через API/виджет Яндекса.
|
|
- Если API не позволяет фильтровать отзывы, предусмотреть ручной блок отзывов в админке с ссылкой на Яндекс.Карты.
|
|
|
|
### 3.15. Прайс-лист
|
|
|
|
- В админке должна быть кнопка выгрузки прайс-листа в Excel.
|
|
- В прайс попадают только опубликованные позиции.
|
|
- Должны отображаться цены на разные фасовки.
|
|
- Выгрузка должна быть в текущем времени, одним нажатием.
|
|
- Желательно хранить дату и время последней выгрузки.
|
|
|
|
## 4. Админка
|
|
|
|
Админка должна быть логичной, быстрой и гибкой.
|
|
|
|
Минимальные разделы:
|
|
|
|
- Товары;
|
|
- Категории и подкатегории;
|
|
- Фасовки и цены;
|
|
- Заказы;
|
|
- Промокоды;
|
|
- Акции;
|
|
- Популярные товары;
|
|
- Отзывы;
|
|
- Настройки доставки;
|
|
- Настройки писем;
|
|
- Прайс-лист;
|
|
- Контентные страницы;
|
|
- Настройки живых счетчиков.
|
|
|
|
Функции админки:
|
|
|
|
- создавать и редактировать товары;
|
|
- управлять публикацией товаров;
|
|
- управлять фасовками и разными ценами;
|
|
- выбирать базовую единицу товара;
|
|
- управлять категориями и подкатегориями;
|
|
- смотреть заказы и менять статусы;
|
|
- создавать промокоды для всего сайта, категорий, подкатегорий и товаров;
|
|
- выделять промокоды на сайте;
|
|
- вручную управлять акциями;
|
|
- вручную корректировать популярные товары;
|
|
- выгружать прайс в Excel;
|
|
- управлять текстами писем;
|
|
- задавать email администратора для копий заказов.
|
|
|
|
## 5. Вопросы, которые стоит уточнить перед разработкой
|
|
|
|
1. Какой локальный сервер и хостинг использовать для проекта на чистом PHP: Open Server Panel, Laragon, обычный хостинг, VPS или другой вариант?
|
|
2. Есть ли уже текущий сайт, каталог, база товаров, Excel/CSV с товарами и фотографиями?
|
|
3. Как сейчас хранятся товары: в Excel, 1С, МойСклад, вручную, в другой CMS?
|
|
4. Нужно ли интегрироваться с 1С, МойСкладом или другой учетной системой?
|
|
5. Нужен ли онлайн-остаток товара или достаточно статуса "в наличии/под заказ"?
|
|
6. Нужны ли статусы заказов для клиента: принят, подтвержден, собран, передан, завершен?
|
|
7. Какие письма нужны клиенту кроме письма о создании заказа?
|
|
8. Какой email администратора использовать для копий заказов?
|
|
9. Нужна ли отправка заказов в Telegram администратору, если SMS не используем?
|
|
10. Нужна ли капча или другая защита от спама в оформлении заказа?
|
|
11. Какие способы оплаты точно описывать на сайте: наличные, QR, безнал для юрлиц?
|
|
12. Нужны ли отдельные цены для физлиц и юрлиц?
|
|
13. Как округлять стоимость доставки за МКАД: километры округлять вверх, до десятых или по данным Яндекс.Карт?
|
|
14. Что делать, если Яндекс.Карты не смогли определить адрес?
|
|
15. Нужно ли сохранять расчет доставки в заказе или только показывать клиенту предварительно?
|
|
16. Нужен ли ручной пересчет доставки администратором в заказе?
|
|
17. Как учитывать подъем 390 руб.: отдельной галочкой в корзине или только текстом?
|
|
18. Нужен ли выбор даты доставки в календаре?
|
|
19. Нужно ли запрещать выбор выходных и праздников в календаре?
|
|
20. Где брать производственный календарь РФ: встроенный список, API или ручная настройка в админке?
|
|
21. Какой должен быть внешний стиль: более премиальный, складской/оптовый, домашний семейный или нейтральный продуктовый?
|
|
22. Есть ли брендбук, логотип, цвета, шрифты?
|
|
23. Какие фотографии склада и товаров уже есть?
|
|
24. Нужно ли добавлять водяные знаки на изображения?
|
|
25. Нужны ли SEO-страницы для категорий и подкатегорий?
|
|
26. Нужна ли микроразметка товаров для поисковиков?
|
|
27. Нужны ли фильтры: цена, фасовка, категория, наличие, производитель, страна, тип обработки, заморозка?
|
|
28. Нужны ли бейджи: акция, хит, новинка, выгодная фасовка, свежая поставка?
|
|
29. Нужна ли функция "повторить заказ" в истории заказов?
|
|
30. Нужно ли администратору вручную создавать заказ из админки по телефону?
|
|
31. Нужны ли разные роли в админке: владелец, менеджер, контент-менеджер?
|
|
32. Нужно ли логировать изменения цен и товаров?
|
|
33. Нужно ли показывать покупателю предупреждение, что итог по весовым товарам может измениться?
|
|
34. Нужна ли интеграция с Яндекс.Метрикой и целями оформления заказа?
|
|
35. Нужна ли интеграция с Google Analytics или только Яндекс.Метрика?
|
|
36. Нужно ли подключать онлайн-чат или кнопку WhatsApp/Telegram/телефон?
|
|
37. Какие страницы обязательны юридически: политика конфиденциальности, пользовательское соглашение, возврат, контакты?
|
|
38. Нужно ли согласие на обработку персональных данных при оформлении заказа?
|
|
39. Нужно ли хранить историю согласий на обработку персональных данных?
|
|
40. Какой срок хранения кодов входа по email: 10 минут, 15 минут, 30 минут?
|
|
|
|
## 6. Дополнительные простые идеи для улучшения
|
|
|
|
- Кнопка "Повторить прошлый заказ" в истории заказов.
|
|
- Блок "Часто берут для семьи" на главной.
|
|
- Бейдж "Выгодно на большую семью" для крупных фасовок.
|
|
- Бейдж "Без предоплаты" рядом с корзиной и оформлением заказа.
|
|
- Быстрые подсказки в поиске: "горбуша", "креветки", "сыр", "ягоды".
|
|
- Голосовой поиск с кнопкой-микрофоном и короткой подсказкой.
|
|
- Блок "Сегодня принимаем заказы 24/7, подтверждаем по телефону".
|
|
- В корзине подсказка: "Можно оформить как есть - менеджер уточнит фасовки и наличие".
|
|
- В админке быстрый режим редактирования цен прямо в списке товаров.
|
|
- В админке массовое включение/выключение публикации.
|
|
- В админке массовое изменение категории, подкатегории и базовой единицы.
|
|
- Импорт товаров из Excel/CSV.
|
|
- Экспорт заказов в Excel.
|
|
|
|
## 7. Технический подход
|
|
|
|
Проект Рыбсток делаем на чистом PHP без фреймворка.
|
|
|
|
Базовая связка:
|
|
|
|
- PHP 8.2+ или PHP 8.3+;
|
|
- MySQL или MariaDB;
|
|
- PDO для работы с базой;
|
|
- собственная админка на PHP;
|
|
- HTML, CSS и JavaScript для витрины;
|
|
- Яндекс.Карты для адресов и расчета доставки;
|
|
- email-отправка через SMTP;
|
|
- CSV/XLSX-выгрузка прайс-листа.
|
|
|
|
Чистый PHP выбран потому, что проект должен быстро запускаться на обычном хостинге, легко передаваться программисту и не зависеть от тяжелых фреймворков. При этом код нужно писать структурно: отдельные папки для контроллеров, моделей/репозиториев, сервисов, шаблонов, админки, загрузок, экспортов и настроек.
|
|
|
|
Рекомендуемая структура проекта:
|
|
|
|
- `public/` - входная точка сайта и публичные assets;
|
|
- `app/` - основной PHP-код;
|
|
- `app/Controllers/` - обработчики страниц;
|
|
- `app/Models/` - модели данных;
|
|
- `app/Repositories/` - запросы к базе;
|
|
- `app/Services/` - бизнес-логика: доставка, промокоды, корзина, письма, прайс;
|
|
- `views/` - шаблоны сайта;
|
|
- `admin/` - собственная админка;
|
|
- `storage/` - загрузки, экспорты, логи;
|
|
- `database/` - SQL-схема, миграции или seed-файлы;
|
|
- `docs/` - рабочие документы проекта.
|
|
|
|
## 8. Пошаговый план работ
|
|
|
|
### Этап 1. Уточнение и фиксация требований
|
|
|
|
1. Подтвердить платформу.
|
|
2. Получить текущий каталог товаров, фото, категории, фасовки и цены.
|
|
3. Уточнить формат импорта: Excel, CSV, вручную.
|
|
4. Уточнить email администратора.
|
|
5. Уточнить дизайн-направление и наличие логотипа.
|
|
6. Уточнить способ интеграции Яндекс.Карт.
|
|
7. Уточнить юридические страницы и тексты.
|
|
|
|
### Этап 2. Проектирование
|
|
|
|
1. Спроектировать структуру базы данных:
|
|
- товары;
|
|
- фасовки;
|
|
- категории;
|
|
- заказы;
|
|
- позиции заказов;
|
|
- промокоды;
|
|
- пользователи/история по email;
|
|
- отзывы;
|
|
- настройки.
|
|
2. Спроектировать логику расчета цен и шагов количества.
|
|
3. Спроектировать логику доставки.
|
|
4. Спроектировать админку.
|
|
5. Спроектировать страницы сайта.
|
|
|
|
### Этап 3. Быстрая обложка и витрина
|
|
|
|
1. Сделать главную страницу.
|
|
2. Сделать каталог.
|
|
3. Сделать страницу категории.
|
|
4. Сделать карточку товара.
|
|
5. Сделать адаптивный интерфейс для мобильных и desktop.
|
|
6. Добавить базовые блоки доверия, доставки, оплаты, свежести.
|
|
|
|
### Этап 4. Каталог, фасовки и корзина
|
|
|
|
1. Реализовать товары с фасовками.
|
|
2. Реализовать переключение фасовок в карточках.
|
|
3. Реализовать добавление в корзину выбранной фасовки.
|
|
4. Реализовать изменение количества кратно фасовке.
|
|
5. Реализовать предупреждение о весовых товарах.
|
|
|
|
### Этап 5. Оформление заказа
|
|
|
|
1. Реализовать простую форму заказа.
|
|
2. Добавить выбор способа получения.
|
|
3. Добавить расчет доставки.
|
|
4. Добавить письмо клиенту при наличии email.
|
|
5. Добавить письмо администратору.
|
|
6. Добавить страницу благодарности.
|
|
|
|
### Этап 6. Админка
|
|
|
|
1. Раздел товаров.
|
|
2. Раздел категорий.
|
|
3. Раздел фасовок и цен.
|
|
4. Раздел заказов.
|
|
5. Раздел промокодов.
|
|
6. Раздел популярных товаров и акций.
|
|
7. Раздел отзывов.
|
|
8. Раздел настроек доставки.
|
|
9. Раздел выгрузки прайса.
|
|
|
|
### Этап 7. Поиск, сравнение и история
|
|
|
|
1. Реализовать морфологический поиск.
|
|
2. Добавить голосовой ввод.
|
|
3. Реализовать список сравнения до 10 товаров.
|
|
4. Реализовать историю заказов по email-коду.
|
|
|
|
### Этап 8. Интеграции
|
|
|
|
1. Подключить Яндекс.Карты для адресов и расчета расстояния за МКАД.
|
|
2. Подключить Яндекс.Метрику.
|
|
3. Подключить рейтинг/отзывы Яндекс.Карт или ручной блок отзывов.
|
|
4. Настроить email-отправку.
|
|
5. Настроить производственный календарь или ручные нерабочие дни.
|
|
|
|
### Этап 9. Прайс-лист
|
|
|
|
1. Реализовать выгрузку Excel.
|
|
2. Включать только опубликованные товары.
|
|
3. Показывать все фасовки и цены.
|
|
4. Добавить кнопку в админке.
|
|
|
|
### Этап 10. Тестирование и запуск
|
|
|
|
1. Проверить мобильную версию.
|
|
2. Проверить desktop-версию.
|
|
3. Проверить добавление товаров с разными фасовками.
|
|
4. Проверить расчет доставки внутри МКАД.
|
|
5. Проверить расчет доставки за МКАД.
|
|
6. Проверить оформление заказа без email.
|
|
7. Проверить оформление заказа с email.
|
|
8. Проверить письма клиенту и администратору.
|
|
9. Проверить промокоды.
|
|
10. Проверить выгрузку прайса.
|
|
11. Проверить админку.
|
|
12. Запустить сайт.
|
|
|
|
## 9. Финальный промпт для разработки сайта
|
|
|
|
Нужно разработать интернет-магазин Рыбсток под ключ. Это сайт продуктов питания с крупными фасовками, рассчитанный в первую очередь на частных покупателей: семьи, соседей, людей, которые покупают продукты домой и делят упаковки между собой. Юридические лица, кафе, рестораны и магазины тоже важны, но интерфейс должен быть максимально простым, понятным и дружелюбным для обычных покупателей, включая пожилых людей.
|
|
|
|
Нужна быстрая готовая версия сайта с логичной гибкой админкой, чтобы владелец мог быстро управлять товарами, фасовками, ценами, промокодами, акциями, популярными товарами, заказами и выгрузкой прайс-листа.
|
|
|
|
Сайт должен включать:
|
|
|
|
1. Главную страницу с каталогом, поиском, меню категорий и подкатегорий, блоками доставки, акциями, популярными товарами, рейтингом Яндекс.Карт, отзывами 5 звезд, блоками доверия, датой последнего поступления, виртуальными счетчиками температуры камер и заметным сообщением "Работаем без предоплаты. Оплата только при получении товара".
|
|
2. Полный каталог с левым закрепленным меню категорий и подкатегорий, товарами, пагинацией/подгрузкой и карточками-превью.
|
|
3. Страницы категорий и подкатегорий с товарами сверху и текстом под товарами.
|
|
4. Карточку товара с фото, описанием, выбором фасовки, ценой за базовую единицу и ценой за фасовку, количеством с шагом выбранной фасовки, кнопкой покупки и блоком "С этим товаром приобретают" минимум на 15 товаров.
|
|
5. Корзину без регистрации, с промокодом, отменой промокода, расчетом суммы, предупреждением о возможном пересчете весовых товаров и простым оформлением заказа.
|
|
6. Оформление заказа с обязательными полями: имя, телефон, выбор "доставка внутри МКАД / доставка за МКАД / самовывоз". Адрес и email необязательны. ФИО, выбор оплаты и онлайн-оплата не нужны.
|
|
7. После оформления заказа клиент видит страницу благодарности, получает письмо на email, если указал email, а администратор получает копию заказа на свой email.
|
|
8. Историю заказов по email: клиент вводит email, получает код на email, вводит код и видит свои заказы. SMS не использовать.
|
|
9. Сравнение товаров до 10 позиций в формате простого списка с превью и кнопкой сброса.
|
|
10. Умный морфологический поиск со склонениями, ассоциациями, опечатками и голосовым вводом.
|
|
11. Админку для товаров, категорий, фасовок, заказов, промокодов, акций, популярных товаров, отзывов, настроек доставки, email и прайс-листа.
|
|
12. Выгрузку прайс-листа в Excel одним нажатием. В прайс попадают только опубликованные товары, включая все фасовки и цены.
|
|
|
|
Товары:
|
|
|
|
- около 1000 товаров;
|
|
- у товара может быть несколько фасовок;
|
|
- у каждой фасовки своя цена;
|
|
- покупка только кратно выбранной фасовке;
|
|
- базовая единица по умолчанию кг, но в админке можно выбрать кг, штука, литр, упаковка и другие единицы;
|
|
- если товар имеет фасовку больше 1 кг, показывать цену за кг и цену за упаковку;
|
|
- если товар имеет единственную фасовку 1 кг, не дублировать цену за упаковку;
|
|
- если товар штучный или фиксированной фасовки, например банка 320 г, показывать цену за упаковку 320 г и не пересчитывать за кг.
|
|
|
|
Доставка:
|
|
|
|
- внутри МКАД: от 5000 руб. бесплатно, от 2000 до 5000 руб. - 599 руб.;
|
|
- минимальную сумму заказа на сайте не показывать как ошибку и не блокировать оформление;
|
|
- за МКАД пользователь вводит адрес, расстояние от МКАД считать по дороге через Яндекс.Карты;
|
|
- до 10 км от МКАД бесплатная доставка от 10000 руб.;
|
|
- от 10 км и дальше сумма бесплатной доставки = расстояние в км * 1000 руб.;
|
|
- если заказ не проходит на бесплатную доставку, доставка = расстояние в км * 60 руб. + 199 руб.;
|
|
- пример 15 км: бесплатно от 15000 руб., иначе 1099 руб.;
|
|
- пример 100 км: бесплатно от 100000 руб., иначе 6199 руб.;
|
|
- самовывоз понедельник - пятница 18:00-21:00, только после подтверждения;
|
|
- доставка и самовывоз только после подтверждения заказа по телефону.
|
|
|
|
Промокоды:
|
|
|
|
- фиксированная скидка и процентная скидка;
|
|
- применяются к заказу, категории, подкатегории или отдельным товарам;
|
|
- можно задавать минимальную сумму, срок действия, активность и видимость;
|
|
- стартовые промокоды: Рыбсток7000, Рыбсток20000, Рыбсток50000;
|
|
- указать, что промокоды действуют при наличном расчете.
|
|
|
|
Живые блоки:
|
|
|
|
- автоматическая дата последнего поступления товара: текущий рабочий день, без выходных и официальных праздников;
|
|
- виртуальная температура морозильной камеры: от -18 до -20 градусов;
|
|
- виртуальная температура холодильной камеры: от -2 до +1 градуса;
|
|
- значения должны периодически немного меняться и выглядеть реалистично;
|
|
- текст про склад: морозильные камеры более 1800 кв. м, холодильные более 500 кв. м;
|
|
- модуль фото склада.
|
|
|
|
Дизайн:
|
|
|
|
- лаконичный, понятный, продуктовый, аккуратный;
|
|
- без лишней перегруженности;
|
|
- крупные понятные элементы;
|
|
- удобство для пожилых пользователей;
|
|
- акцент на бесплатную доставку, отсутствие предоплаты, доверие, свежесть, надежность;
|
|
- сайт должен выглядеть живым, рабочим и регулярно обновляемым.
|
|
|
|
Нужно сначала спроектировать структуру, базу данных, страницы, админку и логику, затем реализовать проект поэтапно, проверяя корзину, фасовки, доставку, промокоды, письма, прайс-лист и адаптивность.
|
|
|
|
## 10. Ближайший следующий шаг
|
|
|
|
Перед кодом нужно получить исходные данные по каталогу и подготовить структуру базы данных/моделей для товаров, фасовок, заказов, промокодов и доставки.
|
|
|
|
## 11. Статус выполнения
|
|
|
|
- Шаг 1 выполнен: выбрана техническая связка на чистом PHP, создан стартовый каркас проекта, подключение к MariaDB через `.env`, базовые папки и файл `ШАГ_1_ТЕХНИЧЕСКОЕ_РЕШЕНИЕ.md`.
|
|
- Шаг 2 выполнен: создана SQL-схема базы `database/schema.sql`, стартовые данные `database/seed.sql`, страница установки `public/install.php` и документ `docs/ШАГ_2_БАЗА_ДАННЫХ.md`.
|
|
- Шаг 3 выполнен: созданы первые PHP-классы, репозитории, контроллер главной страницы, вывод категорий/настроек/популярных товаров, каталог на главной, категории старого сайта в `database/seed.sql`, SEO-поля, хлебные крошки, кнопка назад, градации выгодных цен по промокодам и документ `docs/ШАГ_3_PHP_КЛАССЫ.md`.
|
|
- Перенос товаров выделен в отдельную задачу: `docs/ПЛАН_ПЕРЕНОСА_ТОВАРОВ.md`.
|
|
- Шаг 4 выполнен: добавлен роутинг, страницы полного каталога и категорий, боковая навигация, вывод товаров по вложенным категориям, первые формы админки для категорий/товаров, расширенная модель атрибутов/фасовок как в старой админке, анализ первых товаров, сценарные сегменты каталога, бейджи, правила рекомендаций, события для будущего обучения и документы `docs/ШАГ_4_КАТАЛОГ_И_АДМИНКА.md`, `docs/АНАЛИЗ_ПЕРВЫХ_ТОВАРОВ_И_АТРИБУТОВ.md`, `docs/АНАЛИЗ_КАТАЛОГА_И_РЕКОМЕНДАЦИЙ.md`.
|
|
- Главная страница дополнена требованиями к первому экрану: видимые контакты, пункт самовывоза, меню `Главная / Каталог / Доставка / Контакты / Корзина`, баннеры про доставку, день-в-день и отсутствие предоплаты, видимые промокоды и блок будущего запроса проходных цен.
|
|
- Ценовые градации должны быть четыре: базовая цена, наличный расчет от 20 000 руб. со скидкой 5%, наличный расчет от 50 000 руб. со скидкой 7%, безналичный расчет с наценкой 8%.
|
|
- Следующий шаг: сделать авторизацию администратора, защитить админку, добавить редактирование категорий/товаров и заготовку страницы товара.
|