- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI - Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код) - Установлен PHPWord для красивого форматирования документов - Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале) - Замена пробелов на подчеркивания в именах папок - Создана документация для AI и разработчиков - Добавлены API для работы с шаблонами Nextcloud
93 lines
3.9 KiB
PHP
93 lines
3.9 KiB
PHP
<?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";
|
||
|