// =============================================================
// data.jsx — マスタデータ定義 + サンプルデータ生成
// =============================================================

// ─── マスタデータ（固定値） ──────────────────────────────────

const MASTER_CENTERS = [
  { id: 1, name: '東京',   is_active: true },
  { id: 2, name: '大阪',   is_active: true },
  { id: 3, name: '名古屋', is_active: true },
];

const MASTER_AREAS = [
  { id: 1,  center_id: 1, name: 'A棟 入庫エリア', is_active: true },
  { id: 2,  center_id: 1, name: 'A棟 出庫エリア', is_active: true },
  { id: 3,  center_id: 1, name: 'B棟 保管エリア', is_active: true },
  { id: 4,  center_id: 1, name: '事務所エリア',   is_active: true },
  { id: 5,  center_id: 2, name: '第1倉庫',        is_active: true },
  { id: 6,  center_id: 2, name: '第2倉庫',        is_active: true },
  { id: 7,  center_id: 2, name: '出荷ドック',      is_active: true },
  { id: 8,  center_id: 3, name: '南エリア',        is_active: true },
  { id: 9,  center_id: 3, name: '北エリア',        is_active: true },
  { id: 10, center_id: 3, name: '管理棟',          is_active: true },
];

const MASTER_USERS = [
  { id: 1, center_id: 1, name: '田中 一郎', login_id: 'tanaka',     role: 'field', is_active: true },
  { id: 2, center_id: 1, name: '鈴木 二郎', login_id: 'suzuki',     role: 'field', is_active: true },
  { id: 3, center_id: 2, name: '山田 花子', login_id: 'yamada',     role: 'field', is_active: true },
  { id: 4, center_id: 1, name: '佐藤 拓也', login_id: 'sato_admin', role: 'admin', is_active: true },
  { id: 5, center_id: null, name: '管理 太郎', login_id: 'admin',   role: 'admin', is_active: true },
];

const MASTER_CHECK_CATEGORIES = [
  { id: 1, name: '一般点検', display_order: 1, is_active: true },
  { id: 2, name: '5S・3定', display_order: 2, is_active: true },
  { id: 3, name: '安全確認', display_order: 3, is_active: true },
  { id: 4, name: '設備点検', display_order: 4, is_active: true },
];

const MASTER_CHECK_ITEMS = [
  // 一般点検
  { id: 1,  category_id: 1, name: '通路幅が確保され、障害物が除去されているか',              is_active: true },
  { id: 2,  category_id: 1, name: '消火器が所定位置に設置され、有効期限内となっているか',    is_active: true },
  { id: 3,  category_id: 1, name: 'エリア内の全照明が正常に点灯しているか',                  is_active: true },
  { id: 4,  category_id: 1, name: '床面・棚・設備周辺の清掃が適切に実施されているか',        is_active: true },
  // 5S・3定
  { id: 5,  category_id: 2, name: '必要なものと不要なものが区別され、整理・整頓されているか', is_active: true },
  { id: 6,  category_id: 2, name: '不用品・不要品が速やかに除去・処分されているか',           is_active: true },
  { id: 7,  category_id: 2, name: '全物品が定位置に保管され、定位置管理が遵守されているか',   is_active: true },
  { id: 8,  category_id: 2, name: '棚・設備・容器の表示・ラベルが正しく貼付されているか',     is_active: true },
  // 安全確認
  { id: 9,  category_id: 3, name: '作業員全員が必要な保護具を正しく着用しているか',           is_active: true },
  { id: 10, category_id: 3, name: '危険物が規定の保管場所・方法で適切に管理されているか',     is_active: true },
  { id: 11, category_id: 3, name: '緊急連絡先が最新の情報で所定箇所に掲示されているか',       is_active: true },
  // 設備点検
  { id: 12, category_id: 4, name: 'フォークリフトの始業点検が完了し、異常がないか',           is_active: true },
  { id: 13, category_id: 4, name: '空調設備が正常に動作し、異音・異臭がないか',               is_active: true },
  { id: 14, category_id: 4, name: 'シャッター・扉が正常に開閉でき、施錠機能に問題がないか',   is_active: true },
];

