-- 0024 — o botao "essa resposta esta errada"
--
-- O widget responde com numero. Numero errado que ninguem reporta vira decisao
-- errada, e depois vira desconfianca no produto inteiro. O caminho hoje para
-- avisar que o agente errou e mandar um print por WhatsApp para alguem.
--
-- Esta tabela e o caminho curto: quem viu o erro marca ali, e a marcacao chega
-- com TUDO que era preciso para reproduzir — a pergunta, a resposta, as
-- ferramentas que o agente usou e o alcance da sessao. Sem isso o reporte vira
-- "o sistema errou ontem", que nao se investiga.
--
-- Nao e correcao de contexto. Correcao muda o que o dado SIGNIFICA e exige
-- can_correct, porque vale para todo o projeto. Marcar uma resposta como
-- errada nao muda nada para ninguem: e um recado. Por isso qualquer sessao
-- pode fazer, e por isso mora numa tabela separada.

CREATE TABLE embed_feedback (
  id              BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  tenant_id       BIGINT UNSIGNED NOT NULL,

  -- NULL quando a sessao e de alcance TENANT: a pergunta atravessou varios
  -- projetos e apontar um so seria mentira. tenant_id, esse, nunca e nulo — e
  -- ele que garante que um reporte jamais seja lido por outro cliente.
  project_id      BIGINT UNSIGNED NULL,

  -- A sessao pode expirar e ser limpa; o reporte tem de sobreviver a ela. Por
  -- isso ON DELETE SET NULL, e por isso end_user/end_user_label sao COPIADOS
  -- aqui em vez de lidos por join.
  session_id      BIGINT UNSIGNED NULL,

  end_user        VARCHAR(190) NULL,
  end_user_label  VARCHAR(190) NULL,

  -- 'wrong' | 'good'. O 'good' existe para dar denominador: dez reportes de
  -- erro em dez perguntas e um produto quebrado; dez em dez mil, nao.
  verdict         VARCHAR(16) NOT NULL,

  question        TEXT NOT NULL,
  answer          MEDIUMTEXT NULL,
  comment         TEXT NULL,

  -- O caminho que o agente percorreu. E o que transforma "errou" em "errou ao
  -- cruzar estes dois datasets".
  tools_used      JSON NULL,
  scope           VARCHAR(16) NOT NULL DEFAULT 'project',

  -- Quando alguem daqui olhou. Reporte que ninguem le e pior que reporte que
  -- nao existe, porque da a impressao de que o canal funciona.
  reviewed_at     DATETIME NULL,
  reviewed_note   TEXT NULL,

  created_at      DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

  PRIMARY KEY (id),
  KEY idx_embed_feedback_projeto (project_id, created_at),
  KEY idx_embed_feedback_pendente (tenant_id, reviewed_at),
  CONSTRAINT fk_embed_feedback_tenant  FOREIGN KEY (tenant_id)  REFERENCES tenants(id),
  CONSTRAINT fk_embed_feedback_project FOREIGN KEY (project_id) REFERENCES projects(id),
  CONSTRAINT fk_embed_feedback_session FOREIGN KEY (session_id) REFERENCES embed_sessions(id)
    ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
