Newer
Older
client_dwatch / lib / fixtures / ds-devices.ts
import type { DsDevice } from "@/lib/types";
import { at } from "./_helpers";

/** ★fixtures の制御盤は必ず心拍(最終通信)を持つ★(API の型は心拍0件で `null` を許す。指示書BB A1。型で固定・データは変えない) */
export type FixtureDsDevice = DsDevice & { last_reported_at: string };

/**
 * D-Secログ(D-S制御盤)のサンプルデータ
 *
 * ★ トークン期限 / 残日数は移植しない(D-030: 仕様から除外済み)★
 *   モックの DSDEV には `te` フィールドが残っているが、実装対象外。
 *
 * docs/fixtures.md §5 のケース
 *   - 2状態すべて(正常 / 異常)★通信断は「異常」に含まれる。3状態目は存在しない(D-065)★
 *   - 自動ソート確認: ここでは「正常→異常→正常→異常」の順で定義してある。
 *     画面表示時に「異常 → 正常」に並び替わることを確認すること(サーバ側でソート)
 *   - 備考あり / なし(空文字ではなく null で持つ)
 */
export const dsDevices: FixtureDsDevice[] = [
  // あえてバラバラな順序で定義(ソートの確認用)
  {
    serial_number: "DS-002",
    facility_id: 3,
    facility_name: "メガバリューマート東口店",
    connection_status: "ok",
    last_reported_at: at(0, "09:01"),
    note: null,
  },
  {
    serial_number: "DS-001",
    facility_id: 1,
    facility_name: "メガバリューマート中央本店",
    connection_status: "error",
    last_reported_at: at(0, "03:42"),
    note: "現地確認済み。制御盤の電源ユニット交換を手配中",
  },
  {
    serial_number: "DS-003",
    facility_id: 4,
    facility_name: "バリューマート西通り店",
    connection_status: "ok",
    last_reported_at: at(0, "09:00"),
    note: null,
  },
  {
    serial_number: "DS-005",
    facility_id: 11,
    facility_name: "バリューマート川下店",
    connection_status: "error",
    last_reported_at: at(0, "02:55"),
    note: "9/5 に制御盤を再起動して復旧を確認。しばらく様子見",
  },
  {
    serial_number: "DS-004",
    facility_id: 5,
    facility_name: "メガバリューマート港南総本店",
    connection_status: "ok",
    last_reported_at: at(0, "08:55"),
    note: null,
  },
  {
    serial_number: "DS-006",
    facility_id: 7,
    facility_name: "メガバリューマート緑野店",
    connection_status: "ok",
    last_reported_at: at(0, "08:58"),
    note: "定期点検実施済み",
  },

  // --- 11件以上(ページング確認用)に増やすため追加 ---
  {
    serial_number: "DS-007",
    facility_id: 2,
    facility_name: "バリューマート北町店",
    connection_status: "ok",
    last_reported_at: at(0, "08:50"),
    note: null,
  },
  {
    serial_number: "DS-008",
    facility_id: 6,
    facility_name: "バリューマート南丘駅前店",
    connection_status: "ok",
    last_reported_at: at(0, "08:47"),
    note: null,
  },
  {
    serial_number: "DS-009",
    facility_id: 8,
    facility_name: "メガバリューマート桜台店",
    connection_status: "error",
    last_reported_at: at(0, "04:10"),
    note: "店舗担当者へ連絡済み。今夜も再発するようなら訪問する",
  },
  {
    serial_number: "DS-010",
    facility_id: 9,
    facility_name: "メガバリューマート三ツ橋中央ショッピングセンター店",
    connection_status: "error",
    last_reported_at: at(0, "01:30"),
    note: "LAN ケーブルの緩みを現地で直した。翌朝あらためて確認",
  },
  {
    serial_number: "DS-011",
    facility_id: 10,
    facility_name: "バリューマート城南店",
    connection_status: "ok",
    last_reported_at: at(0, "08:52"),
    note: "定期点検実施済み",
  },
  {
    serial_number: "DS-012",
    facility_id: 12,
    facility_name: "メガバリューマート緑野第二店",
    connection_status: "error",
    last_reported_at: at(0, "03:20"),
    note: "警備会社へ連絡済み。復帰手順の再確認を依頼中",
  },
];

/**
 * 「全部正常」のケース(異常0件でサマリカードがどう出るか)を確認したいときに使う。
 * APIルート側でクエリパラメータやフラグで差し替えて確認してください。
 */
export const dsDevicesAllOk: FixtureDsDevice[] = dsDevices.map((d) => ({
  ...d,
  connection_status: "ok",
  note: null,
}));

/**
 * 該当0件(docs/fixtures.md §10)を確認したいときは、
 * `q` に一致しない検索語(例: "ZZZ-NOMATCH")を指定してください。
 * facility_name / serial_number のどちらにも一致しない前提です。
 */