From b335ce6254ec14750f1510915c1dc9e09594b479 Mon Sep 17 00:00:00 2001 From: ph34444 Date: Mon, 16 Mar 2026 16:22:28 +0100 Subject: [PATCH] infra: PostgreSQL audit schema for KB tracking --- sql/01-audit-schema.sql | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 sql/01-audit-schema.sql diff --git a/sql/01-audit-schema.sql b/sql/01-audit-schema.sql new file mode 100644 index 0000000..297afd4 --- /dev/null +++ b/sql/01-audit-schema.sql @@ -0,0 +1,58 @@ +-- PostgreSQL Audit Schema for Knowledge Base Tracking +-- Task 1.2: Create 3 tables with audit trail functionality + +-- Table 1: knowledge_base_updates +-- Tracks all knowledge base updates with approval workflow +CREATE TABLE IF NOT EXISTS knowledge_base_updates ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + ticket_id INTEGER NOT NULL, + problem_text TEXT NOT NULL, + kategorie VARCHAR(100), + lösung TEXT, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + approved_at TIMESTAMP, + executed_at TIMESTAMP, + status VARCHAR(50) NOT NULL DEFAULT 'PENDING', + freescout_note TEXT, + CONSTRAINT status_check CHECK (status IN ('PENDING', 'APPROVED', 'REJECTED', 'EXECUTED')) +); + +-- Indexes for knowledge_base_updates +CREATE INDEX idx_kbu_ticket_id ON knowledge_base_updates(ticket_id); +CREATE INDEX idx_kbu_status ON knowledge_base_updates(status); +CREATE INDEX idx_kbu_kategorie ON knowledge_base_updates(kategorie); + +-- Table 2: kb_feedback +-- Stores user feedback on knowledge base entries +CREATE TABLE IF NOT EXISTS kb_feedback ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + kb_entry_id VARCHAR(255) NOT NULL, + feedback VARCHAR(50) NOT NULL, + reason TEXT, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT feedback_check CHECK (feedback IN ('helpful', 'not_helpful')) +); + +-- Index for kb_feedback +CREATE INDEX idx_kbf_entry_id ON kb_feedback(kb_entry_id); + +-- Table 3: workflow_executions +-- Tracks workflow execution history +CREATE TABLE IF NOT EXISTS workflow_executions ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + workflow_name VARCHAR(255), + ticket_id INTEGER, + status VARCHAR(50), + error_message TEXT, + execution_time_ms INTEGER, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +-- Indexes for workflow_executions +CREATE INDEX idx_we_ticket_id ON workflow_executions(ticket_id); +CREATE INDEX idx_we_workflow_name ON workflow_executions(workflow_name); + +-- Grant permissions to kb_user +GRANT SELECT, INSERT, UPDATE, DELETE ON knowledge_base_updates TO kb_user; +GRANT SELECT, INSERT, UPDATE, DELETE ON kb_feedback TO kb_user; +GRANT SELECT, INSERT, UPDATE, DELETE ON workflow_executions TO kb_user;