Jira aanpassingen

This commit is contained in:
2026-09-14 16:24:23 +02:00
parent 7a85f612b1
commit f992ca1ec9
4 changed files with 1004 additions and 569 deletions
+56 -23
View File
@@ -162,6 +162,8 @@ function ensure_tables_exist(PDO $pdo): void {
"ALTER TABLE board_card_schedules ADD UNIQUE KEY uk_sched_card (card_id)",
"CREATE TABLE IF NOT EXISTS `password_resets` (`id` INT AUTO_INCREMENT PRIMARY KEY, `email` VARCHAR(191) NOT NULL, `token` VARCHAR(64) NOT NULL UNIQUE, `expires_at` DATETIME NOT NULL, `used_at` DATETIME NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, INDEX (`email`), INDEX (`token`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
"CREATE TABLE IF NOT EXISTS `jira_queue_filters` (`id` INT AUTO_INCREMENT PRIMARY KEY, `filter_code` VARCHAR(50) NOT NULL UNIQUE, `filter_name` VARCHAR(120) NOT NULL, `project_key` VARCHAR(50) NULL, `jql_clause` TEXT NOT NULL, `description` VARCHAR(255) NULL, `is_active` TINYINT(1) NOT NULL DEFAULT 1, `sort_order` INT NOT NULL DEFAULT 0, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
// Jira: Meerdere wachtrijfilters per teamlid
"ALTER TABLE users ADD COLUMN default_jira_filter_codes TEXT NULL AFTER default_jira_filter_code",
// V2.0: Subtaken & Checklists
"CREATE TABLE IF NOT EXISTS `task_subtasks` (`id` INT AUTO_INCREMENT PRIMARY KEY, `task_id` INT NOT NULL, `user_id` INT NOT NULL, `title` VARCHAR(255) NOT NULL, `is_completed` TINYINT(1) NOT NULL DEFAULT 0, `position` INT NOT NULL DEFAULT 0, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX (`task_id`, `position`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci",
// Beveiliging: IP tracking & locatie-verificatie
@@ -191,30 +193,61 @@ function ensure_tables_exist(PDO $pdo): void {
}
}
// Zorg dat de standaard Jira Servicedesk wachtrijfilters (DX en SD) aanwezig zijn
// Zorg dat de standaard Jira wachtrijfilters (SD, IN, AAN, GEN, DX) aanwezig zijn
try {
$filterCount = (int)$pdo->query("SELECT COUNT(*) FROM jira_queue_filters")->fetchColumn();
if ($filterCount === 0) {
$insertFilterStmt = $pdo->prepare("
INSERT INTO jira_queue_filters (filter_code, filter_name, project_key, jql_clause, description, is_active, sort_order)
VALUES (?, ?, ?, ?, ?, 1, ?)
");
$insertFilterStmt->execute([
'DX',
'DX — Koppelingen, SSO & Migratie',
'SD',
'"Onderwerp logging[dropdown]" in (Koppelingen, SSO-koppeling, Rest-endpoints, Datadump, UWV-koppeling, Migratie)',
'Servicedesk tickets met betrekking tot koppelingen, endpoints en datamigraties.',
1
]);
$insertFilterStmt->execute([
'SD',
'SD — Regulier Servicedesk',
'SD',
'("Onderwerp logging[Dropdown]" = EMPTY OR "Onderwerp logging[Dropdown]" != Koppelingen AND "Onderwerp logging[Dropdown]" != Migratie AND "Onderwerp logging[Dropdown]" != SSO-koppeling AND "Onderwerp logging[Dropdown]" != UWV-koppeling AND "Onderwerp logging[Dropdown]" != Rest-endpoints AND "Onderwerp logging[Dropdown]" != Datadump)',
'Reguliere servicedesk incidenten, algemene meldingen en gebruikersvragen.',
2
]);
$existingCodes = $pdo->query("SELECT filter_code FROM jira_queue_filters")->fetchAll(PDO::FETCH_COLUMN) ?: [];
$defaultFilters = [
[
'code' => 'SD',
'name' => 'SD — Servicedesk',
'project' => 'SD',
'jql' => 'project = "SD"',
'desc' => 'Servicedesk supportvragen en operationele meldingen.',
'order' => 1
],
[
'code' => 'IN',
'name' => 'IN — Interfaces',
'project' => 'IN',
'jql' => 'project = "IN"',
'desc' => 'Interface-koppelingen, API-endpoints en data-uitwisselingen.',
'order' => 2
],
[
'code' => 'AAN',
'name' => 'AAN — Aanvragen',
'project' => 'AAN',
'jql' => 'project = "AAN"',
'desc' => 'Klant- en gebruikersaanvragen en wijzigingsverzoeken.',
'order' => 3
],
[
'code' => 'GEN',
'name' => 'GEN — General',
'project' => 'GEN',
'jql' => 'project = "GEN"',
'desc' => 'Algemene taken, organisatie en platformprojecten.',
'order' => 4
],
[
'code' => 'DX',
'name' => 'DX — Koppelingen & SSO',
'project' => 'SD',
'jql' => '"Onderwerp logging[dropdown]" in (Koppelingen, SSO-koppeling, Rest-endpoints, Datadump, UWV-koppeling, Migratie)',
'desc' => 'Servicedesk tickets specifiek voor koppelingen en migraties.',
'order' => 5
]
];
$insertFilterStmt = $pdo->prepare("
INSERT INTO jira_queue_filters (filter_code, filter_name, project_key, jql_clause, description, is_active, sort_order)
VALUES (?, ?, ?, ?, ?, 1, ?)
");
foreach ($defaultFilters as $df) {
if (!in_array($df['code'], $existingCodes)) {
$insertFilterStmt->execute([
$df['code'], $df['name'], $df['project'], $df['jql'], $df['desc'], $df['order']
]);
}
}
} catch (Throwable $e) {
// Stil negeren indien tabel nog in opbouw is