-- Migration 035: Agent DAGI Audit Fields
-- Поля для відстеження активності агентів в DAGI Router

-- ============================================================================
-- Додати поля для аудиту
-- ============================================================================

-- last_seen_at — останній раз коли агента бачив DAGI Router
ALTER TABLE agents ADD COLUMN IF NOT EXISTS last_seen_at timestamptz;

-- dagi_status — статус в контексті DAGI Router
-- active: агент активний в Router і БД
-- stale: агент є в БД, але не відповідає в Router
-- phantom: агент є в Router, але немає в БД (не зберігається в БД)
-- error: помилка при перевірці
ALTER TABLE agents ADD COLUMN IF NOT EXISTS dagi_status text 
    CHECK (dagi_status IS NULL OR dagi_status IN ('active', 'stale', 'error'));

-- Індекс для швидкого пошуку по dagi_status
CREATE INDEX IF NOT EXISTS idx_agents_dagi_status ON agents(dagi_status) WHERE dagi_status IS NOT NULL;

-- Індекс для пошуку агентів що давно не відповідали
CREATE INDEX IF NOT EXISTS idx_agents_last_seen ON agents(last_seen_at) WHERE last_seen_at IS NOT NULL;

-- ============================================================================
-- Таблиця для зберігання історії аудитів
-- ============================================================================

CREATE TABLE IF NOT EXISTS dagi_audit_reports (
    id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
    node_id text NOT NULL,
    timestamp timestamptz NOT NULL DEFAULT now(),
    
    -- Summary
    router_total integer NOT NULL DEFAULT 0,
    db_total integer NOT NULL DEFAULT 0,
    active_count integer NOT NULL DEFAULT 0,
    phantom_count integer NOT NULL DEFAULT 0,
    stale_count integer NOT NULL DEFAULT 0,
    
    -- Детальний звіт (JSON)
    report_data jsonb,
    
    -- Метадані
    triggered_by text, -- 'cron', 'manual', 'api'
    created_at timestamptz NOT NULL DEFAULT now()
);

-- Індекс по ноді та часу
CREATE INDEX IF NOT EXISTS idx_dagi_audit_node_time 
    ON dagi_audit_reports(node_id, timestamp DESC);

-- ============================================================================
-- Коментарі
-- ============================================================================

COMMENT ON COLUMN agents.last_seen_at IS 'Last time this agent was seen active in DAGI Router';
COMMENT ON COLUMN agents.dagi_status IS 'Current status in DAGI ecosystem: active, stale, error';
COMMENT ON TABLE dagi_audit_reports IS 'History of DAGI agent audit reports per node';

-- ============================================================================
-- Результат
-- ============================================================================

SELECT 'Migration 035 completed: DAGI audit fields added' AS result;