const MASTER_RISK_LEVELS = [
  { id: 1, name: '軽微', color: '#16a34a', display_order: 1 },
  { id: 2, name: '低い', color: '#ca8a04', display_order: 2 },
  { id: 3, name: '中',   color: '#ea580c', display_order: 3 },
  { id: 4, name: '相当', color: '#92400e', display_order: 4 },
  { id: 5, name: '高い', color: '#dc2626', display_order: 5 },
  { id: 6, name: '重大', color: '#4b5563', display_order: 6 },
];

// エリアごとのチェック項目紐付け（AREA_CHECK_ITEMS）
const MASTER_AREA_CHECK_ITEMS = (() => {
  const map = {
    1:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 11, 12, 14], // A棟 入庫
    2:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 11, 12, 14], // A棟 出庫
    3:  [1, 2, 3, 4, 5, 6, 7,  8, 11],              // B棟 保管
    4:  [2, 3, 4, 5, 6, 8, 9, 11, 13],              // 事務所
    5:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 12, 14],      // 第1倉庫
    6:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 12, 14],      // 第2倉庫
    7:  [1, 2, 3, 4, 9, 10, 11, 12, 14],             // 出荷ドック
    8:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 12],           // 南エリア
    9:  [1, 2, 3, 4, 5, 6, 7,  9, 10, 12],           // 北エリア
    10: [2, 3, 4, 5, 6, 8, 9, 11, 13],               // 管理棟
  };
  let id = 1;
  const rows = [];
  for (const [areaId, itemIds] of Object.entries(map)) {
    itemIds.forEach((itemId, order) => {
      rows.push({ id: id++, area_id: Number(areaId), check_item_id: itemId, display_order: order + 1 });
    });
  }
  return rows;
})();

// ─── サンプルデータ生成 ──────────────────────────────────────

const _NG_COMMENTS = [
  '通路上に段ボールが積まれており通行の妨げになっています。速やかに撤去が必要です。',
  '消火器の圧力計が規定値を下回っています。交換対応が必要です。',
  '蛍光灯が1本切れています。本日中に交換依頼を提出します。',
  '床面に油汚れが確認されました。清掃対応が必要です。',
  '棚の商品が定位置から大幅にずれています。整理・整頓が必要です。',
  '不用品が保管エリアに放置されています。処分の手続きが必要です。',
  '安全ヘルメットを未着用の作業員が確認されました。即時対応が必要です。',
  '危険物の保管容器に表示がありません。即時対応が必要です。',
  'フォークリフトのタイヤに亀裂が確認されました。使用停止とし整備を依頼します。',
  '空調フィルターが汚れており異常音が発生しています。',
  'シャッターの動作が重く異音があります。専門業者に点検依頼が必要です。',
  '緊急連絡先の掲示内容が古く現在の担当者情報と一致していません。',
];

