feat: Добавлен инструмент генерации документов для AI Ассистента

- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
This commit is contained in:
Fedor
2025-11-12 19:46:06 +03:00
parent 75912e5cfb
commit cd90b0d58a
307 changed files with 17246 additions and 417 deletions

View File

@@ -64,6 +64,53 @@ try {
error_log("Callback: Updated task {$taskId}, affected rows: {$affected}");
// Публикуем событие в Redis для мгновенной доставки через SSE
try {
if (class_exists('Redis')) {
$redis = new Redis();
if ($redis->connect('crm.clientright.ru', 6379)) {
$redis->auth('CRM_Redis_Pass_2025_Secure!');
$channel = "ai:response:{$taskId}";
$event = json_encode([
'task_id' => $taskId,
'status' => $status,
'response' => $response,
'error' => $error,
'timestamp' => date('Y-m-d H:i:s')
], JSON_UNESCAPED_UNICODE);
$redis->publish($channel, $event);
error_log("Callback: Published to Redis channel {$channel}");
$redis->close();
}
} else {
// Используем Predis если расширение Redis недоступно
require_once '/var/www/fastuser/data/www/crm.clientright.ru/vendor/autoload.php';
$redis = new Predis\Client([
'scheme' => 'tcp',
'host' => 'crm.clientright.ru',
'port' => 6379,
'password' => 'CRM_Redis_Pass_2025_Secure!',
]);
$channel = "ai:response:{$taskId}";
$event = json_encode([
'task_id' => $taskId,
'status' => $status,
'response' => $response,
'error' => $error,
'timestamp' => date('Y-m-d H:i:s')
], JSON_UNESCAPED_UNICODE);
$redis->publish($channel, $event);
error_log("Callback: Published to Redis channel {$channel} via Predis");
}
} catch (Exception $redisError) {
error_log("Callback: Redis publish error (non-critical): " . $redisError->getMessage());
// Не прерываем выполнение, если Redis недоступен - БД уже обновлена
}
echo json_encode([
'success' => true,
'message' => 'Response received',