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:
92
crm_extensions/file_storage/fix_document_397340_path.php
Normal file
92
crm_extensions/file_storage/fix_document_397340_path.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* Исправление пути документа 397340 в проекте 396447
|
||||
*
|
||||
* Проблема: документ 397340 имеет путь с префиксом 'crm2/CRM_Active_Files/',
|
||||
* а остальные документы проекта имеют путь БЕЗ этого префикса.
|
||||
*
|
||||
* Решение: убрать префикс 'crm2/CRM_Active_Files/' из s3_key для единообразия.
|
||||
*/
|
||||
|
||||
require_once '/var/www/fastuser/data/www/crm.clientright.ru/config.inc.php';
|
||||
|
||||
$pdo = new PDO(
|
||||
"mysql:host={$dbconfig['db_server']};port=3306;dbname={$dbconfig['db_name']};charset=utf8mb4",
|
||||
$dbconfig['db_username'],
|
||||
$dbconfig['db_password'],
|
||||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
||||
);
|
||||
|
||||
$notesId = 397340;
|
||||
$dryRun = false; // Изменить на false для реального исправления
|
||||
|
||||
echo "=== ИСПРАВЛЕНИЕ ПУТИ ДОКУМЕНТА 397340 ===\n\n";
|
||||
|
||||
// Получаем текущие данные документа
|
||||
$sql = "SELECT notesid, title, s3_key, s3_bucket, filename FROM vtiger_notes WHERE notesid = ?";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([$notesId]);
|
||||
$doc = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!$doc) {
|
||||
die("❌ Документ $notesId не найден!\n");
|
||||
}
|
||||
|
||||
echo "📄 Документ: {$doc['title']}\n";
|
||||
echo " ID: {$doc['notesid']}\n";
|
||||
echo " Текущий s3_key: {$doc['s3_key']}\n\n";
|
||||
|
||||
// Проверяем, есть ли префикс
|
||||
if (strpos($doc['s3_key'], 'crm2/CRM_Active_Files/') === 0) {
|
||||
// Убираем префикс
|
||||
$newS3Key = str_replace('crm2/CRM_Active_Files/', '', $doc['s3_key']);
|
||||
|
||||
echo "✅ Найден префикс 'crm2/CRM_Active_Files/'\n";
|
||||
echo " Новый s3_key: $newS3Key\n\n";
|
||||
|
||||
// Проверяем остальные документы проекта для сравнения
|
||||
$sql2 = "SELECT notesid, s3_key FROM vtiger_notes n
|
||||
INNER JOIN vtiger_senotesrel snr ON snr.notesid = n.notesid
|
||||
WHERE snr.crmid = 396447 AND n.notesid != ? AND n.s3_key IS NOT NULL
|
||||
LIMIT 3";
|
||||
$stmt2 = $pdo->prepare($sql2);
|
||||
$stmt2->execute([$notesId]);
|
||||
$others = $stmt2->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
echo "📊 Сравнение с другими документами проекта:\n";
|
||||
foreach ($others as $other) {
|
||||
echo " ID {$other['notesid']}: {$other['s3_key']}\n";
|
||||
}
|
||||
echo "\n";
|
||||
|
||||
// Обновляем filename тоже (если там есть полный URL)
|
||||
$newFilename = $doc['filename'];
|
||||
if (strpos($doc['filename'], 'crm2/CRM_Active_Files/') !== false) {
|
||||
$newFilename = str_replace('crm2/CRM_Active_Files/', '', $doc['filename']);
|
||||
// Если это полный URL, пересобираем его
|
||||
if (strpos($newFilename, 'https://') === false && $doc['s3_bucket']) {
|
||||
$newFilename = "https://s3.twcstorage.ru/{$doc['s3_bucket']}/" . rawurlencode($newS3Key);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$dryRun) {
|
||||
echo "🔧 ПРИМЕНЯЕМ ИСПРАВЛЕНИЕ...\n\n";
|
||||
|
||||
$updateSql = "UPDATE vtiger_notes SET s3_key = ?, filename = ? WHERE notesid = ?";
|
||||
$updateStmt = $pdo->prepare($updateSql);
|
||||
$updateStmt->execute([$newS3Key, $newFilename, $notesId]);
|
||||
|
||||
echo "✅ Документ обновлён!\n";
|
||||
echo " Новый s3_key: $newS3Key\n";
|
||||
echo " Новый filename: " . substr($newFilename, 0, 100) . "...\n";
|
||||
} else {
|
||||
echo "⚠️ РЕЖИМ ПРОВЕРКИ (dry-run)\n";
|
||||
echo " Для применения изменений установите \$dryRun = false\n";
|
||||
}
|
||||
} else {
|
||||
echo "ℹ️ Префикс 'crm2/CRM_Active_Files/' не найден в пути.\n";
|
||||
echo " Документ уже в правильном формате.\n";
|
||||
}
|
||||
|
||||
echo "\n=== ГОТОВО ===\n";
|
||||
|
||||
Reference in New Issue
Block a user