import type { Schedule } from "@/lib/types";

/**
 * スケジュールのサンプルデータ（Pudu Cloud由来。D-Watchは参照のみ）
 *
 * weekdays は「日月火水木金土」の7桁。清掃する曜日が 1。
 *   毎日     = 1111111
 *   月水金   = 0101010
 *   平日のみ = 0111110
 *   土日のみ = 1000001
 *
 * docs/fixtures.md §8 のケース
 *   - 曜日パターン（毎日 / 月水金 / 平日のみ / 土日のみ）
 *   - 有効・無効（active の true / false）
 *   - 日跨ぎ（23:30開始〜00:30終了）
 *
 * ★無効スケジュールは「連続日数カウント」の対象外★
 *   判定ロジックの確認にも使うので、active=false のデータは消さないこと。
 *
 * ---------------------------------------------------------------------------
 * ★D-050: 既定（当日）の schedule_progress を「正常」に保つための制約★
 *
 * `computeScheduleProgress`（lib/dashboard/aggregate.ts）の `planned` は
 * 「その日の曜日に該当する active なスケジュールの総数」であり、**施設ごとの対応は見ない**
 * （どの施設のログかは一切参照しない、フラットな件数カウント）。
 *
 * 一方 `lib/fixtures/clean-logs.ts` の当日分（daysBack=0 の boundaryCases 10施設10行 ＋
 * ★結果待ちの pendingCases 1行（D-173）★）は実行日からの相対生成で、**曜日に関係なく毎日必ず11行**になる
 * （_helpers.ts の `at()` 参照）。
 *
 * この2つを常に一致させる（＝画面を開くたびに data.anomaly が出ないようにする）には、
 * 「有効スケジュールの曜日該当件数」が**どの曜日であっても常に11件**になっている必要がある。
 *
 * 単純に全スケジュールを「毎日」にすると 月水金/平日のみ/土日のみ という
 * パターンのバリエーション（§8で要求）が有効データとして残せなくなる。
 * そこで、曜日パターンを持つ有効スケジュール同士を**互いに補完する組**にして
 * 「どちらか片方は必ず1件該当する」形にしている。
 *
 *   - id25（平日のみ = 0111110）＋ id26（土日のみ = 1000001）
 *       月〜金 と 土日 で全曜日を過不足なくカバーする補完ペア → 常に合計1件
 *   - id23（月水金 = 0101010）＋ id30（日火木土 = 1010101、id23の反転）
 *       月水金 と それ以外 で全曜日を過不足なくカバーする補完ペア → 常に合計1件
 *
 * 残りは「毎日（1111111）」の有効スケジュール9件（id21,22,27,28,29,31,32,33,34）。
 * 補完ペア2組（各常に1件）＋毎日9件 ＝ どの曜日でも常に11件。
 * ★id34 は D-173 で追加★（当日の結果待ちの行 施設11 を足して当日ログが11行になったため）。
 *
 * id24（施設6・無効）は元々の「無効スケジュール」デモとしてそのまま残している
 * （active=false なのでこの合計には影響しない）。
 *
 * id31/32/33 は、当日ログ（施設9・10・12）に対応するスケジュールが元々
 * 1件も存在しなかったため新規追加したもの（★制約：この件数調整のために
 * lib/fixtures/clean-logs.ts 側は変更していない★）。
 *
 * 検証手順（docs/fixtures.md §12 参照）:
 *   GET /api/dashboard （date省略・当日）→ planned=11, completed=9, anomaly無し
 *   （★D-173 で当日ログが11行になった。うち出発なし2行＝施設12の出発失敗・施設11の結果待ち★）
 * ---------------------------------------------------------------------------
 */
