import type { Facility } from "@/lib/types";

/**
 * 施設ロボットマスタのサンプルデータ
 *
 * ★ 実在の店舗名・住所・電話番号・担当者名は一切含めないこと（docs/fixtures.md）★
 *   ドン・キホーテ / MEGAドンキ → バリューマート / メガバリューマート
 *   ユニー / アピタ             → フレッシュタウン
 *   住所                        → 「東京都○○区1-2-3」形式の架空住所
 *   電話                        → 03-0000-0001 形式の連番
 *   メール                      → store001@example.com
 *
 * 網羅しているケース（docs/fixtures.md §7）
 *   - 契約フラグ4パターン（未設定 / D-Securityのみ / D-Watchのみ / 両方）
 *   - ロボット0台 / 1台 / 3台
 *   - メーカー・機種は PUDU CC1 のみ（P1 の対象機種。CLAUDE.md §1）。未対応機種の
 *     表示は `lib/facilities/__tests__/query.test.ts` の合成データで担保する（指示書N）
 *   - 任意項目が null
 *   - 複数都道府県
 *   - 11件以上（「もっと表示」の発火確認）
 *   - ★所属（屋号・ホールディングス）の4パターン★（指示書AK 段階5）
 *
 * ★★所属（`customer_id` / `customer_name` / `group_id` / `group_name`）★★（指示書AK 段階5）
 *   段階1 では `lib/fixtures/customers.ts` の `customerIdByFacilityId` という暫定マップに
 *   置いていたが、★段階5 で `Facility` が所属の列を持ったのでこちらへ移した★
 *   （マップは削除済み。同じ割り当てを2箇所に持たないため）。
 *
 *   ★`lib/fixtures/customers.ts` の `customers` と `lib/fixtures/groups.ts` の `groups` と
 *   必ず整合させること★（不変条件は `lib/fixtures/__tests__/masters.test.ts` が固定している）:
 *     顧客1 メガバリューマート（HD1） … 施設 1 / 3 / 5 / 7 / 8 / 9   （6件）
 *     顧客2 バリューマート（HD1）     … 施設 2 / 4 / 6 / 11          （4件）
 *     顧客3 フレッシュタウン（HD2）   … 施設 10                      （1件）
 *     顧客4 フレッシュタウン湖畔（★ホールディングスなし★） … 施設 12 （1件）
 *
 *   ★`group_id` は API の形（`null` = 所属なし）で持つ★ — ★`0` を書かないこと★
 *   （0 → null の変換を知っているのは `lib/format/group-id.ts` だけ。★落とし穴3★）。
 */
