店舗作成・プロフィール設定
概要
事業者がプラットフォームに店舗を登録する。一般ユーザーは申請フォームから申し込み、管理者の承認を経て店舗が作成される。管理者は管理者画面から直接作成することもできる。
ユーザーストーリー
- 利用者として、店舗事業者になるために申請フォームから申し込みたい
- 管理者として、申請を審査・承認して店舗を作成したい
- 管理者として、管理者画面から直接店舗を作成したい
申請フロー(一般ユーザー)
1. ログイン済みユーザーがダッシュボードから「事業者として申請」を選択
2. 申請フォームに組織情報を入力して送信
3. 申請中(pending)ステータスになる
4. 管理者が申請を確認し、申請者と連絡を取る
5. 承認 → 組織が作成され、申請者が org:owner になる
→ users.userType が 'venue_user' に更新される
却下 → 申請が rejected になり、申請者に通知ビジネスルール
- 申請は
userType = 'user'のログイン済みユーザーが行える - 申請中(pending)は1件まで(重複申請不可)
- 承認は
userType = 'system_user'の管理者のみ行える - 管理者は申請を経由せず管理者画面から直接組織を作成できる
- 店舗の slug はユニークで URL に使用される(例:
/bars/my-bar) - slug は変更不可(TBD: 変更可能にするか)
- 公開設定があり、非公開の間は一般ユーザーから見えない(TBD)
申請フォームの入力項目
| 項目 | 必須 | 制約 |
|---|---|---|
| 店舗名 | ✅ | 最大 50 文字 |
| slug(URL) | ✅ | 英数字・ハイフンのみ / 最大 50 文字 / 変更不可 |
| 説明 | 任意 | 最大 1,000 文字 |
| 住所 | ✅ | 最大 200 文字 |
将来の拡張項目(フェーズ2以降)
| 項目 | 制約 |
|---|---|
| アイコン画像 | jpg / png / webp / 最大 3MB |
| カバー画像 | jpg / png / webp / 最大 5MB |
| イメージカラー | プリセットパレットから選択(HEX で保存) |
| 最寄り駅・アクセス | 最大 200 文字 |
| 電話番号 | 電話番号形式 |
| Web サイト URL | URL 形式 |
| SNS リンク(X / Instagram 等) | URL 形式 / 各 1 件 |
| 営業時間 | 曜日ごとに開始・終了時刻 |
| 定休日 | 曜日で設定 |
イメージカラーの仕様(フェーズ2)
- フェーズ1: プリセットパレットから選択
- フェーズ2: カスタム HEX 入力も可能(スキーマ変更なし)
- 文字色は背景色から WCAG コントラスト比で自動判定(白 or 黒)
- 詳細:
docs/architecture/decisions.md#9
関連
docs/architecture/decisions.md#11(ユーザー種別とロール設計)docs/architecture/decisions.md#14(事業者申請フロー)packages/db/src/schema.ts— companies / organizations / organization_members / operator_applications / fc_relationships テーブル
TBD
- slug は後から変更できるか
- 複数店舗の申請(Premium 機能との兼ね合い)
- 申請却下後の再申請ルール