Skip to content

Commit 893aaaa

Browse files
committed
Fix issue with attribute mismatch
1 parent 11e826d commit 893aaaa

1 file changed

Lines changed: 32 additions & 23 deletions

File tree

src/AI/AIErrorCorrectionJob.php

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -121,19 +121,19 @@ private function processApplicationErrors($config)
121121
SELECT e.*
122122
FROM KyteError e
123123
LEFT JOIN AIErrorAnalysis a ON e.id = a.error_id
124-
WHERE e.application = ?
124+
WHERE e.app_id = ?
125125
AND e.deleted = 0
126126
AND a.id IS NULL
127127
";
128128

129129
// Filter by error types if configured
130130
if (!$config['include_warnings']) {
131-
$sql .= " AND e.error_type NOT IN ('Warning', 'Notice', 'Deprecated')";
131+
$sql .= " AND e.log_level NOT IN ('warning', 'notice', 'deprecated')";
132132
}
133133

134134
$sql .= " ORDER BY e.date_created DESC LIMIT 100";
135135

136-
$errors = DBI::prepared_query($sql, 'i', [$appId]);
136+
$errors = DBI::prepared_query($sql, 's', [$config['app_identifier']]);
137137

138138
if (empty($errors)) {
139139
$this->log(" No new errors to process");
@@ -179,18 +179,30 @@ private function shouldAnalyzeError($error, $config)
179179

180180
if (empty($dedup)) {
181181
// New error signature - create deduplication record
182+
// Extract controller name from file path (e.g., "Controller/UserController.php" -> "UserController")
183+
$controllerName = '';
184+
$filePath = $error['file'] ?? '';
185+
if (preg_match('/([A-Z][a-zA-Z0-9]+Controller)\.php/', $filePath, $matches)) {
186+
$controllerName = $matches[1];
187+
} elseif (preg_match('/\/([^\/]+)\.php$/', $filePath, $matches)) {
188+
$controllerName = $matches[1];
189+
} else {
190+
$controllerName = 'Unknown';
191+
}
192+
182193
$sql = "
183194
INSERT INTO AIErrorDeduplication (
184-
application, kyte_account, error_signature, error_message, error_file,
185-
error_line, first_seen, last_seen, occurrence_count, date_created
186-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, UNIX_TIMESTAMP())
195+
application, kyte_account, error_signature, controller_name, error_message, error_file,
196+
error_line, first_seen, last_seen, occurrence_count
197+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1)
187198
";
188199

189-
DBI::prepared_query($sql, 'iisssiii', [
200+
DBI::prepared_query($sql, 'iisssssii', [
190201
$config['application'],
191202
$config['kyte_account'],
192203
$signature,
193-
$error['error_message'],
204+
$controllerName,
205+
$error['message'],
194206
$error['file'] ?? '',
195207
$error['line'] ?? 0,
196208
$error['date_created'],
@@ -247,15 +259,15 @@ private function shouldAnalyzeError($error, $config)
247259
private function generateErrorSignature($error)
248260
{
249261
// Combine error type, message (normalized), file, and line
250-
$message = $error['error_message'];
262+
$message = $error['message'];
251263

252264
// Normalize message (remove variable values, IDs, etc.)
253265
$message = preg_replace('/\d+/', 'N', $message); // Replace numbers
254266
$message = preg_replace('/[\'"][^\'\"]*[\'"]/', 'STR', $message); // Replace strings
255267
$message = preg_replace('/0x[a-f0-9]+/i', 'HEX', $message); // Replace hex values
256268

257269
$sigParts = [
258-
$error['error_type'] ?? 'Error',
270+
$error['log_level'] ?? 'error',
259271
$message,
260272
$error['file'] ?? '',
261273
$error['line'] ?? 0
@@ -269,24 +281,21 @@ private function generateErrorSignature($error)
269281
*/
270282
private function queueErrorForAnalysis($error, $config)
271283
{
284+
// Generate error signature
285+
$signature = $this->generateErrorSignature($error);
286+
272287
$sql = "
273288
INSERT INTO AIErrorAnalysis (
274-
error_id, application, kyte_account, error_type, error_message,
275-
file_path, line_number, stack_trace, request_data, analysis_status,
276-
analysis_stage, queued_at, date_created
277-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'queued', 'pending', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
289+
error_id, error_signature, application, kyte_account,
290+
analysis_status, analysis_stage, queued_at, date_created
291+
) VALUES (?, ?, ?, ?, 'queued', 'pending', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
278292
";
279293

280-
DBI::prepared_query($sql, 'iiisssiss', [
294+
DBI::prepared_query($sql, 'isii', [
281295
$error['id'],
296+
$signature,
282297
$config['application'],
283-
$config['kyte_account'],
284-
$error['error_type'] ?? 'Error',
285-
$error['error_message'],
286-
$error['file'] ?? '',
287-
$error['line'] ?? 0,
288-
$error['stack_trace'] ?? '',
289-
$error['request_data'] ?? ''
298+
$config['kyte_account']
290299
]);
291300

292301
$this->log(" Queued error #{$error['id']} for analysis");
@@ -373,7 +382,7 @@ private function processConfigAnalyses($config)
373382
$sql = "
374383
UPDATE AIErrorAnalysis
375384
SET analysis_status = 'failed',
376-
error_analysis = ?,
385+
last_error = ?,
377386
processing_completed_at = UNIX_TIMESTAMP()
378387
WHERE id = ?
379388
";

0 commit comments

Comments
 (0)