Files
tilbudgivern/database/schema_system_logs.sql
alexpolo1 8773d96e94 feat: Add AI-Powered Visual Testing Suite using Selenium and OpenAI Vision API
- Implemented VisualAITester class for automated UI/UX testing
- Configured environment variables for API keys and paths
- Developed methods for browser setup, login, screenshot capture, and image encoding
- Integrated OpenAI Vision API for visual quality analysis with detailed feedback
- Created tests for various application pages including homepage, project flow, geometry form, and more
- Generated comprehensive HTML report summarizing test results and AI analysis
- Added functionality to copy AI prompts for automated issue resolution
2025-11-14 20:27:19 +00:00

121 lines
3.6 KiB
SQL

-- ============================================
-- SYSTEM LOGGING TABLE
-- ============================================
-- Centraliseret logging til alle fejl, warnings og info-beskeder
-- Gør det nemt at fejlsøge og analysere problemer
CREATE TABLE IF NOT EXISTS system_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
-- Tidsstempel
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- Log niveau
level ENUM('ERROR', 'WARNING', 'INFO', 'DEBUG') NOT NULL,
-- Kontekst information
context VARCHAR(255) NOT NULL COMMENT 'Beskriver hvor i systemet log-indgangen kommer fra',
category VARCHAR(100) DEFAULT NULL COMMENT 'Kategorisering som API, DATABASE, AUTH, etc.',
-- Fejlbeskrivelse
message TEXT NOT NULL,
error_code VARCHAR(50) DEFAULT NULL COMMENT 'Unik fejlkode for brugervenlig reference',
-- Tekniske detaljer
stack_trace TEXT DEFAULT NULL,
sql_query TEXT DEFAULT NULL,
sql_state VARCHAR(10) DEFAULT NULL,
-- Request information
request_method VARCHAR(10) DEFAULT NULL,
request_url TEXT DEFAULT NULL,
request_ip VARCHAR(45) DEFAULT NULL,
user_agent TEXT DEFAULT NULL,
-- Bruger information
user_id INT DEFAULT NULL,
user_email VARCHAR(255) DEFAULT NULL,
-- Ekstra metadata (JSON format)
metadata JSON DEFAULT NULL,
-- Status
resolved BOOLEAN DEFAULT FALSE,
resolved_at TIMESTAMP NULL DEFAULT NULL,
resolved_by VARCHAR(255) DEFAULT NULL,
resolution_notes TEXT DEFAULT NULL,
INDEX idx_level (level),
INDEX idx_created_at (created_at),
INDEX idx_context (context),
INDEX idx_category (category),
INDEX idx_error_code (error_code),
INDEX idx_user_id (user_id),
INDEX idx_resolved (resolved)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ============================================
-- REQUEST LOGS TABLE (Performance tracking)
-- ============================================
-- Tracker alle API requests for performance analyse
CREATE TABLE IF NOT EXISTS request_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
-- Tidsstempel
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- Request information
method VARCHAR(10) NOT NULL,
url TEXT NOT NULL,
status_code INT NOT NULL,
-- Timing
response_time_ms INT NOT NULL COMMENT 'Response tid i millisekunder',
-- Bruger information
user_id INT DEFAULT NULL,
ip_address VARCHAR(45) DEFAULT NULL,
user_agent TEXT DEFAULT NULL,
-- Ekstra metadata
metadata JSON DEFAULT NULL,
INDEX idx_created_at (created_at),
INDEX idx_method (method),
INDEX idx_status_code (status_code),
INDEX idx_user_id (user_id),
INDEX idx_response_time (response_time_ms)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ============================================
-- CLEANUP JOB (Hold logs i 90 dage)
-- ============================================
-- Denne skal køres regelmæssigt for at holde databasen ren
-- EVENT scheduler skal være aktiveret:
-- SET GLOBAL event_scheduler = ON;
DELIMITER $$
CREATE EVENT IF NOT EXISTS cleanup_old_logs
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
DO
BEGIN
-- Slet logs ældre end 90 dage (behold ERROR logs i 180 dage)
DELETE FROM system_logs
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY)
AND level != 'ERROR';
DELETE FROM system_logs
WHERE created_at < DATE_SUB(NOW(), INTERVAL 180 DAY)
AND level = 'ERROR';
-- Slet request logs ældre end 30 dage
DELETE FROM request_logs
WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
END$$
DELIMITER ;