function generateSampleData() {
  // 再現性のある疑似乱数（seed=42）
  let s = 42 >>> 0;
  const rand  = () => { s = (Math.imul(1664525, s) + 1013904223) >>> 0; return s / 4294967296; };
  const rInt  = (n) => Math.floor(rand() * n);
  const pad   = (n) => String(n).padStart(2, '0');

  const checkRecords  = [];
  const checkResults  = [];
  const ngDetails     = [];
  let recId = 1, resId = 1, ngId = 1;

  // 東京センター（エリア 1〜4）、2024-07〜2026-05、月2回
  const targetAreas = [1, 2, 3, 4];
  for (let y = 2024; y <= 2026; y++) {
    const ms = y === 2024 ? 7 : 1;
    const me = y === 2026 ? 5 : 12;
    for (let m = ms; m <= me; m++) {
      for (const areaId of targetAreas) {
        // 2026年5月のエリア2は後で毎日分を追加するためスキップ
        if (y === 2026 && m === 5 && areaId === 2) continue;
        for (let w = 0; w < 2; w++) {
          const day      = 1 + rInt(27);
          const hour     = 8 + rInt(5);
          const min      = [0, 15, 30, 45][rInt(4)];
          const dateStr  = `${y}-${pad(m)}-${pad(day)}`;
          const timeStr  = `${pad(hour)}:${pad(min)}`;

          const rec = {
            id:         recId++,
            user_id:    rand() < 0.7 ? 1 : 2,
            area_id:    areaId,
            check_date: dateStr,
            start_time: timeStr,
            created_at: `${dateStr}T${timeStr}:00`,
          };
          checkRecords.push(rec);

          const areaItems = MASTER_AREA_CHECK_ITEMS.filter(a => a.area_id === areaId);
          for (const aci of areaItems) {
            const isNg = rand() < 0.10;
            const res  = {
              id: resId++,
              check_record_id: rec.id,
              check_item_id:   aci.check_item_id,
              result:          isNg ? 'NG' : 'OK',
            };
            checkResults.push(res);
            if (isNg) {
              ngDetails.push({
                id: ngId++,
                check_result_id: res.id,
                comment:  _NG_COMMENTS[rInt(_NG_COMMENTS.length)],
                created_at: rec.created_at,
              });
            }
          }
        }
      }
    }
  }

  // 2026年5月 — A棟出庫エリア（area_id=2）毎日1件ずつ
  {
    const dailyArea = 2;
    const dailyItems = MASTER_AREA_CHECK_ITEMS.filter(a => a.area_id === dailyArea);
    for (let day = 1; day <= 31; day++) {
      const dateStr = `2026-05-${pad(day)}`;
      const hour    = 8 + rInt(3);
      const min     = [0, 15, 30, 45][rInt(4)];
      const timeStr = `${pad(hour)}:${pad(min)}`;
      const rec = {
        id:         recId++,
        user_id:    1,
        area_id:    dailyArea,
        check_date: dateStr,
        start_time: timeStr,
        created_at: `${dateStr}T${timeStr}:00`,
      };
      checkRecords.push(rec);
      for (const aci of dailyItems) {
        const isNg = rand() < 0.10;
        const res  = { id: resId++, check_record_id: rec.id, check_item_id: aci.check_item_id, result: isNg ? 'NG' : 'OK' };
        checkResults.push(res);
        if (isNg) {
          ngDetails.push({ id: ngId++, check_result_id: res.id, comment: _NG_COMMENTS[rInt(_NG_COMMENTS.length)], created_at: rec.created_at });
        }
      }
    }
  }

  // 是正指示（12件）
  const correctionOrders = [
    { id:1,  created_by:4, center_id:1, content:'複数回のチェックでA棟入庫エリアの通路確保に不備が確認されています。根本的な改善策を講じてください。', deadline:'2024-09-30', status:'resolved',  created_at:'2024-09-05T10:00:00', updated_at:'2024-09-28T15:00:00' },
    { id:2,  created_by:4, center_id:1, content:'A棟出庫エリアのフォークリフト2台にタイヤ摩耗が確認されました。使用を停止し速やかに整備または交換を実施してください。', deadline:'2024-11-15', status:'resolved',  created_at:'2024-11-01T09:00:00', updated_at:'2024-11-14T16:00:00' },
    { id:3,  created_by:4, center_id:1, content:'10月チェック集計で5S・3定の遵守率が全エリア平均75%と低水準です。全担当者への再教育と月次での改善状況報告をお願いします。', deadline:'2024-12-31', status:'resolved',  created_at:'2024-11-20T11:00:00', updated_at:'2024-12-25T10:00:00' },
    { id:4,  created_by:5, center_id:1, content:'B棟保管エリアの消火器3本が点検期限を超過しています。今月中に更新手続きを完了させてください。', deadline:'2025-01-31', status:'resolved',  created_at:'2025-01-10T14:00:00', updated_at:'2025-01-30T17:00:00' },
    { id:5,  created_by:4, center_id:1, content:'事務所エリアの空調設備から異音が発生しフィルター清掃も長期間未実施の状態です。専門業者による点検と清掃を実施してください。', deadline:'2025-03-15', status:'rejected',  created_at:'2025-02-20T10:00:00', updated_at:'2025-03-10T09:00:00' },
    { id:6,  created_by:4, center_id:1, content:'緊急連絡先の掲示内容が古く現在の担当者情報と一致していません。各エリアの掲示物を最新情報に更新してください。', deadline:'2025-04-30', status:'resolved',  created_at:'2025-04-01T10:00:00', updated_at:'2025-04-28T14:00:00' },
    { id:7,  created_by:5, center_id:1, content:'第2四半期のチェック結果分析より危険物管理の不備が継続的に発生しています。保管方法の見直しと安全教育を実施し改善報告書を提出してください。', deadline:'2025-07-31', status:'resolved',  created_at:'2025-06-10T11:00:00', updated_at:'2025-07-25T16:00:00' },
    { id:8,  created_by:4, center_id:1, content:'A棟全エリアで夏季の保護具着用率が低下しています。暑熱対策と安全管理の徹底をお願いします。', deadline:'2025-09-30', status:'in_review', created_at:'2025-08-15T09:00:00', updated_at:'2025-09-20T15:00:00' },
    { id:9,  created_by:4, center_id:1, content:'B棟保管エリアのラック設備に変形・ひび割れが確認されました。即時使用を停止し設備の点検・修繕を実施してください。', deadline:'2025-11-15', status:'in_review', created_at:'2025-10-20T10:00:00', updated_at:'2025-11-05T14:00:00' },
    { id:10, created_by:5, center_id:1, content:'年末点検においてA棟シャッター2箇所に動作不良が確認されました。年内に修繕業者を手配し対応してください。', deadline:'2025-12-31', status:'pending',   created_at:'2025-12-05T11:00:00', updated_at:'2025-12-05T11:00:00' },
    { id:11, created_by:4, center_id:1, content:'2025年度フォークリフト始業点検実施率が目標95%を下回り88%にとどまっています。2026年度向けの改善取り組みを策定・報告してください。', deadline:'2026-02-28', status:'in_review', created_at:'2026-01-15T10:00:00', updated_at:'2026-02-20T16:00:00' },
    { id:12, created_by:5, center_id:1, content:'第1四半期チェックで事務所エリアの清掃状態に複数の不備が確認されました。清掃業者への指示見直しと担当者による日次確認の実施をお願いします。', deadline:'2026-05-31', status:'pending',   created_at:'2026-04-10T09:00:00', updated_at:'2026-04-10T09:00:00' },
  ];

  // 是正報告（11件）
  const correctionReports = [
    { id:1,  correction_order_id:1,  reported_by:1, content:'通路上の荷物を全て指定保管場所に移動しました。スタッフへの周知も完了しています。', review_status:'承認済', return_reason:null, reviewed_by:4, reviewed_at:'2024-09-28T15:00:00', created_at:'2024-09-20T16:00:00' },
    { id:2,  correction_order_id:2,  reported_by:2, content:'フォークリフト2台を使用停止し整備業者に連絡しました。タイヤ交換完了後、安全確認の上で運用を再開しました。', review_status:'承認済', return_reason:null, reviewed_by:4, reviewed_at:'2024-11-14T16:00:00', created_at:'2024-11-10T14:00:00' },
    { id:3,  correction_order_id:3,  reported_by:1, content:'全担当者への5S研修を11月末に実施しました。各エリアに5S管理表を掲示し日次確認を開始しています。', review_status:'差戻し', return_reason:'改善の数値目標と測定方法が不明確です。月次の改善状況をデータで報告してください。', reviewed_by:5, reviewed_at:'2024-12-10T10:00:00', created_at:'2024-12-05T15:00:00' },
    { id:4,  correction_order_id:3,  reported_by:1, content:'12月5S遵守率は全エリア平均88%（10月比+13%）。定位置管理92%、不用品除去89%。引き続き月次で測定します。', review_status:'承認済', return_reason:null, reviewed_by:5, reviewed_at:'2024-12-25T10:00:00', created_at:'2024-12-20T16:00:00' },
    { id:5,  correction_order_id:4,  reported_by:1, content:'消火器3本を新品に交換しました。今後は点検スケジュールをシステムに登録し期限管理を徹底します。', review_status:'承認済', return_reason:null, reviewed_by:5, reviewed_at:'2025-01-30T17:00:00', created_at:'2025-01-25T14:00:00' },
    { id:6,  correction_order_id:5,  reported_by:2, content:'空調フィルターを清掃しました。異音については担当者が確認しましたが特に異常は確認できませんでした。', review_status:'差戻し', return_reason:'清掃実施は確認しましたが異音の原因究明が不十分です。専門業者による診断書の提出をお願いします。', reviewed_by:4, reviewed_at:'2025-03-10T09:00:00', created_at:'2025-03-05T10:00:00' },
    { id:7,  correction_order_id:6,  reported_by:1, content:'全4エリアの緊急連絡先掲示物を最新情報に更新しました。四半期ごとの確認ルールも策定しました。', review_status:'承認済', return_reason:null, reviewed_by:4, reviewed_at:'2025-04-28T14:00:00', created_at:'2025-04-20T11:00:00' },
    { id:8,  correction_order_id:7,  reported_by:1, content:'危険物管理責任者を指定し保管場所の整理と表示の徹底を行いました。7月に安全教育を実施し全担当者が受講完了しました。', review_status:'承認済', return_reason:null, reviewed_by:5, reviewed_at:'2025-07-25T16:00:00', created_at:'2025-07-20T15:00:00' },
    { id:9,  correction_order_id:8,  reported_by:2, content:'冷風扇の設置と保護具着用の朝礼確認を実施。9月の保護具着用率は95%まで改善しました。', review_status:'承認待ち', return_reason:null, reviewed_by:null, reviewed_at:null, created_at:'2025-09-20T15:00:00' },
    { id:10, correction_order_id:9,  reported_by:1, content:'B棟ラック設備を即時使用停止としました。設備業者への連絡と見積もり取得を行い修繕工事を実施予定です。', review_status:'承認待ち', return_reason:null, reviewed_by:null, reviewed_at:null, created_at:'2025-11-05T14:00:00' },
    { id:11, correction_order_id:11, reported_by:1, content:'始業点検の未実施防止のためリマインダー通知を導入し、未実施者への督促フローを策定。2月実施率は92%に改善しています。', review_status:'承認待ち', return_reason:null, reviewed_by:null, reviewed_at:null, created_at:'2026-02-20T16:00:00' },
  ];

  const incidentReports = _INCIDENT_RECORDS.map(r => ({
    ...r,
    created_at: r.discovery_date + 'T09:00:00',
  }));
  return { checkRecords, checkResults, ngDetails, correctionOrders, correctionReports, incidentReports };
}

