FEAT: Adicionado tabela para validar atividade do agente
This commit is contained in:
parent
08eea51d5a
commit
a6a09aa740
52
database/migrations/015_agent_presence_pause.sql
Normal file
52
database/migrations/015_agent_presence_pause.sql
Normal file
@ -0,0 +1,52 @@
|
||||
-- ============================================================
|
||||
-- Migration 015: Presenca do agente e reserva de chamados em pausa
|
||||
-- Tabelas:
|
||||
-- agent_presence
|
||||
-- whatsapp_chat_atribuicoes
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS agent_presence (
|
||||
user_id INTEGER PRIMARY KEY REFERENCES usuarios(id) ON DELETE CASCADE,
|
||||
status VARCHAR(40) NOT NULL DEFAULT 'offline',
|
||||
paused_at TIMESTAMP WITH TIME ZONE,
|
||||
last_seen_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint
|
||||
WHERE conname = 'chk_agent_presence_status'
|
||||
) THEN
|
||||
ALTER TABLE agent_presence
|
||||
ADD CONSTRAINT chk_agent_presence_status
|
||||
CHECK (status IN ('available', 'paused', 'offline'));
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
INSERT INTO agent_presence (user_id, status, last_seen_at, updated_at)
|
||||
SELECT id, 'available', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP
|
||||
FROM usuarios
|
||||
ON CONFLICT (user_id) DO NOTHING;
|
||||
|
||||
ALTER TABLE whatsapp_chat_atribuicoes
|
||||
ADD COLUMN IF NOT EXISTS reserved_user_id INTEGER REFERENCES usuarios(id) ON DELETE SET NULL,
|
||||
ADD COLUMN IF NOT EXISTS reserved_at TIMESTAMP WITH TIME ZONE,
|
||||
ADD COLUMN IF NOT EXISTS pause_released_at TIMESTAMP WITH TIME ZONE;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_presence_status
|
||||
ON agent_presence (status);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_presence_paused_at
|
||||
ON agent_presence (paused_at)
|
||||
WHERE status = 'paused';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_whatsapp_atribuicoes_reserved_user
|
||||
ON whatsapp_chat_atribuicoes (reserved_user_id, status)
|
||||
WHERE reserved_user_id IS NOT NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_whatsapp_atribuicoes_reserved_queue
|
||||
ON whatsapp_chat_atribuicoes (area_id, status, reserved_user_id)
|
||||
WHERE status = 'queued';
|
||||
Loading…
Reference in New Issue
Block a user