Files
new.rybstock.ru/ПЛАН_ДЕЙСТВИЙ_РЫБСТОК.md
T
2026-06-03 23:12:10 +03:00

43 KiB

План действий по созданию сайта Рыбсток

1. Цель проекта

Создать максимально готовый интернет-магазин продуктов питания Рыбсток под ключ: быстрая витрина, удобная корзина, простое оформление заказа без регистрации, логичная гибкая админка, работа с фасовками, промокодами, доставкой по Москве и Московской области, выгрузкой прайс-листа и живыми блоками доверия.

Главный покупатель: частное лицо, семья, соседи, люди, которые покупают продукты домой крупными упаковками. Юридические лица, кафе, рестораны и магазины тоже учитываются, но интерфейс должен быть в первую очередь простым, понятным и не перегруженным.

Ключевой принцип: сайт должен быть удобен людям разного возраста, включая пожилых покупателей. Оформление заказа должно быть максимально простым, без лишних условий, регистрации, оплаты на сайте и сложных шагов.

2. Основные сущности сайта

2.1. Товары

  • Около 1000 товаров.
  • У товара могут быть разные фасовки и для каждой фасовки своя цена.
  • Пример: горбуша неразделанная:
    • упаковка 20 кг по 580 руб./кг;
    • пласт 10 кг по 600 руб./кг.
  • Покупка возможна только кратно выбранной фасовке.
  • Если выбрана фасовка 10 кг, кнопки плюс/минус меняют количество на 10 кг.
  • Для каждой фасовки хранить:
    • название фасовки;
    • количество;
    • единицу измерения;
    • цену за базовую единицу;
    • цену за всю фасовку;
    • доступность;
    • признак публикации.
  • Базовая единица по умолчанию: кг.
  • В админке должна быть возможность выбрать другую базовую единицу: кг, штука, литр, упаковка и т.д.

2.2. Отображение цен

  • Если товар продается весом и фасовка больше 1 кг, показывать цену за кг и цену за фасовку.
  • Если товар имеет единственную фасовку 1 кг, не дублировать цену за упаковку 1 кг.
  • Если товар штучный или имеет единственную фиксированную фасовку, например банка 320 г, показывать цену за упаковку 320 г и не пересчитывать за кг.
  • В карточке-превью и в полной карточке товара должен быть выбор фасовки.
  • Над выбором фасовки текст: "Выберите доступную фасовку".
  • При переключении фасовки цена должна меняться сразу.

2.3. Категории

Основные категории для главного заголовка и меню:

  • Рыба;
  • Готовая продукция;
  • Полуфабрикаты;
  • Мясо;
  • Сыры;
  • Ягоды;
  • Овощи.

Нужны категории и подкатегории. Подкатегории визуально отделить от категорий, например более мягким цветом, меньшим шрифтом или отступом.

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.
  • Следующий шаг: спроектировать базу данных, модели, связи и структуру собственной админки.