Skip to content

Latest commit

 

History

History
164 lines (114 loc) · 4.64 KB

File metadata and controls

164 lines (114 loc) · 4.64 KB

Cart Service

Python FastAPI PostgreSQL License

高性能 E コマースショッピングカートマイクロサービス

FastAPI + SQLAlchemy 2.0 非同期アーキテクチャに基づき、ショッピングカートの完全なライフサイクル管理をサポート

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


✨ 機能

  • 🛒 カート管理 - カートの作成、照会、クリア
  • 📦 商品操作 - 商品の追加、数量更新、削除
  • 🔄 カート統合 - 匿名カートとユーザーカートの統合をサポート
  • 非同期アーキテクチャ - async/await ベースの高性能設計
  • 📊 価格スナップショット - 商品追加時の単価を記録

🛠️ 技術スタック

技術 バージョン 用途
Python 3.10+ ランタイム環境
FastAPI 0.109+ 高性能非同期 Web フレームワーク
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 ライセンスの下でライセンスされています。


Made with ❤️ using Python and FastAPI