// ─── ヒヤリハット分析用マスタ ────────────────────────────────

const MASTER_HAZARDS = [
  { id: 1, name: 'FL（リーチ・カウンター）', display_order: 1, is_active: true },
  { id: 2, name: 'RB（ロールボックス）',     display_order: 2, is_active: true },
  { id: 3, name: 'ゴミ・不要物',             display_order: 3, is_active: true },
  { id: 4, name: 'ハンドリフト ロック',       display_order: 4, is_active: true },
  { id: 5, name: '定位置外（ちょい置き）',   display_order: 5, is_active: true },
  { id: 6, name: '床面汚染（油・水）',        display_order: 6, is_active: true },
  { id: 7, name: '高所作業・梯子',            display_order: 7, is_active: true },
  { id: 8, name: '設備・機械',               display_order: 8, is_active: true },
];

const MASTER_INJURY_TYPES = [
  { id: 1, name: '転倒',           display_order: 1, is_active: true },
  { id: 2, name: '激突',           display_order: 2, is_active: true },
  { id: 3, name: '飛来・落下',     display_order: 3, is_active: true },
  { id: 4, name: '挟まれ・巻き込まれ', display_order: 4, is_active: true },
  { id: 5, name: '切れ・こすれ',   display_order: 5, is_active: true },
  { id: 6, name: '打撲',           display_order: 6, is_active: true },
  { id: 7, name: '腰痛',           display_order: 7, is_active: true },
];

