.. ドメインモデル documentation master file, created by sphinx-quickstart on Fri Jan 10 14:12:32 2020. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. ドメインモデル ========================================== **最終更新**: [ 更新日を記載 ] 概要 -------------------------------------------- 本文書では、システムの業務領域(ドメイン)におけるアクター、エンティティ、ビジネス概念、値オブジェクトを定義します。 設計全体の共通言語となる重要な用語集としても機能します。 .. contents:: :depth: 2 アクター(Actor) -------------------------------------------- **システム利用者** - システムを利用する主要なユーザー - システムの基本機能を利用する権限を持つ - 認証・認可機能により管理される **システム管理者** - システムの運用・管理を行う管理者 - データ管理、システム監視を担当 - 管理機能への高レベルアクセス権限を持つ **外部システム** - 本システムと連携する外部システム - API通信による情報交換を行う - 各種サービス提供者との連携を担当 .. raw:: html エンティティ(Entity) -------------------------------------------- **ユーザー(User)** - システムの利用者を表すコアエンティティ - 一意のユーザーIDで識別される - ログイン状態、基本情報を持つ **商品(Product)** - 管理対象の商品・サービスを表すエンティティ - 商品ID、名前、価格、在庫数を持つ - 在庫管理と価格管理の責務を持つ **ショッピングカート(ShoppingCart)** - 顧客の購入予定商品を管理するエンティティ - ユーザーごとに1つのアクティブなカートを持つ - 24時間の有効期限がある **カート商品(CartItem)** - ショッピングカートに追加された商品アイテム - 商品情報、数量、単価、小計を含む - 同一商品は数量で調整される .. raw:: html コントローラ(Controller) -------------------------------------------- **ユーザー管理** - ユーザー情報の管理・更新 - ユーザー権限の制御 - アカウント状態の管理 **ショッピングカート管理** - カートへの商品追加・削除・数量変更 - カート合計金額の計算 - カート有効期限の管理 **商品確保管理** - カートに追加された商品を在庫から一時的に確保 - 他の顧客による購入を防ぐ - カートの有効期限まで確保される **購入手続き管理** - カート内商品の決済処理 - 配送先指定、支払い方法選択 - 完了時にカートがクリアされる .. raw:: html バウンダリ(Boundary) -------------------------------------------- **外部システム連携** - 外部システムとの通信 - API連携による情報交換 - システム間データ連携 **在庫管理システム連携** - 外部在庫管理システムとの通信 - リアルタイム在庫チェック - 在庫確保・解放の処理 **決済システム連携** - 外部決済システムとの通信 - 決済処理の実行 - 決済結果の受信・処理 **ユーザーインターフェース** - Webページ、APIエンドポイント - ユーザー操作の受付 - システム状態の表示 .. raw:: html ビジネス概念(Domain Concepts) -------------------------------------------- **商品確保(Product Reservation)** - カートに追加された商品を在庫から一時的に確保するビジネスルール - 他の顧客による購入を防ぐ排他制御 - カートの有効期限まで確保される **在庫(Stock/Inventory)** - 販売可能な商品の数量を表すビジネス概念 - リアルタイムで更新される - カート追加時にチェックされる **セッション管理(Session Management)** - ユーザーのログイン状態とカート状態の管理 - セッション有効期限の制御 - ログアウト時のカート保持ルール **価格計算(Price Calculation)** - 商品価格、税額、送料の計算ロジック - 割引、クーポン適用の処理 - 通貨換算(必要に応じて) .. raw:: html 値オブジェクト(Value Objects) -------------------------------------------- **金額(Money)** - 価格、税額、合計金額を表現 - 通貨情報を含む - 不変オブジェクト **数量(Quantity)** - カート内商品の数量 - 在庫数量 - 正の整数値のみ許可 **期限(ExpiryTime)** - カート有効期限 - セッション有効期限 - タイムゾーン考慮 **商品コード(ProductCode)** - 商品を一意に識別するコード - JANコード、SKUなどのフォーマット - バリデーションルールを含む **ユーザーID(UserID)** - ユーザーを一意に識別する識別子 - UUID形式またはシーケンシャル番号 - 不変オブジェクト **日時(DateTime)** - システム内で使用される日時情報 - タイムゾーン情報を含む - 不変オブジェクト .. raw:: html ドメインモデル クラス図 -------------------------------------------- .. mermaid:: classDiagram class User["ユーザー"] { +user_id: int +name: string +created_at: datetime +is_active: boolean -- +login() +logout() +checkCart() } class Product["商品"] { +product_id: int +name: string +price: decimal +stock_quantity: int +is_available: boolean -- +checkStock() +getPrice() +reduceStock() } class ShoppingCart["ショッピングカート"] { +cart_id: int +user_id: int +total_amount: decimal +created_at: datetime +expires_at: datetime -- +addProduct() +removeProduct() +calculateTotal() +isExpired() } class CartItem["カート商品"] { +item_id: int +cart_id: int +product_id: int +quantity: int +unit_price: decimal +subtotal: decimal -- +updateQuantity() +calculateSubtotal() } %% リレーション User ||--|| ShoppingCart : "owns" ShoppingCart ||--o{ CartItem : "contains" Product ||--o{ CartItem : "referenced by" ユースケース図 -------------------------------------------- .. mermaid:: graph LR ユーザー --> |商品検索| 商品検索処理 ユーザー --> |カート追加| カート管理処理 ユーザー --> |購入手続き| 購入処理 管理者 --> |商品管理| 商品管理処理 管理者 --> |在庫管理| 在庫管理処理 外部システム --> |在庫確認| 在庫管理処理 外部システム --> |決済処理| 購入処理 用語集 -------------------------------------------- .. list-table:: :header-rows: 1 * - 用語 - 定義 - 備考 * - ユーザー - システムを利用する人 - 顧客、管理者を含む総称 * - 商品 - 販売・管理対象となるアイテム - 物理的商品、サービス、デジタルコンテンツを含む * - カート - 購入予定商品の一時保存場所 - ショッピングカートの略称 * - 在庫 - 販売可能な商品の数量 - リアルタイムで変動する * - セッション - ユーザーのログイン状態 - 一定時間で自動無効化 * - 決済 - 購入代金の支払い処理 - 外部システムとの連携で実現 関連文書 -------------------------------------------- **設計文書**: - :doc:`user_story/index` - ユーザーストーリー一覧 - :doc:`usecase/index` - ユースケース一覧 - :doc:`database/index` - データベース設計 - :doc:`ddd/index` - DDD設計 **プロジェクト管理**: - プロジェクト憲章 - 要求仕様書