
Створив веб-портал для мережі аптек, який поєднує онлайн-замовлення медикаментів, керування асортиментом і складами, планування графіків прийому (фармацевтів/провізорів/пунктів видачі) та роботу з постачальниками. Рішення побудоване на Yii2 із акцентом на надійність, масштабування та чітку рольову модель доступу.
Технології: PHP 8+, Yii2, MySQL, HTML, CSS, Bootstrap, Yii2-queue (за потреби), Redis/Cache (де актуально).
Бізнес-вимоги
- Онлайн-вітрина з актуальними залишками, цінами, статусами наявності (в наявності/під замовлення/закінчується).
- Кошик і швидке оформлення замовлення: самовивіз або доставка (за сценарієм клієнта).
- Кілька ролей: Адміністратор мережі, Менеджер аптеки, Провізор/Фармацевт, Користувач (пацієнт), Постачальник.
- Графіки прийому / години роботи аптек і пунктів видачі, слоти видачі/консультацій.
- Інтеграція з постачальниками: прайси, мінімальні замовлення, статуси поставок.
- Розширюваність: нові аптечні точки, категорії товарів, правила ціноутворення, промокоди.
Архітектура та ключові рішення (Yii2)
- Шаблон: Yii2 Advanced (frontend/backend/api), чіткий поділ на публічний інтерфейс, адмін-панель і REST-API.
- ActiveRecord + DataProvider: ефективні запити, індекси в MySQL, пошук із фільтрами (категорія, виробник, форма).
- RBAC (Role-Based Access Control): політики доступу для всіх ролей; granular permissions (create/update/approve orders, manage stock, manage suppliers).
- Behaviors: TimestampBehavior, BlameableBehavior; для товарів — SEO-поля та дружні URL (за потреби).
- Валідації/сценарії: окремі сценарії для створення, редагування, підтвердження замовлень; перевірка рецептів (за вимогою).
- REST API (
yii\rest\Controller): мобільний застосунок/3rd-party інтеграції; формати JSON, узгоджені коди помилок. - Міграції: повний контроль схеми БД; дампи/seed-дані для стендів.
- Кешування: категорій, фільтрів, підказок пошуку; при оновленні довідників — інвалідовано.
Ключовий функціонал
1) Ролі та доступ
- Адміністратор мережі: глобальні налаштування, створення аптек, ролей, бізнес-правил, інтеграції з постачальниками.
- Менеджер аптеки: локальні ціни, запаси, підтвердження замовлень, робочі години, вітрина конкретної точки.
- Провізор/Фармацевт: обробка замовлень, консультації, резервування товарів, позначення готовності до видачі.
- Постачальник: прайси/мінімальні партії, підтвердження відвантажень, ETA, заміни аналогами (якщо узгоджено).
- Користувач (пацієнт): пошук ліків, перевірка наявності, оформлення замовлення, вибір аптеки/часу.
2) Каталог і наявність
- Категорії, форми випуску, виробники, SKU/штрих-коди, правила заміни (узгоджені аналоги).
- Склади/залишки по кожній аптеці, резерв під замовлення (щоб уникати оверсейлу), сповіщення про зниження запасів.
3) Замовлення та опрацювання
- Класичний флоу: В кошик → Оформлення → Оплата/Бронювання → Підтвердження аптекою → Готово до видачі/Доставка.
- Статуси: draft / pending / confirmed / ready / completed / cancelled; журнал подій і коментарі персоналу.
- Валідація рецептурності (якщо є вимога завантаження рецепта), логіка перевірки віку/обмежень (конфігуровано).
4) Години роботи та слоти
- Календар аптек: години прийому/видачі, винятки (свята, інвентаризації).
- Ранжування слотів при оформленні (найближчий доступний час), ліміти на кількість видач у слоті.
5) Постачальники та закупівлі
- Імпорт прайсів (CSV/Excel/API), мапінг на внутрішні артикули.
- Формування заявок постачальнику з урахуванням мінімальної партії та залишків.
- Трекінг поставок: статуси, очікувані дати, автооновлення залишків.
Безпека та відповідність
- RBAC + політики доступу на кожен CRUD-оператор.
- Захист форм: CSRF, rate-limit (на API), валідації сервером, санітизація інпутів.
- Аудит-лог дій користувачів і змін у замовленнях/запасах.
- Резервне копіювання БД; окремі ролі доступу до чутливих операцій.
- Опціонально: зберігання та перевірка електронних рецептів згідно з локальними нормами (конфігуровано).
Перформанс і UX
- Пошук з автодоповненням (кеш підказок), фільтри без перезавантаження.
- Оптимізація SQL (композитні індекси, explain-аналіз), пагінація через ActiveDataProvider.
- Bootstrap для чистої, доступної верстки; мобільний-перший підхід.
- Опціонально: черги (Yii2-queue) для важких задач — імпорт прайсів, масові оновлення, нотифікації.
Аналітика та адмін-панель
- Дашборди: продажі по аптеках, топ-позиції, відсоток резервів, скасування, SLA видачі.
- Звіти по постачальниках: ціни, виконання термінів, надійність поставок.
- Експорт CSV/Excel; ролезалежні перегляди й фільтри.
Результати для бізнесу
- Єдина система для онлайн-продажу і операцій аптечної мережі.
- Прозорість запасів і контроль бронювань — менше відмов клієнтам.
- Швидше опрацювання замовлень і планування видач завдяки слотам і ролям.
- Готовність до масштабування: додавання аптек, нових категорій, інтеграцій із постачальниками чи платіжними сервісами.
Потрібен подібний портал для аптечної мережі на Yii2?
Підготую архітектуру, дорожню карту впровадження та кошторис з урахуванням регуляторних вимог і інтеграцій.