seedproject-web/api/db/migrations/013_create_cja_qa.sql

32 lines
1.8 KiB
MySQL
Raw Normal View History

-- QA agent: automated site-test runs and their findings.
--
-- A run is one crawl of the live site (links, images, forms, API, SEO/meta).
-- Each finding is one issue (or pass) with a severity and a fix hint that can be
-- handed to the Web Designer queue as a fix task. Same shape as cja_tasks.
CREATE TABLE IF NOT EXISTS `cja_qa_runs` (
`run_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` enum('running','done','failed') NOT NULL DEFAULT 'running',
`trigger` enum('manual','scheduled') NOT NULL DEFAULT 'manual',
`summary` text DEFAULT NULL, -- plain-English triage summary
`counts` longtext DEFAULT NULL CHECK (`counts` IS NULL OR json_valid(`counts`)),
`started_at` datetime NOT NULL DEFAULT current_timestamp(),
`finished_at` datetime DEFAULT NULL,
PRIMARY KEY (`run_id`),
KEY `idx_cja_qa_runs_recent` (`started_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `cja_qa_findings` (
`finding_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`run_id` int(10) unsigned NOT NULL,
`check_type` varchar(40) NOT NULL DEFAULT '', -- page, link, image, external, form, health, seo, sitemap, a11y
`severity` enum('error','warning','info') NOT NULL DEFAULT 'info',
`url` varchar(500) NOT NULL DEFAULT '',
`detail` varchar(500) NOT NULL DEFAULT '',
`fix_hint` text DEFAULT NULL, -- prompt for a Web Designer fix task
`status` enum('open','fix_queued','ignored') NOT NULL DEFAULT 'open',
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`finding_id`),
KEY `idx_cja_qa_findings_run` (`run_id`, `severity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;