概要

新規ランキングを作成・公開する一連のフロー。基本情報→選択肢→(クイズ)→期間→プレビューの5ステップ。 下書き保存・編集モード・選択肢拡張・期間延長などの拡張機能を含む。

関連画面

処理フロー(公開)

sequenceDiagram participant U as User participant V as Step4PreviewView participant VM as CreateRankingViewModel participant RS as RankingService participant PS as PointService participant DB as Supabase U->>V: 「公開する」タップ V->>VM: publish() VM->>PS: consumePoints(createRanking, ...) PS->>DB: users.points 減少 PS->>DB: point_transactions INSERT alt 残高不足 PS-->>VM: insufficientPoints VM-->>U: 「Npt不足」 end VM->>RS: createRanking(...) RS->>DB: rankings INSERT (status: active) RS->>DB: choices INSERT (×N) alt hasQuiz RS->>DB: quizzes INSERT (×3) end RS-->>VM: 作成完了 VM->>V: 完了画面 → ホーム

ビジネスルール

外部連携

連携先用途
Supabase rankings表ランキング本体
Supabase choices表選択肢
Supabase quizzes表クイズ(hasQuiz=trueのみ)
PointService消費・無料枠の判定
Supabase Storage選択肢画像(imageUrl)

エラー処理

発生条件対応
必須項目未入力該当ステップへ戻して赤枠表示
ポイント不足「Npt必要(現在M)」
非アトミック途中失敗「下書きから再開できます」
画像アップロード失敗該当選択肢のみエラー表示、再試行

実装メモ

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成