-- ============================================= -- BANCO DE DADOS: hubglpi -- DESCRIÇÃO: Sistema de integração entre HubSoft e GLPI -- OBS: Chamados sempre são abertos pelo HubSoft -- ============================================= -- ============================================= -- TABELA: hubsoft_tickets -- DESCRIÇÃO: Armazena os chamados originados do HubSoft -- ============================================= CREATE TABLE hubsoft_tickets ( id SERIAL PRIMARY KEY, protocolo VARCHAR(50) UNIQUE NOT NULL, descricao_abertura TEXT NOT NULL, descricao_fechamento TEXT, tipo_atendimento VARCHAR(100), cliente_codigo INTEGER NOT NULL, cliente_nome VARCHAR(255) NOT NULL, servico_id VARCHAR(50), servico_nome VARCHAR(255), data_abertura TIMESTAMP DEFAULT CURRENT_TIMESTAMP, data_fechamento TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- ============================================= -- TABELA: sync_data -- DESCRIÇÃO: Armazena o estado da sincronização entre HubSoft e GLPI -- ============================================= CREATE TABLE sync_logs ( id SERIAL PRIMARY KEY, hubsoft_ticket_id INTEGER NOT NULL REFERENCES hubsoft_tickets(id), glpi_ticket_id INTEGER, source_last source_last_enum DEFAULT 'hubsoft', status_sync status_sync_enum DEFAULT 'pending_create', sync_metadata JSONB, last_sync_attempt TIMESTAMP, sync_error_message TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE (hubsoft_ticket_id, glpi_ticket_id) ); CREATE TYPE source_last_enum AS ENUM ('hubsoft', 'glpi'); CREATE TYPE status_sync_enum AS ENUM ( 'pending_create', 'created_glpi', 'pending_close', 'closed_glpi', 'sync_error', 'need_update' );