Korjaa automaattisäännöt ja viestien duplikaattiesto
- Sääntöjen kenttänimet: DB käyttää type_set/status_set mutta API lähetti set_type/set_status → nyt dbSaveTicketRule hyväksyy molemmat ja matching lukee oikeat DB-kenttänimet - Migraatio: täytä fetched_message_ids olemassaolevien tikettien message_id:illä niin poistetut viestit eivät tule takaisin Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
4
api.php
4
api.php
@@ -3040,8 +3040,8 @@ switch ($action) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($match) {
|
if ($match) {
|
||||||
if (!empty($rule['set_status'])) $ticket['status'] = $rule['set_status'];
|
if (!empty($rule['status_set'])) $ticket['status'] = $rule['status_set'];
|
||||||
if (!empty($rule['set_type'])) $ticket['type'] = $rule['set_type'];
|
if (!empty($rule['type_set'])) $ticket['type'] = $rule['type_set'];
|
||||||
if (!empty($rule['set_priority'])) $ticket['priority'] = $rule['set_priority'];
|
if (!empty($rule['set_priority'])) $ticket['priority'] = $rule['set_priority'];
|
||||||
if (!empty($rule['set_tags'])) {
|
if (!empty($rule['set_tags'])) {
|
||||||
$ruleTags = array_map('trim', explode(',', $rule['set_tags']));
|
$ruleTags = array_map('trim', explode(',', $rule['set_tags']));
|
||||||
|
|||||||
29
db.php
29
db.php
@@ -704,6 +704,31 @@ function initDatabase(): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (\Throwable $e) { /* ohitetaan */ }
|
} catch (\Throwable $e) { /* ohitetaan */ }
|
||||||
|
|
||||||
|
// Migraatio: täytä fetched_message_ids olemassaolevien tikettien message_id:illä
|
||||||
|
// (ajetaan vain kerran — kun taulu on tyhjä)
|
||||||
|
try {
|
||||||
|
$cnt = $db->query("SELECT COUNT(*) AS cnt FROM fetched_message_ids")->fetch_assoc();
|
||||||
|
if ((int)($cnt['cnt'] ?? 0) === 0) {
|
||||||
|
// Tikettien omat message_id:t
|
||||||
|
$db->query("INSERT IGNORE INTO fetched_message_ids (company_id, message_id)
|
||||||
|
SELECT company_id, message_id FROM tickets WHERE message_id IS NOT NULL AND message_id != ''");
|
||||||
|
// Tikettien viestien message_id:t (JSON messages-kentästä)
|
||||||
|
$rows = $db->query("SELECT company_id, messages FROM tickets WHERE messages IS NOT NULL AND messages != ''");
|
||||||
|
while ($row = $rows->fetch_assoc()) {
|
||||||
|
$msgs = json_decode($row['messages'], true);
|
||||||
|
if (is_array($msgs)) {
|
||||||
|
foreach ($msgs as $m) {
|
||||||
|
if (!empty($m['message_id'])) {
|
||||||
|
$cid = $db->real_escape_string($row['company_id']);
|
||||||
|
$mid = $db->real_escape_string($m['message_id']);
|
||||||
|
$db->query("INSERT IGNORE INTO fetched_message_ids (company_id, message_id) VALUES ('$cid', '$mid')");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Throwable $e) { /* ohitetaan */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== YRITYKSET ====================
|
// ==================== YRITYKSET ====================
|
||||||
@@ -1591,8 +1616,8 @@ function dbSaveTicketRule(string $companyId, array $rule): void {
|
|||||||
'priority' => $rule['priority'] ?? 0,
|
'priority' => $rule['priority'] ?? 0,
|
||||||
'tag' => $rule['tag'] ?? '',
|
'tag' => $rule['tag'] ?? '',
|
||||||
'assign_to' => $rule['assign_to'] ?? '',
|
'assign_to' => $rule['assign_to'] ?? '',
|
||||||
'status_set' => $rule['status_set'] ?? '',
|
'status_set' => $rule['set_status'] ?? $rule['status_set'] ?? '',
|
||||||
'type_set' => $rule['type_set'] ?? '',
|
'type_set' => $rule['set_type'] ?? $rule['type_set'] ?? '',
|
||||||
'set_priority' => $rule['set_priority'] ?? '',
|
'set_priority' => $rule['set_priority'] ?? '',
|
||||||
'set_tags' => $rule['set_tags'] ?? '',
|
'set_tags' => $rule['set_tags'] ?? '',
|
||||||
'auto_close_days' => $rule['auto_close_days'] ?? 0,
|
'auto_close_days' => $rule['auto_close_days'] ?? 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user