You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Полнофункциональная e-commerce платформа для продажи парфюмерии на FastAPI с серверным рендерингом (Jinja2 + Tailwind CSS), админ-панелью, CMS, оптовыми ценами, купонами, интеграцией с Новой Почтой и Telegram-уведомлениями.
Стек технологий
Компонент
Технология
Backend
FastAPI 0.128, Python 3.11+
База данных
PostgreSQL 17 + SQLAlchemy 2.0 (async, asyncpg)
Миграции
Alembic
Кэш / Брокер
Redis (aioredis)
Фоновые задачи
Celery 5.6 + Celery Beat
Аутентификация
JWT (access + refresh в httponly cookies) + Google OAuth 2.0
Настройки: название магазина, минимальная сумма заказа, телефон, email, текст оплаты, контакты, about.
Контент (CMS)
Метод
Путь
Описание
GET
/admin/content
Редактор контента (выбор страницы)
POST
/admin/content
Сохранение контента (draft/publish)
Поддерживаемые страницы: global, home, contacts, catalog, product, cart, checkout, orders, order_confirm, auth. Каждый блок имеет ключ, значение, тип (short/text/html), видимость и порядок сортировки.
Фоновые задачи (Celery)
Задача
Расписание
Описание
send_daily_order_summary
Каждый день в 08:00
Сводка заказов за день в Telegram
send_weekly_performance_summary
Каждый понедельник в 09:00
Недельный отчёт в Telegram
send_periodic_reports_task
3-го и 17-го числа в 06:00
Отчёт за 15 дней в Telegram
clean_old_logs
Каждый день в 00:00
Удаление логов старше 90 дней
clean_expired_carts
(доступна, не в расписании)
Удаление пустых корзин старше 7 дней
update_delivery_statuses
(доступна, не в расписании)
Обновление статусов доставки через API НП
send_db_backup_task
Каждый час с 08:00 до 21:00
Бекап базы данных
send_new_order_notification
По событию
Уведомление о новом заказе в Telegram
send_order_paid_notification
По событию
Уведомление об оплате заказа в Telegram
Что осталось доделать
Не реализованные страницы в админке
/admin/import-export — Импорт/Экспорт товаров. Ссылка есть в сайдбаре админки, но роут и логика не реализованы. Предполагается: импорт товаров из CSV/Excel, экспорт каталога.
/admin/reports — Раздел отчётов. Ссылка есть в сайдбаре, но роут не реализован. Предполагается: визуальные отчёты по продажам, графики, аналитика.
Celery-задачи не подключённые к расписанию
clean_expired_carts — задача написана, но не добавлена в beat_schedule в celery_worker.py.
update_delivery_statuses — задача для автоматического обновления статусов доставки через API НП написана, но не добавлена в расписание.
Функционал для доработки
Оплата — нет интеграции с платёжной системой (LiqPay, Monobank и т.д.). Статус paid устанавливается вручную через админку.
Загрузка изображений — сейчас изображения товаров задаются URL-ами. Маунты /media и /uploads закомментированы в main.py. Нужна загрузка файлов через форму.
Редактирование купонов — в админке есть создание и удаление купонов, но нет формы редактирования существующего купона.
Профиль пользователя (HTML) — есть JSON-эндпоинт /users/me, но нет HTML-страницы профиля с формой редактирования данных (имя, телефон, адрес доставки по умолчанию).
Уведомления при создании заказа — Celery-задача send_new_order_notification написана, но не вызывается из orders/router.py при создании заказа.
Объединение корзин — при логине гостевая корзина не переносится в корзину пользователя.
Подтверждение email — нет механизма верификации email при регистрации.
Восстановление пароля — нет функционала сброса/восстановления пароля.
Отмена заказа — нет статуса cancelled и возможности отмены заказа клиентом или админом.
Создание менеджера/складовщика — закомментировано в lifespan (main.py). Нет UI для управления пользователями/ролями в админке.