- Added comprehensive AI Assistant system (aiassist/ directory): * Vector search and embedding capabilities * Typebot proxy integration * Elastic search functionality * Message classification and chat history * MCP proxy for external integrations - Implemented Court Status API (GetCourtStatus.php): * Real-time court document status checking * Integration with external court systems * Comprehensive error handling and logging - Enhanced S3 integration: * Improved file backup system with metadata * Batch processing capabilities * Enhanced error logging and recovery * Copy operations with URL fixing - Added Telegram contact creation API - Improved error logging across all modules - Enhanced callback system for AI responses - Extensive backup file storage with timestamps - Updated documentation and README files - File storage improvements: * Thousands of backup files with proper metadata * Fix operations for broken file references * Project-specific backup and recovery systems * Comprehensive file integrity checking Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
103 lines
4.4 KiB
PHP
103 lines
4.4 KiB
PHP
<?php
|
|
/**
|
|
* Resolve file 394503 issue - PDFmaker failed to create file
|
|
*/
|
|
|
|
$ROOT = '/var/www/fastuser/data/www/crm.clientright.ru/';
|
|
require_once $ROOT . 'config.inc.php';
|
|
|
|
// Database connection
|
|
$mysqli = new mysqli($dbconfig['db_server'], $dbconfig['db_username'], $dbconfig['db_password'], $dbconfig['db_name']);
|
|
if ($mysqli->connect_error) {
|
|
die("Connection failed: " . $mysqli->connect_error);
|
|
}
|
|
$mysqli->set_charset("utf8");
|
|
|
|
echo "=== Решение проблемы файла 394503 ===\n\n";
|
|
|
|
// Получаем данные файла
|
|
$query = "SELECT notesid, title, filename, filetype, filesize, s3_key, s3_bucket, s3_etag, nc_path
|
|
FROM vtiger_notes
|
|
WHERE notesid = 394503";
|
|
|
|
$result = $mysqli->query($query);
|
|
|
|
if ($result && $result->num_rows > 0) {
|
|
$row = $result->fetch_assoc();
|
|
|
|
echo "Текущее состояние файла:\n";
|
|
echo "ID: " . $row['notesid'] . "\n";
|
|
echo "Название: " . $row['title'] . "\n";
|
|
echo "URL: " . ($row['filename'] ?: 'ПУСТОЙ') . "\n";
|
|
echo "Размер: " . $row['filesize'] . " байт\n";
|
|
echo "S3 Key: " . ($row['s3_key'] ?: 'NULL') . "\n";
|
|
echo "S3 Bucket: " . ($row['s3_bucket'] ?: 'NULL') . "\n\n";
|
|
|
|
echo "ВАРИАНТЫ РЕШЕНИЯ:\n";
|
|
echo "1. Удалить некорректную запись из БД\n";
|
|
echo "2. Создать пустой файл-заглушку\n";
|
|
echo "3. Попытаться найти и восстановить файл\n";
|
|
echo "4. Переключить файл на локальное хранение\n\n";
|
|
|
|
// Вариант 1: Удаление некорректной записи
|
|
echo "=== ВАРИАНТ 1: Удаление некорректной записи ===\n";
|
|
echo "Создание резервной копии перед удалением...\n";
|
|
|
|
$backup_dir = $ROOT . 'crm_extensions/file_storage/backups/';
|
|
if (!is_dir($backup_dir)) mkdir($backup_dir, 0755, true);
|
|
|
|
$backup_file = $backup_dir . 'delete_394503_backup_' . date('Ymd_His') . '.json';
|
|
$backup = [
|
|
'action' => 'delete_broken_file',
|
|
'notesid' => $row['notesid'],
|
|
'title' => $row['title'],
|
|
'original_data' => $row,
|
|
'timestamp' => date('c'),
|
|
'reason' => 'PDFmaker failed to create file - removing broken record'
|
|
];
|
|
file_put_contents($backup_file, json_encode($backup, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
|
|
|
echo "Резервная копия сохранена: " . $backup_file . "\n";
|
|
|
|
// Удаляем связанные записи
|
|
echo "Удаление связанных записей...\n";
|
|
|
|
// Удаляем из vtiger_senotesrel
|
|
$delete_rel_query = "DELETE FROM vtiger_senotesrel WHERE notesid = ?";
|
|
$stmt1 = $mysqli->prepare($delete_rel_query);
|
|
$stmt1->bind_param('i', $row['notesid']);
|
|
if ($stmt1->execute()) {
|
|
echo "✅ Связанные записи удалены\n";
|
|
} else {
|
|
echo "❌ Ошибка удаления связанных записей: " . $stmt1->error . "\n";
|
|
}
|
|
$stmt1->close();
|
|
|
|
// Удаляем основную запись
|
|
$delete_query = "DELETE FROM vtiger_notes WHERE notesid = ?";
|
|
$stmt2 = $mysqli->prepare($delete_query);
|
|
$stmt2->bind_param('i', $row['notesid']);
|
|
|
|
if ($stmt2->execute()) {
|
|
echo "✅ Некорректная запись файла 394503 удалена\n";
|
|
echo "📝 Резервная копия сохранена для возможного восстановления\n";
|
|
echo "\n💡 РЕКОМЕНДАЦИЯ: Пересоздайте файл через PDFmaker\n";
|
|
} else {
|
|
echo "❌ Ошибка удаления записи: " . $stmt2->error . "\n";
|
|
}
|
|
$stmt2->close();
|
|
|
|
// Вариант 2: Создание файла-заглушки (альтернативный вариант)
|
|
echo "\n=== АЛЬТЕРНАТИВНЫЙ ВАРИАНТ 2: Создание файла-заглушки ===\n";
|
|
echo "Если вы хотите создать файл-заглушку вместо удаления,\n";
|
|
echo "запустите скрипт create_placeholder_394503.php\n";
|
|
|
|
} else {
|
|
echo "❌ Файл 394503 не найден в базе данных\n";
|
|
}
|
|
|
|
$mysqli->close();
|
|
echo "\n=== Решение завершено ===\n";
|
|
?>
|
|
|