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 (!empty($rule['set_status'])) $ticket['status'] = $rule['set_status'];
|
||||
if (!empty($rule['set_type'])) $ticket['type'] = $rule['set_type'];
|
||||
if (!empty($rule['status_set'])) $ticket['status'] = $rule['status_set'];
|
||||
if (!empty($rule['type_set'])) $ticket['type'] = $rule['type_set'];
|
||||
if (!empty($rule['set_priority'])) $ticket['priority'] = $rule['set_priority'];
|
||||
if (!empty($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 */ }
|
||||
|
||||
// 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 ====================
|
||||
@@ -1591,8 +1616,8 @@ function dbSaveTicketRule(string $companyId, array $rule): void {
|
||||
'priority' => $rule['priority'] ?? 0,
|
||||
'tag' => $rule['tag'] ?? '',
|
||||
'assign_to' => $rule['assign_to'] ?? '',
|
||||
'status_set' => $rule['status_set'] ?? '',
|
||||
'type_set' => $rule['type_set'] ?? '',
|
||||
'status_set' => $rule['set_status'] ?? $rule['status_set'] ?? '',
|
||||
'type_set' => $rule['set_type'] ?? $rule['type_set'] ?? '',
|
||||
'set_priority' => $rule['set_priority'] ?? '',
|
||||
'set_tags' => $rule['set_tags'] ?? '',
|
||||
'auto_close_days' => $rule['auto_close_days'] ?? 0,
|
||||
|
||||
Reference in New Issue
Block a user