export const schedules: Schedule[] = [
  {
    id: 21,
    serial_number: "8111R5628060011",
    facility_id: 1,
    facility_name: "メガバリューマート中央本店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "02:00",
    end_time: "03:00",
    active: true,
  },
  {
    id: 22,
    serial_number: "8111R5628060022",
    facility_id: 2,
    facility_name: "バリューマート北町店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "02:00",
    end_time: "02:45",
    active: true,
  },
  {
    // ★エスカレーション判定の要のデータ★
    // 月水金スケジュール。カレンダー日ではなくスケジュール存在日で連続を数える（D-026）
    // ★D-050: id30 と曜日が補完し合うペア。id23 はそのまま「月水金」で変更していない★
    id: 23,
    serial_number: "8111R5628060044",
    facility_id: 4,
    facility_name: "バリューマート西通り店",
    weekdays: "0101010",
    weekdays_label: "月水金",
    start_time: "03:00",
    end_time: "03:45",
    active: true,
  },
  {
    // 無効スケジュール
    id: 24,
    serial_number: "8111R5628060077",
    facility_id: 6,
    facility_name: "バリューマート南丘駅前店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "02:30",
    end_time: "03:15",
    active: false,
  },
  {
    // 平日のみ
    // ★D-050: id26（土日のみ）と補完ペア。月〜金＋土日で全曜日を過不足なくカバー★
    id: 25,
    serial_number: "8111R5628060033",
    facility_id: 3,
    facility_name: "メガバリューマート東口店",
    weekdays: "0111110",
    weekdays_label: "平日のみ",
    start_time: "01:30",
    end_time: "02:15",
    active: true,
  },
  {
    // 土日のみ
    // ★D-050: id25（平日のみ）と補完ペア★
    id: 26,
    serial_number: "8111R5628060122",
    facility_id: 8,
    facility_name: "メガバリューマート桜台店",
    weekdays: "1000001",
    weekdays_label: "土日のみ",
    start_time: "02:00",
    end_time: "02:40",
    active: true,
  },
  {
    // 日跨ぎ（23:30 → 00:30）
    id: 27,
    serial_number: "8111R5628060055",
    facility_id: 5,
    facility_name: "メガバリューマート港南総本店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "23:30",
    end_time: "00:30",
    active: true,
  },
  {
    // 1施設に複数ロボット（施設7は3台）
    id: 28,
    serial_number: "8111R5628060099",
    facility_id: 7,
    facility_name: "メガバリューマート緑野店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "01:30",
    end_time: "02:10",
    active: true,
  },
  {
    id: 29,
    serial_number: "8111R5628060100",
    facility_id: 7,
    facility_name: "メガバリューマート緑野店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "01:30",
    end_time: "02:10",
    active: true,
  },
  {
    // 3台目は他の2台と違う曜日パターン、という「複数ロボットで別パターン」の
    // デモを兼ねつつ、id23（月水金）の反転（日火木土）にして曜日補完ペアにしている
    // （★D-050★。以前は id23 と同じ「月水金」だったが、それだと2つの
    // 月水金スケジュールが同じ曜日に重複してカウントされ、曜日によって
    // planned の合計が変動してしまうため変更した）
    id: 30,
    serial_number: "8111R5628060177",
    facility_id: 7,
    facility_name: "メガバリューマート緑野店",
    weekdays: "1010101",
    weekdays_label: "日火木土",
    start_time: "02:00",
    end_time: "02:50",
    active: true,
  },
  {
    // ★D-050で追加★ 当日ログ（boundaryCases）に施設9の行があるのに対応する
    // スケジュールが1件も無かったため追加。毎日・有効。
    id: 31,
    serial_number: "8111R5628060133",
    facility_id: 9,
    facility_name: "メガバリューマート三ツ橋中央ショッピングセンター店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "02:30",
    end_time: "03:15",
    active: true,
  },
  {
    // ★D-050で追加★ 施設10も同様（対応するスケジュールが無かった）
    id: 32,
    serial_number: "8111R5628060144",
    facility_id: 10,
    facility_name: "フレッシュタウン大和店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "03:00",
    end_time: "03:40",
    active: true,
  },
  {
    // ★D-050で追加★ 施設12も同様（対応するスケジュールが無かった）
    id: 33,
    serial_number: "8111R5628060166",
    facility_id: 12,
    facility_name: "フレッシュタウン湖畔店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "03:30",
    end_time: "04:15",
    active: true,
  },
  {
    // ★D-173で追加★ 施設11（川下店）の今日の結果待ちの行（`lib/fixtures/clean-logs.ts` の `pendingCases`）に
    //   対応するスケジュール。★当日の清掃ログが11行になったので、どの曜日でも11件にするため「毎日」で足した★（D-050 の不変条件）
    id: 34,
    serial_number: "8111R5628060155",
    facility_id: 11,
    facility_name: "バリューマート川下店",
    weekdays: "1111111",
    weekdays_label: "毎日",
    start_time: "03:30",
    end_time: "04:30",
    active: true,
  },
];
