新規ランキングを作成・公開する5ステップのウィザード形式
ユーザーが新しいランキングを作成・公開するためのウィザード。基本情報→選択肢→(クイズ)→期間→プレビューの順で入力。 下書き保存・復元・編集モードに対応。
CreateRankingView は自前 NavigationStack を持たない。
呼び出し元(MainTabView/MyPageView)がwrap する設計。ネストされた NavigationStack による navigationDestination 伝播破壊を防止。
入力内容を一覧表示し、消費ポイント明示。「公開する」「下書き保存」「キャンセル」を選択。
| 項目 | 消費ポイント |
|---|---|
| 基本作成 | 20pt |
| クイズ付与 | +15pt |
| 選択肢拡張 +10 | +10pt |
| 選択肢拡張 +15 | +20pt |
| 期間延長 +7日 | +10pt |
| 期間延長 +14日 | +20pt |
| 状態 | 説明 |
|---|---|
| 新規作成 | 初期状態、すべて空 |
| 下書き編集 | 既存draft IDを引き継ぎ復元 |
| 公開処理中 | 非アトミック処理、失敗時は補償 |
| 公開完了 | RankingStatus.active へ更新 |
Ranking {
var title: String
var majorTag: String
var minorTag: String?
var mode: RankingMode // single / threePoint
var hasQuiz: Bool
var startsAt: Date
var endsAt: Date
var isPublic: Bool
var isAnonymous: Bool
var status: RankingStatus // draft → active
var pointsConsumed: Int
}
// + Choices: [Choice]
// + Quizzes: [Quiz] (hasQuiz=trueのみ)
| バージョン | 日付 | 変更内容 |
|---|---|---|
| 1.0 | 2026-05-09 | 初版作成(5ステップ統合) |