chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
This commit is contained in:
@@ -53,6 +53,16 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
}
|
||||
|
||||
log_message('=== START API REQUEST ===');
|
||||
log_message('Host: ' . ($_SERVER['HTTP_HOST'] ?? 'not set'));
|
||||
log_message('SERVER_NAME: ' . ($_SERVER['SERVER_NAME'] ?? 'not set'));
|
||||
log_message('REQUEST_URI: ' . ($_SERVER['REQUEST_URI'] ?? 'not set'));
|
||||
|
||||
// Проверяем, что запрос идёт на правильный домен
|
||||
$host = $_SERVER['HTTP_HOST'] ?? $_SERVER['SERVER_NAME'] ?? '';
|
||||
if (!empty($host) && strpos($host, 'crm.clientright.ru') === false && strpos($host, 'aeroflot.clientright.ru') !== false) {
|
||||
log_message('⚠️ WARNING: Request came to wrong virtual host: ' . $host);
|
||||
// Не блокируем, но логируем для диагностики
|
||||
}
|
||||
|
||||
// Получаем входные данные
|
||||
$input = file_get_contents('php://input');
|
||||
@@ -139,71 +149,98 @@ if (empty($processed_documents)) {
|
||||
], 400);
|
||||
}
|
||||
|
||||
log_message('📤 Sending ' . count($processed_documents) . ' documents to upload_documents_to_crm.php');
|
||||
|
||||
// Формируем запрос к upload_documents_to_crm.php
|
||||
$upload_url = 'https://crm.clientright.ru/upload_documents_to_crm.php';
|
||||
log_message('📤 Processing ' . count($processed_documents) . ' documents via upload_documents_to_crm.php');
|
||||
|
||||
// ✅ Вызываем upload_documents_to_crm.php напрямую через include (избегаем проблем с HTTP/Nginx)
|
||||
// Берем общие параметры из первого документа
|
||||
$first_doc = $processed_documents[0];
|
||||
|
||||
$payload = json_encode([
|
||||
// Формируем данные в формате, который ожидает upload_documents_to_crm.php
|
||||
$upload_data = [
|
||||
'documents' => $processed_documents,
|
||||
'projectid' => $first_doc['projectid'],
|
||||
'ticket_id' => $first_doc['ticket_id'],
|
||||
'user_id' => 1
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
];
|
||||
|
||||
log_message('Payload: ' . substr($payload, 0, 500));
|
||||
log_message('Payload: ' . substr(json_encode($upload_data, JSON_UNESCAPED_UNICODE), 0, 500));
|
||||
|
||||
// Отправляем запрос
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $upload_url);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
'Content-Type: application/json',
|
||||
'Content-Length: ' . strlen($payload)
|
||||
]);
|
||||
// ✅ Вызываем upload_documents_to_crm.php напрямую через include (избегаем проблем с HTTP)
|
||||
// Загружаем функции из upload_documents_to_crm.php
|
||||
$upload_script_path = __DIR__ . '/upload_documents_to_crm.php';
|
||||
|
||||
$response = curl_exec($ch);
|
||||
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
// ✅ Перехватываем вывод (на случай, если скрипт что-то выводит)
|
||||
ob_start();
|
||||
|
||||
if ($response === false) {
|
||||
log_message('❌ CURL error: ' . curl_error($ch));
|
||||
// ✅ Помечаем, что скрипт вызван из API — чтобы upload_documents_to_crm не выполнял тестовый GET-блок (который создавал лишний документ "Иск" по проекту 354918 при каждом запросе)
|
||||
define('UPLOAD_DOCUMENTS_CALLED_FROM_API', true);
|
||||
// ✅ Сохраняем оригинальный REQUEST_METHOD и устанавливаем GET, чтобы предотвратить выполнение основного POST-кода в upload_documents_to_crm
|
||||
$original_request_method = $_SERVER['REQUEST_METHOD'] ?? null;
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
|
||||
// ✅ Загружаем upload_documents_to_crm.php (только функции; тестовый GET-блок не выполнится из-за UPLOAD_DOCUMENTS_CALLED_FROM_API)
|
||||
try {
|
||||
require_once $upload_script_path;
|
||||
|
||||
// ✅ Восстанавливаем оригинальный REQUEST_METHOD
|
||||
if ($original_request_method !== null) {
|
||||
$_SERVER['REQUEST_METHOD'] = $original_request_method;
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
ob_end_clean();
|
||||
// ✅ Восстанавливаем оригинальный REQUEST_METHOD даже при ошибке
|
||||
if ($original_request_method !== null) {
|
||||
$_SERVER['REQUEST_METHOD'] = $original_request_method;
|
||||
}
|
||||
log_message('❌ Fatal error loading upload_documents_to_crm.php: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine());
|
||||
json_response([
|
||||
'success' => false,
|
||||
'error' => 'Internal error: ' . curl_error($ch)
|
||||
'error' => 'Failed to load upload script: ' . $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
|
||||
log_message("Response HTTP code: {$http_code}");
|
||||
log_message("Response: " . substr($response, 0, 500));
|
||||
// ✅ Вызываем функцию normalizeInputData для преобразования данных
|
||||
$filesArray = normalizeInputData($upload_data);
|
||||
|
||||
// Парсим ответ
|
||||
$result = json_decode($response, true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
log_message('❌ Failed to parse response JSON: ' . json_last_error_msg());
|
||||
if (!is_array($filesArray) || empty($filesArray)) {
|
||||
ob_end_clean();
|
||||
log_message('❌ Error: Failed to normalize input data. Type: ' . gettype($filesArray) . ', Empty: ' . (empty($filesArray) ? 'yes' : 'no'));
|
||||
json_response([
|
||||
'success' => false,
|
||||
'error' => 'Invalid response from upload service'
|
||||
'error' => 'Failed to normalize input data'
|
||||
], 400);
|
||||
}
|
||||
|
||||
// ✅ Вызываем функцию createDocumentsInCRM напрямую
|
||||
log_message('🚀 Calling createDocumentsInCRM with ' . count($filesArray) . ' files');
|
||||
$results = createDocumentsInCRM($filesArray);
|
||||
log_message('🔍 createDocumentsInCRM returned. Type: ' . gettype($results) . ', Is array: ' . (is_array($results) ? 'yes, count: ' . count($results) : 'no'));
|
||||
|
||||
// ✅ Очищаем output buffer
|
||||
ob_end_clean();
|
||||
|
||||
// ✅ Проверяем результат
|
||||
if (isset($results['error'])) {
|
||||
log_message('❌ Error: ' . $results['error']);
|
||||
json_response([
|
||||
'success' => false,
|
||||
'error' => 'Upload failed: ' . $results['error']
|
||||
], 500);
|
||||
}
|
||||
|
||||
// Проверяем успешность
|
||||
if ($result && $result['success'] && isset($result['results'])) {
|
||||
$results_array = $result['results'];
|
||||
// ✅ Формируем ответ в формате, который ожидает api_attach_documents.php
|
||||
// ✅ Проверяем успешность
|
||||
if (is_array($results) && !empty($results)) {
|
||||
$results_array = $results;
|
||||
|
||||
// Формируем ответ
|
||||
$processed_results = [];
|
||||
$errors = [];
|
||||
|
||||
foreach ($results_array as $idx => $res) {
|
||||
if ($res['status'] === 'success') {
|
||||
$status = $res['status'] ?? 'unknown';
|
||||
|
||||
if ($status === 'success') {
|
||||
$crm_result = $res['crm_result'] ?? [];
|
||||
|
||||
$processed_results[] = [
|
||||
@@ -218,20 +255,15 @@ if ($result && $result['success'] && isset($result['results'])) {
|
||||
'file_size' => $crm_result['file_size'] ?? null,
|
||||
'message' => $crm_result['message'] ?? null
|
||||
];
|
||||
|
||||
log_message(" ✅ [{$idx}] {$res['file_name']} → {$crm_result['document_id']}");
|
||||
} else {
|
||||
$error_msg = $res['crm_result']['message'] ?? 'Unknown error';
|
||||
$error_msg = $res['crm_result']['message'] ?? ($res['error'] ?? 'Unknown error');
|
||||
$errors[] = [
|
||||
'file_name' => $res['file_name'] ?? 'Unknown',
|
||||
'error' => $error_msg
|
||||
];
|
||||
log_message(" ❌ [{$idx}] {$res['file_name']}: {$error_msg}");
|
||||
}
|
||||
}
|
||||
|
||||
log_message('✅ Success: ' . count($processed_results) . ' documents attached');
|
||||
|
||||
json_response([
|
||||
'success' => true,
|
||||
'total_processed' => count($results_array),
|
||||
@@ -241,11 +273,10 @@ if ($result && $result['success'] && isset($result['results'])) {
|
||||
'errors' => !empty($errors) ? $errors : null
|
||||
]);
|
||||
} else {
|
||||
log_message('❌ Upload failed: ' . ($result['error']['message'] ?? 'Unknown error'));
|
||||
$error_msg = is_array($results) && isset($results['error']) ? $results['error'] : 'Upload failed';
|
||||
log_message('❌ Upload failed: ' . (is_string($error_msg) ? $error_msg : json_encode($error_msg)));
|
||||
json_response([
|
||||
'success' => false,
|
||||
'error' => $result['error']['message'] ?? 'Upload failed'
|
||||
'error' => is_string($error_msg) ? $error_msg : 'Upload failed'
|
||||
], 500);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user