// ─── インシデント（ヒヤリハット）サンプルデータ ──────────────

const _INCIDENT_RECORDS = [
  { id:  1, discovery_date:'2024-08-15', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'庫内にゴミが落ちており、RB搬送・FL走行の妨げとなる転倒リスクがある。段ボール片・梱包テープが通路に散乱しているのを FSI チェック中に確認。', risk_level_id:2, check_result_id:null },
  { id:  2, discovery_date:'2024-08-22', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:1, injury_type_id:2, content:'FL（リーチ）走行エリアに作業員が立ち入り、接触事故の一歩手前の状況が確認された。誘導員の配置と走行ルートの再周知が必要。', risk_level_id:5, check_result_id:null },
  { id:  3, discovery_date:'2024-09-10', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:5, injury_type_id:1, content:'通路にパレットがちょい置きされており有効幅が確保できていない。転倒・FL接触リスクが確認された。定位置管理の徹底が必要。', risk_level_id:2, check_result_id:null },
  { id:  4, discovery_date:'2024-09-18', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:2, injury_type_id:4, content:'RB搬送中に床の凹凸で荷物が崩れかけ、作業員が足を挟まれそうになった。床面補修と走行ルートの点検が必要。', risk_level_id:3, check_result_id:null },
  { id:  5, discovery_date:'2024-10-05', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:6, injury_type_id:1, content:'床面に油漏れが確認され、FL・RB走行中の滑走リスクおよび作業員の転倒リスクがある。油漏れ源の特定と清掃が急務。', risk_level_id:3, check_result_id:null },
  { id:  6, discovery_date:'2024-10-14', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:4, injury_type_id:1, content:'ハンドリフトのロックが外れた状態で傾斜部に放置されており、暴走リスクがある。使用後のロック実施ルールの再徹底が必要。', risk_level_id:3, check_result_id:null },
  { id:  7, discovery_date:'2024-11-08', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:1, injury_type_id:2, content:'FL（カウンター）走行ルートに資材が張り出しており、接触・激突リスクが確認された。荷置き場所の見直しが必要。', risk_level_id:4, check_result_id:null },
  { id:  8, discovery_date:'2024-11-20', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:3, injury_type_id:1, content:'廃棄段ボールが通路に積み上げられており、視界の妨げと転倒リスクがある。廃棄ルールと保管場所の周知徹底が必要。', risk_level_id:1, check_result_id:null },
  { id:  9, discovery_date:'2024-12-03', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:8, injury_type_id:4, content:'シャッター動作中に作業員が通過しようとする場面があり、挟まれ事故の危険があった。安全インターロックの点検と動作中立入禁止の周知が必要。', risk_level_id:5, check_result_id:null },
  { id: 10, discovery_date:'2024-12-17', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:5, injury_type_id:2, content:'作業台付近に不要資材がちょい置きされており、足元の安全が確保できていない。日常的な整理整頓の習慣付けが必要。', risk_level_id:2, check_result_id:null },
  { id: 11, discovery_date:'2025-01-09', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:2, injury_type_id:1, content:'RBの急停止時にロックが外れ、傾斜部での自走リスクが確認された。ロック機構の点検と使用前確認ルールの徹底が必要。', risk_level_id:3, check_result_id:null },
  { id: 12, discovery_date:'2025-01-22', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:7, injury_type_id:3, content:'脚立使用時に安全帯を着用せず高所作業を行っており、転落リスクが確認された。保護具着用ルールの再教育が必要。', risk_level_id:4, check_result_id:null },
  { id: 13, discovery_date:'2025-02-11', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'出荷エリア通路にゴミ（テープ・段ボール切れ端）が散乱しており、作業員の転倒リスクがある。清掃頻度の見直しが必要。', risk_level_id:2, check_result_id:null },
  { id: 14, discovery_date:'2025-02-25', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:1, injury_type_id:1, content:'FL旋回時にラック角部に荷台が接触しそうになった。通路幅の再計測とラック配置の見直しが必要。', risk_level_id:4, check_result_id:null },
  { id: 15, discovery_date:'2025-03-07', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:5, injury_type_id:1, content:'シャッター付近に段ボールがちょい置きされており、緊急時の避難経路を塞いでいる。即時撤去と再発防止策の検討が必要。', risk_level_id:3, check_result_id:null },
  { id: 16, discovery_date:'2025-03-19', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:4, injury_type_id:1, content:'ハンドリフトを定位置に戻す際にロック未実施で放置。傾斜部での自走リスクがあり、転落事故につながる恐れあり。', risk_level_id:3, check_result_id:null },
  { id: 17, discovery_date:'2025-04-10', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:6, injury_type_id:1, content:'出荷ドック床面に水が溜まっており、作業員が滑りそうになる場面が複数確認された。排水設備の点検と床面整備が必要。', risk_level_id:3, check_result_id:null },
  { id: 18, discovery_date:'2025-04-24', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:3, injury_type_id:1, content:'入庫エリアにゴミが落ちており、RB搬送・FL走行の妨げとなるリスクが確認された。作業中の都度清掃ルールの策定が必要。', risk_level_id:2, check_result_id:null },
  { id: 19, discovery_date:'2025-05-08', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:1, injury_type_id:2, content:'FL（リーチ）走行エリアへの歩行者立入が複数回確認された。物理的なゾーニングと誘導員配置の検討が急務。', risk_level_id:5, check_result_id:null },
  { id: 20, discovery_date:'2025-05-20', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:8, injury_type_id:4, content:'コンベア回転部付近で保護カバーが外れており、巻き込まれリスクがある。設備保全部門への連絡と使用停止対応が必要。', risk_level_id:5, check_result_id:null },
  { id: 21, discovery_date:'2025-06-05', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:2, injury_type_id:1, content:'RB搬送中に床の凹凸で荷崩れが発生し、通路を塞ぐ状況が確認された。床面補修と荷物の積載方法の見直しが必要。', risk_level_id:3, check_result_id:null },
  { id: 22, discovery_date:'2025-06-18', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:5, injury_type_id:2, content:'出庫エリア通路にパレットがちょい置きされており有効幅が確保できていない。FL接触リスクが高く即時対応が必要。', risk_level_id:4, check_result_id:null },
  { id: 23, discovery_date:'2025-07-09', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:3, injury_type_id:1, content:'B棟保管エリア通路に段ボール片が散乱。歩行中の転倒リスクが確認された。日次清掃チェックの強化が必要。', risk_level_id:1, check_result_id:null },
  { id: 24, discovery_date:'2025-07-23', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:7, injury_type_id:3, content:'高棚上部の荷物が不安定な状態で積まれており、落下リスクが確認された。積載方法の再確認と固定バンドの使用徹底が必要。', risk_level_id:4, check_result_id:null },
  { id: 25, discovery_date:'2025-08-06', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:1, injury_type_id:2, content:'FL（カウンター）走行時、見通しの悪い交差点で歩行者と接触しそうになった。ミラーの設置と徐行ルールの周知が必要。', risk_level_id:5, check_result_id:null },
  { id: 26, discovery_date:'2025-08-20', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:4, injury_type_id:1, content:'ハンドリフトのロックが外れた状態で放置されており、傾斜エリアでの暴走リスクがある。始業・終業時の確認ルール徹底が必要。', risk_level_id:3, check_result_id:null },
  { id: 27, discovery_date:'2025-09-11', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'入庫エリアにゴミ（梱包材・テープ類）が多数落ちており、RB搬送・FL走行の妨げとなるリスクが確認された。', risk_level_id:2, check_result_id:null },
  { id: 28, discovery_date:'2025-09-25', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:6, injury_type_id:1, content:'フォークリフト充電エリア付近の床面に油漏れが確認された。電気設備との組み合わせで火災リスクもある。即時清掃が必要。', risk_level_id:4, check_result_id:null },
  { id: 29, discovery_date:'2025-10-08', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:8, injury_type_id:4, content:'充電中のFL周辺に可燃物（段ボール箱）が置かれており、発火・火災リスクがある。充電エリアの立入制限と周辺整理が必要。', risk_level_id:5, check_result_id:null },
  { id: 30, discovery_date:'2025-10-22', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:5, injury_type_id:1, content:'事務所近くの通路に資材がちょい置きされており、足元が不安定。高齢スタッフの転倒リスクが特に高い。', risk_level_id:1, check_result_id:null },
  { id: 31, discovery_date:'2025-11-06', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:1, injury_type_id:2, content:'FL旋回エリアでの歩行者立入が今月も確認された。物理的バリアの設置と立入禁止表示の強化を検討中。', risk_level_id:4, check_result_id:null },
  { id: 32, discovery_date:'2025-11-19', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:2, injury_type_id:4, content:'RB走行中に急ブレーキをかけた際、後続のスタッフが接触しそうになった。走行間隔の確保と声掛けルールの徹底が必要。', risk_level_id:3, check_result_id:null },
  { id: 33, discovery_date:'2025-12-10', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'年末繁忙期でゴミ・廃棄物の処理が追いついておらず通路に散乱している。臨時の清掃シフトと廃棄スペースの確保が必要。', risk_level_id:2, check_result_id:null },
  { id: 34, discovery_date:'2025-12-23', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:7, injury_type_id:3, content:'棚の上段への手作業での荷物積み上げ中に、バランスを崩して落下しそうになった。昇降設備の使用を義務付ける必要がある。', risk_level_id:4, check_result_id:null },
  { id: 35, discovery_date:'2026-01-14', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:5, injury_type_id:2, content:'緊急避難口付近に段ボールがちょい置きされており、避難路を塞いでいる。即時撤去済み。定点監視の仕組みが必要。', risk_level_id:4, check_result_id:null },
  { id: 36, discovery_date:'2026-01-28', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:6, injury_type_id:1, content:'出荷ドック付近の床面に結露による水濡れが確認され、作業員が滑りそうになった。マット設置と除湿対策の検討が必要。', risk_level_id:3, check_result_id:null },
  { id: 37, discovery_date:'2026-02-12', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'A棟入庫エリア通路に梱包材が散乱している状態が複数箇所で確認された。作業中の随時清掃ルールの策定が急務。', risk_level_id:2, check_result_id:null },
  { id: 38, discovery_date:'2026-02-26', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:1, injury_type_id:2, content:'FL（リーチ）後進時に死角から作業員が飛び出し、接触一歩手前の状況が発生した。バックブザーの点検と後進ルールの周知が必要。', risk_level_id:5, check_result_id:null },
  { id: 39, discovery_date:'2026-03-11', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:8, injury_type_id:4, content:'シャッター閉動作中に誤って作業員がエリアに入り、挟まれ事故の危険があった。安全センサーの動作確認が必要。', risk_level_id:6, check_result_id:null },
  { id: 40, discovery_date:'2026-03-25', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:4, injury_type_id:1, content:'ハンドリフトのロック機構が摩耗により正常に機能しておらず、坂道での自走リスクがある。機器の交換申請が必要。', risk_level_id:5, check_result_id:null },
  { id: 41, discovery_date:'2026-04-09', discovery_type:'FSI',        center_id:1, reported_by:4, hazard_id:3, injury_type_id:1, content:'月次FSIチェックにて入庫・出庫の両エリアでゴミの散乱を確認。繁忙期の清掃管理強化が必要。', risk_level_id:2, check_result_id:null },
  { id: 42, discovery_date:'2026-04-22', discovery_type:'ヒヤリハット', center_id:1, reported_by:1, hazard_id:2, injury_type_id:4, content:'RB搬送中に荷物が崩れ、作業員の手が挟まれそうになった。積載重量と高さの制限の再周知が必要。', risk_level_id:3, check_result_id:null },
  { id: 43, discovery_date:'2026-05-07', discovery_type:'FSI',        center_id:1, reported_by:5, hazard_id:5, injury_type_id:1, content:'B棟通路2箇所でちょい置きが確認された。先月からの再発であり、担当者への個別指導と記録管理が必要。', risk_level_id:2, check_result_id:null },
  { id: 44, discovery_date:'2026-05-19', discovery_type:'ヒヤリハット', center_id:1, reported_by:2, hazard_id:1, injury_type_id:2, content:'FL作業区域に外部業者が無断で立ち入り、FL走行中の車両と接触しそうになった。外来者管理ルールの見直しが必要。', risk_level_id:5, check_result_id:null },
];

// グローバルに公開
Object.assign(window, {
  MASTER_RISK_LEVELS,
  MASTER_CENTERS,
  MASTER_AREAS,
  MASTER_USERS,
  MASTER_CHECK_CATEGORIES,
  MASTER_CHECK_ITEMS,
  MASTER_AREA_CHECK_ITEMS,
  MASTER_HAZARDS,
  MASTER_INJURY_TYPES,
  generateSampleData,
});
