-- 0048 -- a conversa sabe de que PAINEL ela nasceu
--
-- O QUE FALTAVA
--
-- A gaveta de um painel abre uma conversa como qualquer outra, e ao fechar a
-- gaveta ela some da tela. Reabrir nao existia: o proximo clique em Analisar
-- comecava outra conversa do zero, e o que ja tinha sido perguntado ficava
-- so no banco, inalcancavel.
--
-- Pior, e menos visivel: essas conversas entravam na LISTA do assistente,
-- misturadas com as do chat. No cenario de demonstracao elas nao aparecem
-- juntas por acidente -- a pagina de paineis usa outro `end_user` --, mas numa
-- integracao de verdade, onde o chat e os paineis sao a mesma pessoa, a lista
-- de conversas passaria a ter "Qual a tendencia desses dados?" sem nada dizer
-- de qual grafico.
--
--
-- POR QUE UMA COLUNA, E NAO UMA TABELA
--
-- A conversa continua sendo uma conversa: mesmo laco, mesmas mensagens, mesmo
-- agente, mesma compactacao. O que muda e de ONDE ela nasceu. Isso e um
-- atributo dela, e uma tabela de ligacao para um relacionamento 1-para-1
-- obrigaria toda leitura a um JOIN para responder "de quem e esta conversa".
--
-- NULL e o caso normal: conversa do chat, que nao nasceu de painel nenhum.
--
--
-- SEM FK, E DE PROPOSITO
--
-- Apagar um painel nao pode apagar -- nem travar -- a conversa que alguem teve
-- sobre ele. A leitura feita naquele dia continua sendo um fato, e o registro
-- do que foi perguntado e respondido vale mesmo depois que o grafico deixou de
-- existir. Painel apagado deixa a conversa orfa, e orfa e o estado certo.
ALTER TABLE embed_conversations
  ADD COLUMN panel_id BIGINT UNSIGNED NULL AFTER scope;

-- A pergunta que a gaveta faz ao abrir: "qual foi a ultima conversa DESTE
-- painel, para ESTA pessoa?". Sem o indice ela varre a tabela inteira a cada
-- abertura de gaveta.
CREATE INDEX idx_embed_conversations_painel
  ON embed_conversations (tenant_id, panel_id, end_user, id);
