Skip to content

Latest commit

 

History

History
164 lines (114 loc) · 5.71 KB

File metadata and controls

164 lines (114 loc) · 5.71 KB

Cart Service

Python FastAPI PostgreSQL License

Высокопроизводительный микросервис корзины покупок для e-commerce

На основе асинхронной архитектуры FastAPI + SQLAlchemy 2.0, поддержка полного жизненного цикла корзины

English | 中文 | Русский | 한국어 | 日本語


✨ Возможности

  • 🛒 Управление корзиной - Создание, просмотр, очистка корзин
  • 📦 Операции с товарами - Добавление, обновление количества, удаление товаров
  • 🔄 Слияние корзин - Поддержка слияния анонимной корзины с пользовательской
  • Асинхронная архитектура - Высокопроизводительный дизайн на async/await
  • 📊 Снимок цены - Сохранение цены товара на момент добавления

🛠️ Технологии

Технология Версия Назначение
Python 3.10+ Среда выполнения
FastAPI 0.109+ Высокопроизводительный асинхронный веб-фреймворк
PostgreSQL 15+ Реляционная база данных
SQLAlchemy 2.0+ Асинхронный ORM
Pydantic v2 Валидация данных
Alembic 1.13+ Миграция базы данных

🏗️ Структура проекта

cart-service/
├── app/
│   ├── api/v1/endpoints/    # API маршруты
│   ├── core/                # Управление конфигурацией
│   ├── db/                  # Подключение к БД
│   ├── models/              # ORM модели
│   ├── schemas/             # Pydantic модели
│   ├── services/            # Бизнес-логика
│   └── main.py              # Точка входа
├── alembic/                 # Скрипты миграции БД
├── .env.example             # Шаблон переменных окружения
├── alembic.ini              # Конфигурация Alembic
└── requirements.txt         # Зависимости

🚀 Быстрый старт

1. Установка зависимостей

cd projects/cart-service
pip install -r requirements.txt

2. Настройка базы данных

Создайте базу данных PostgreSQL:

CREATE DATABASE cart_db;

Настройте переменные окружения:

copy .env.example .env
# Отредактируйте файл .env и установите правильные параметры подключения к БД

3. Миграция базы данных

alembic upgrade head

4. Запуск сервиса

uvicorn app.main:app --reload

5. Доступ к API


📡 API Эндпоинты

Метод Путь Описание
GET /api/v1/carts/{cart_id} Получение деталей корзины
POST /api/v1/carts Создание корзины
POST /api/v1/carts/{cart_id}/items Добавление товара
PATCH /api/v1/carts/{cart_id}/items/{item_id} Обновление количества
DELETE /api/v1/carts/{cart_id}/items/{item_id} Удаление товара
DELETE /api/v1/carts/{cart_id} Очистка корзины
POST /api/v1/carts/{cart_id}/merge Слияние корзин

🗃️ Модели данных

Таблица carts

Поле Тип Описание
id UUID Первичный ключ
user_id UUID ID пользователя (может быть null)
status VARCHAR Статус
created_at DATETIME Время создания
updated_at DATETIME Время обновления

Таблица cart_items

Поле Тип Описание
id UUID Первичный ключ
cart_id UUID ID корзины
product_id VARCHAR SKU товара
quantity INTEGER Количество
unit_price DECIMAL Цена за единицу
added_at DATETIME Время добавления

📖 Документация разработки


📄 Лицензия

Этот проект лицензирован под MIT License.


Made with ❤️ using Python and FastAPI