export const facilities: Facility[] = [
  // --- 契約: 両方（D-Watch + D-Security） ---
  {
    id: 1,
    facility_name: "メガバリューマート中央本店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○区1-2-3",
    phone: "03-0000-0001",
    manager_name: "田中 一郎",
    charger_name: "小林 美咲",
    email: "store001@example.com",
    monitoring_enabled: true,
    d_security_enabled: true,
    robots: [
      { id: 101, maker: "PUDU", model: "CC1", serial_number: "8111R5628060011" },
    ],
  },
  {
    id: 3,
    facility_name: "メガバリューマート東口店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○区3-1-8",
    phone: "03-0000-0003",
    manager_name: "伊藤 大輔",
    charger_name: "中村 拓也",
    email: "store003@example.com",
    monitoring_enabled: true,
    d_security_enabled: true,
    robots: [
      { id: 103, maker: "PUDU", model: "CC1", serial_number: "8111R5628060033" },
    ],
  },
  {
    id: 4,
    facility_name: "バリューマート西通り店",
    customer_id: 2,
    customer_name: "バリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○区4-5-6",
    phone: "03-0000-0004",
    manager_name: "加藤 隆",
    charger_name: "佐々木 優",
    email: "store004@example.com",
    monitoring_enabled: true,
    d_security_enabled: true,
    robots: [
      { id: 104, maker: "PUDU", model: "CC1", serial_number: "8111R5628060044" },
    ],
  },
  {
    id: 5,
    facility_name: "メガバリューマート港南総本店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "神奈川県",
    address: "神奈川県○○市○○区5-1-1",
    phone: "045-000-0005",
    manager_name: "松本 洋介",
    charger_name: "井上 真央",
    email: "store005@example.com",
    monitoring_enabled: true,
    d_security_enabled: true,
    robots: [
      { id: 105, maker: "PUDU", model: "CC1", serial_number: "8111R5628060055" },
      { id: 106, maker: "PUDU", model: "CC1", serial_number: "8111R5628060088" },
    ],
  },
  {
    // ロボット3台のケース
    id: 7,
    facility_name: "メガバリューマート緑野店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○市○○町7-2-1",
    phone: "042-000-0007",
    manager_name: "清水 健",
    charger_name: "森田 翼",
    email: "store007@example.com",
    monitoring_enabled: true,
    d_security_enabled: true,
    robots: [
      { id: 107, maker: "PUDU", model: "CC1", serial_number: "8111R5628060099" },
      { id: 108, maker: "PUDU", model: "CC1", serial_number: "8111R5628060100" },
      { id: 109, maker: "PUDU", model: "CC1", serial_number: "8111R5628060177" },
    ],
  },

  // --- 契約: D-Watchのみ（D-Securityメニューが出ないこと） ---
  {
    id: 2,
    facility_name: "バリューマート北町店",
    customer_id: 2,
    customer_name: "バリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○区2-3-4",
    phone: "03-0000-0002",
    manager_name: "高橋 誠",
    charger_name: "渡辺 翔",
    email: "store002@example.com",
    monitoring_enabled: true,
    d_security_enabled: false,
    robots: [
      { id: 102, maker: "PUDU", model: "CC1", serial_number: "8111R5628060022" },
    ],
  },
  {
    id: 6,
    facility_name: "バリューマート南丘駅前店",
    customer_id: 2,
    customer_name: "バリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○市○○町6-7-8",
    phone: "042-000-0006",
    manager_name: "木村 達也",
    charger_name: "斎藤 愛",
    email: "store006@example.com",
    monitoring_enabled: true,
    d_security_enabled: false,
    robots: [
      { id: 110, maker: "PUDU", model: "CC1", serial_number: "8111R5628060077" },
    ],
  },
  {
    id: 8,
    facility_name: "メガバリューマート桜台店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○市○○町8-1-2",
    phone: "0422-00-0008",
    manager_name: "岡田 修",
    charger_name: "藤井 彩",
    email: "store008@example.com",
    monitoring_enabled: true,
    d_security_enabled: false,
    robots: [
      { id: 111, maker: "PUDU", model: "CC1", serial_number: "8111R5628060122" },
    ],
  },
  {
    // 施設名が長いケース（30文字程度）— 表示崩れ確認用
    id: 9,
    facility_name: "メガバリューマート三ツ橋中央ショッピングセンター店",
    customer_id: 1,
    customer_name: "メガバリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "東京都",
    address: "東京都○○区9-9-9",
    phone: "03-0000-0009",
    manager_name: "池田 正",
    charger_name: "西村 舞",
    email: "store009@example.com",
    monitoring_enabled: true,
    d_security_enabled: false,
    robots: [
      { id: 112, maker: "PUDU", model: "CC1", serial_number: "8111R5628060133" },
    ],
  },
  {
    // 任意項目が null のケース（電話・メール・担当者なし）
    id: 10,
    facility_name: "フレッシュタウン大和店",
    customer_id: 3,
    customer_name: "フレッシュタウン",
    group_id: 2,
    group_name: "フレッシュリテイリング",
    prefecture: "奈良県",
    address: "奈良県○○市○○町10-1",
    phone: null,
    manager_name: null,
    charger_name: null,
    email: null,
    monitoring_enabled: true,
    d_security_enabled: false,
    robots: [
      { id: 113, maker: "PUDU", model: "CC1", serial_number: "8111R5628060144" },
    ],
  },

  // --- 契約: D-Securityのみ（D-Watchメニューが出ないこと） ---
  {
    id: 11,
    facility_name: "バリューマート川下店",
    customer_id: 2,
    customer_name: "バリューマート",
    group_id: 1,
    group_name: "バリューホールディングス",
    prefecture: "神奈川県",
    address: "神奈川県○○市○○区11-2-3",
    phone: "045-000-0011",
    manager_name: "村上 大地",
    charger_name: "原田 千秋",
    email: "store011@example.com",
    monitoring_enabled: false,
    d_security_enabled: true,
    robots: [
      { id: 114, maker: "PUDU", model: "CC1", serial_number: "8111R5628060155" },
    ],
  },

  // --- 契約: 未設定（どちらのメニューも出ないこと） ---
  {
    // ロボット0台のケース（施設は登録済みだが未設置）
    id: 12,
    facility_name: "フレッシュタウン湖畔店",
    customer_id: 4,
    customer_name: "フレッシュタウン湖畔",
    // ★ホールディングスなし★（DB の `customers.group_id = 0` に対応する API の形）
    group_id: null,
    group_name: null,
    prefecture: "三重県",
    address: "三重県○○市○○町12-4",
    phone: "059-000-0012",
    manager_name: "長谷川 亮",
    charger_name: null,
    email: "store012@example.com",
    monitoring_enabled: false,
    d_security_enabled: false,
    robots: [],
  },
];

/** 施設IDから施設名を引く（他fixtureからの参照用） */
export const facilityNameById = new Map(
  facilities.map((f) => [f.id, f.facility_name])
);
