-- قاعدة حالة نظام المراقبة (منفصلة عن myclinikx). MySQL/MariaDB, utf8mb4.

CREATE TABLE IF NOT EXISTS messages (
  id            BIGINT PRIMARY KEY,            -- معرّف رسالة Chatwoot
  conversation  INT NOT NULL,                  -- display_id
  inbox_id      INT,
  message_type  TINYINT,                       -- 0=وارد 1=صادر 2=نشاط
  is_private    TINYINT DEFAULT 0,
  sender_type   VARCHAR(16),                   -- contact|user|agent_bot
  sender_id     BIGINT,
  content       TEXT,
  created_at    INT NOT NULL,                  -- epoch
  seen_at       INT NOT NULL,
  INDEX (conversation), INDEX (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS conversations (
  conversation   INT PRIMARY KEY,             -- display_id
  inbox_id       INT,
  status         VARCHAR(16),
  assignee_id    BIGINT NULL,
  first_incoming INT NULL,
  last_incoming  INT NULL,
  last_incoming_text VARCHAR(255) NULL,
  last_reply     INT NULL,
  last_replier   BIGINT NULL,
  waiting        TINYINT DEFAULT 0,           -- 1 = عميل ينتظر رداً
  wait_start     INT NULL,
  responsible_id BIGINT NULL,
  updated_at     INT NOT NULL,
  INDEX (waiting), INDEX (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- كل حلقة رد مُغلقة (لتقارير النوبة/اليوم)
CREATE TABLE IF NOT EXISTS episodes (
  id             BIGINT AUTO_INCREMENT PRIMARY KEY,
  conversation   INT NOT NULL,
  wait_start     INT NOT NULL,
  reply_at       INT NOT NULL,
  replier_id     BIGINT NULL,
  responsible_id BIGINT NULL,
  fair_sec       INT NOT NULL,
  reply_hour     TINYINT,
  kind           VARCHAR(24) DEFAULT 'reply', -- reply | resolved_without_reply
  INDEX (reply_at), INDEX (replier_id), INDEX (wait_start)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- عيّنات حضور الموظفين (خط زمني — Chatwoot لا يحفظه)
CREATE TABLE IF NOT EXISTS presence (
  id        BIGINT AUTO_INCREMENT PRIMARY KEY,
  agent_id  BIGINT NOT NULL,
  status    VARCHAR(16),                       -- online|busy|offline
  ts        INT NOT NULL,
  INDEX (agent_id, ts)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- منع تكرار التنبيه + سجل
CREATE TABLE IF NOT EXISTS alerts (
  id         BIGINT AUTO_INCREMENT PRIMARY KEY,
  dedupe_key VARCHAR(191) UNIQUE,              -- مثل wait:1481:red
  type       VARCHAR(32),
  conversation INT NULL,
  agent_id   BIGINT NULL,
  fired_at   INT NOT NULL,
  payload    TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- علامات المهام الدورية (نهاية نوبة / تقرير يومي) لمنع الازدواج
CREATE TABLE IF NOT EXISTS ticks (
  tick_key VARCHAR(191) PRIMARY KEY,           -- مثل shiftreport:2026-07-02:16 أو daily:2026-07-02
  done_at  INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
