77 lines
3.1 KiB
PHP
77 lines
3.1 KiB
PHP
|
|
<?php
|
|||
|
|
// aiassist/crmHandler.php
|
|||
|
|
require_once 'database.php';
|
|||
|
|
require_once 'logger.php';
|
|||
|
|
|
|||
|
|
function fetchDocumentData($pdo, $id) {
|
|||
|
|
logMessage("Получение данных документа из CRM по ID: $id");
|
|||
|
|
$sql = "
|
|||
|
|
SELECT
|
|||
|
|
n.title,
|
|||
|
|
CASE
|
|||
|
|
WHEN a.storedname IS NOT NULL THEN CONCAT(a.path, a.attachmentsid, '_', a.storedname)
|
|||
|
|
ELSE CONCAT(a.path, a.attachmentsid, '_', a.name)
|
|||
|
|
END AS filepath,
|
|||
|
|
f.foldername AS folder_name,
|
|||
|
|
f.folderid AS folder_id
|
|||
|
|
FROM vtiger_senotesrel r
|
|||
|
|
LEFT JOIN vtiger_notes n ON n.notesid = r.notesid
|
|||
|
|
LEFT JOIN vtiger_crmentity e ON e.crmid = r.notesid
|
|||
|
|
LEFT JOIN vtiger_notescf ncf ON ncf.notesid = r.notesid
|
|||
|
|
LEFT JOIN vtiger_seattachmentsrel r2 ON r2.crmid = r.notesid
|
|||
|
|
LEFT JOIN vtiger_attachments a ON a.attachmentsid = r2.attachmentsid
|
|||
|
|
LEFT JOIN vtiger_attachmentsfolder f ON f.folderid = n.folderid
|
|||
|
|
WHERE r.crmid = ? AND e.deleted = 0
|
|||
|
|
AND (a.type = 'application/pdf' OR a.type = 'application/octet-stream')
|
|||
|
|
";
|
|||
|
|
try {
|
|||
|
|
$stmt = $pdo->prepare($sql);
|
|||
|
|
$stmt->execute([$id]);
|
|||
|
|
$documents = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|||
|
|
logMessage("Документы получены из CRM: " . json_encode($documents, JSON_UNESCAPED_UNICODE));
|
|||
|
|
return $documents;
|
|||
|
|
} catch (PDOException $e) {
|
|||
|
|
logMessage("Ошибка при выполнении запроса к CRM: " . $e->getMessage());
|
|||
|
|
return [];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (!function_exists('sendAnalysisToCRM')) {
|
|||
|
|
function sendAnalysisToCRM($caseId, $analysis) {
|
|||
|
|
// Обеспечим наличие нужных ключей
|
|||
|
|
/* if (!isset($analysis['content'])) {
|
|||
|
|
$analysis['content'] = $analysis['анализ_gpt'] ?? 'Анализ не выполнен';
|
|||
|
|
} */
|
|||
|
|
if (!isset($analysis['moderationVerdict'])) {
|
|||
|
|
$analysis['moderationVerdict'] = $analysis['вывод_gpt'] ?? 'Не определен';
|
|||
|
|
}
|
|||
|
|
if (!isset($analysis['status'])) {
|
|||
|
|
$analysis['status'] = 'complete';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$final_output = [
|
|||
|
|
"status" => $analysis['status'],
|
|||
|
|
"content" => $analysis['content'],
|
|||
|
|
"moderationVerdict" => $analysis['moderationVerdict']
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
$json_output = json_encode($final_output, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
|
|||
|
|
if ($json_output === false) {
|
|||
|
|
$error = json_last_error_msg();
|
|||
|
|
logMessage("ERROR: Ошибка кодирования JSON: $error");
|
|||
|
|
die(json_encode(["status" => "error", "message" => "Ошибка формирования ответа"]));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
logMessage("DEBUG: Итоговый JSON для CRM: " . $json_output);
|
|||
|
|
// Устанавливаем заголовок для JSON
|
|||
|
|
header('Content-Type: application/json; charset=utf-8');
|
|||
|
|
echo $json_output;
|
|||
|
|
logMessage("Обработка завершена. Ответ успешно отправлен в CRM");
|
|||
|
|
exit;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
?>
|