Automaattisäännöt: vastaanottaja-ehto, prioriteetti, abuse-tyyppi

- Lisää "Vastaanottaja sisältää" -ehto (to_contains) sääntöihin
- Lisää "Aseta prioriteetti" -toimenpide (set_priority)
- Lisää "Abuse" tikettityyppi
- Korjaa DB-schema: subject_contains, to_contains, enabled, set_priority, set_tags sarakkeet
- Parsii To-headerit sähköposteista säännön matchausta varten
- Mahdollistaa esim. abuse@-postien automaattisen tyypityksen ja prioriteetin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 12:27:29 +02:00
parent c0b003c2f9
commit 306dc6c5cc
4 changed files with 66 additions and 15 deletions

41
db.php
View File

@@ -617,6 +617,11 @@ function initDatabase(): void {
"ALTER TABLE devices ADD COLUMN laitetila_id VARCHAR(20) DEFAULT NULL AFTER site_id",
"ALTER TABLE document_folders ADD COLUMN customer_id VARCHAR(20) DEFAULT NULL AFTER company_id",
"ALTER TABLE customer_connections ADD COLUMN gateway_device_id VARCHAR(20) DEFAULT NULL AFTER ip",
"ALTER TABLE ticket_rules ADD COLUMN subject_contains VARCHAR(255) DEFAULT '' AFTER from_contains",
"ALTER TABLE ticket_rules ADD COLUMN to_contains VARCHAR(255) DEFAULT '' AFTER subject_contains",
"ALTER TABLE ticket_rules ADD COLUMN enabled BOOLEAN DEFAULT TRUE AFTER auto_close_days",
"ALTER TABLE ticket_rules ADD COLUMN set_priority VARCHAR(20) DEFAULT '' AFTER type_set",
"ALTER TABLE ticket_rules ADD COLUMN set_tags VARCHAR(255) DEFAULT '' AFTER set_priority",
];
foreach ($alters as $sql) {
try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ }
@@ -1538,6 +1543,7 @@ function dbLoadTicketRules(string $companyId): array {
foreach ($rules as &$r) {
$r['priority'] = (int)$r['priority'];
$r['auto_close_days'] = (int)$r['auto_close_days'];
$r['enabled'] = !empty($r['enabled']);
unset($r['company_id']);
}
return $rules;
@@ -1545,23 +1551,30 @@ function dbLoadTicketRules(string $companyId): array {
function dbSaveTicketRule(string $companyId, array $rule): void {
_dbExecute("
INSERT INTO ticket_rules (id, company_id, name, from_contains, priority, tag, assign_to, status_set, type_set, auto_close_days)
VALUES (:id, :company_id, :name, :from_contains, :priority, :tag, :assign_to, :status_set, :type_set, :auto_close_days)
INSERT INTO ticket_rules (id, company_id, name, from_contains, subject_contains, to_contains, priority, tag, assign_to, status_set, type_set, set_priority, set_tags, auto_close_days, enabled)
VALUES (:id, :company_id, :name, :from_contains, :subject_contains, :to_contains, :priority, :tag, :assign_to, :status_set, :type_set, :set_priority, :set_tags, :auto_close_days, :enabled)
ON DUPLICATE KEY UPDATE
name = VALUES(name), from_contains = VALUES(from_contains), priority = VALUES(priority),
name = VALUES(name), from_contains = VALUES(from_contains), subject_contains = VALUES(subject_contains),
to_contains = VALUES(to_contains), priority = VALUES(priority),
tag = VALUES(tag), assign_to = VALUES(assign_to), status_set = VALUES(status_set),
type_set = VALUES(type_set), auto_close_days = VALUES(auto_close_days)
type_set = VALUES(type_set), set_priority = VALUES(set_priority), set_tags = VALUES(set_tags),
auto_close_days = VALUES(auto_close_days), enabled = VALUES(enabled)
", [
'id' => $rule['id'],
'company_id' => $companyId,
'name' => $rule['name'] ?? '',
'from_contains' => $rule['from_contains'] ?? '',
'priority' => $rule['priority'] ?? 0,
'tag' => $rule['tag'] ?? '',
'assign_to' => $rule['assign_to'] ?? '',
'status_set' => $rule['status_set'] ?? '',
'type_set' => $rule['type_set'] ?? '',
'auto_close_days' => $rule['auto_close_days'] ?? 0,
'id' => $rule['id'],
'company_id' => $companyId,
'name' => $rule['name'] ?? '',
'from_contains' => $rule['from_contains'] ?? '',
'subject_contains' => $rule['subject_contains'] ?? '',
'to_contains' => $rule['to_contains'] ?? '',
'priority' => $rule['priority'] ?? 0,
'tag' => $rule['tag'] ?? '',
'assign_to' => $rule['assign_to'] ?? '',
'status_set' => $rule['status_set'] ?? '',
'type_set' => $rule['type_set'] ?? '',
'set_priority' => $rule['set_priority'] ?? '',
'set_tags' => $rule['set_tags'] ?? '',
'auto_close_days' => $rule['auto_close_days'] ?? 0,
'enabled' => !empty($rule['enabled']) ? 1 : 0,
]);
}