repaint-architecture

イベント参加者アプリ

シーケンス図(共通)

func: 画像取得処理

運営用 Web コンソールのシーケンス図を参照

イベント参加者のシーケンス

イベント参加時

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> app: イベント参加用QRコードスキャン
    app ->>+ back: イベント参加(イベントQRのデータ,通知用ID)
    back ->> back: 参加者データ,UUID生成
    back ->> back: 参加者識別QRコード事前作成
    back -->>- app: (イベントデータ,参加者データ)

アプリ起動時(イベント参加以降)

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> back: (参加者識別データ,通知用ID)
    back -->> app: (イベントデータ,参加者データ,ビーコンデータ)

スポット検知

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> app: ビーコン検知
    app ->> back: (ビーコンデータ)
    back ->> back: 色々な処理
    alt ピック可能なスポットなら
      app ->> app: 通知
    end

ピック用 QR コードスキャン

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> app: QRコードスキャン
    app ->>+ back: (ピック用QRコードデータ)
    alt QRコードと現在参加者がいるスポットが対応しているなら
      back ->> back: ピック処理
      back ->>- back: あらかじめ参加者のパレット状況に応じて画像合成
    end

画像選択

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    participant storage as 画像ストレージ
    app ->> back: 画像一覧リクエスト
    back ->> storage: トークン生成リクエスト
    storage -->> back: (トークン)
    back -->> app: 画像(url)の一覧返却
    loop 全ての画像に対して
        app ->> storage: func: 画像取得処理
        storage ->> storage: 認証
        storage -->> app: 画像返却(raw)
    end
    app ->> app: 画像一覧表示
    app ->> back: (選択した画像のpublic ID)
    back -->> app: (status)
    back ->> back: パレットに従ってあらかじめ画像合成を開始

画像表示

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    participant img as 画像管理サーバー
    participant storage as 画像ストレージ
    app ->>+ back: 選択中の画像リクエスト
    alt 画像が存在していないなら
      back ->> back: 画像を生成
      back ->> storage: 生成した画像を保存
    end
    back ->> img: one time urlリクエスト(image_id)
    img -->> back: (one time url)
    back -->>- app: パレットに応じて色付けた画像のurl(url)
    app ->> img: func: 画像取得処理
    img -->> app: 色付けされた画像を返す(png)
    alt 画像DL
        app ->> app: 画像を保存
    end

画像一覧取得

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    participant img as 画像管理サーバー
    app ->>+ back: 画像一覧リクエスト
    loop 画像
      back ->> back: 画像を生成
    end
    back -->>- app: 画像一覧返却(ids)
    app ->> img: func: 画像取得処理
    img -->> app: 色付けされた画像を返す(png)

参加者用 QR コード表示

sequenceDiagram
    participant app as 参加者アプリ
    app ->> app: 参加者用QRコード生成

通知の受信

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    participant fcm as FCM
    back ->> fcm: 通知送信(通知用ID,通知内容)
    fcm -->> app: 通知

参加者データ削除

sequenceDiagram
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> back: 参加者データ削除リクエスト
    back ->> back: 参加者データ削除

イベント運営のシーケンス

モバイル・コンソール共通の運営シーケンス

ビーコン・スポットの登録

sequenceDiagram
    participant beacon as ビーコン
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    app ->> app: スポット登録処理開始
    beacon ->> app: (ビーコンデータ)
    app ->> app: スポット名の入力
    app ->> back: (スポット名,ビーコンデータ)

スポットの確認

sequenceDiagram
    participant beacon as ビーコン
    participant app as 参加者アプリ
    participant back as バックエンドAPI
    opt ビーコン
        app ->> app: スキャン開始
        beacon ->> app: (ビーコンデータ)
        app ->> back: (ビーコンデータ)
        back ->> app: (スポットデータ)
        app ->> app: 表示
    end
    opt QRコード
        app ->> beacon: QRスキャン
        beacon -->> app: (ピック用QRコードデータ)
        app ->> back: (スポットデータ)
        back -->> app: スポットデータ
    end