'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/8_Договор_на_оказание_услуг_373981.pdf', 373983 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/9_Подтверждение_оплаты_по_договору_373983.pdf', 373985 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/10_2_Скрин_личного_кабинета_Истца_и_программа_обуч_373985.pdf', 373987 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/10_1_Скрин_личного_кабинета_Истца_и_программа_обуч_373987.pdf', 373989 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/11_1_Подтверждение_проведения_претензионной_работы_373989.pdf', 373991 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/7_заявление_потребителя_373991.pdf', 374017 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/11_Доказательство_соблюдения_претензионного_порядк_374017.pdf', 375402 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/11.2_Претензия_в_защиту_интересов_Полулях_Ольга_1_375402.pdf', 375404 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/11.3_Доказательство_оплаты_направления_претензии_о_375404.pdf', 375406 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/11.4_Доказательство_направления_претензии_ответчик_375406.pdf', 376051 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/0_Исковое_заявление_по_делу_Полулях_7_стр_376051.pdf', 376054 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/6_Расчет_исковых_требований_Полулях_1_стр_376054.pdf', 376080 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/12.1_Доказательство_оплаты_направления_иска_ответч_376080.pdf', 376082 => 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/12.2_Доказательство_направления_иска_ответчику_376082.pdf', 396623 => 'crm2/CRM_Active_Files/Documents/396623/ПК_451a1058-ee34-0d48-b2f4-d6dfa522928a.pdf_WITH_ENVELOPE.pdf', // Неправильное место! ]; echo "=== ПРОВЕРКА ДОКУМЕНТОВ ПРОЕКТА {$projectId} ===\n"; echo str_repeat("=", 80) . "\n\n"; try { $s3Client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => $config['s3']['region'], 'endpoint' => $config['s3']['endpoint'], 'use_path_style_endpoint' => true, 'credentials' => [ 'key' => $config['s3']['key'], 'secret' => $config['s3']['secret'], ], 'suppress_php_deprecation_warning' => true ]); $stats = [ 'total' => count($documents), 'exists' => 0, 'missing' => 0, 'wrong_place' => 0, 'missing_files' => [], 'wrong_place_files' => [], ]; $projectPrefix = 'crm2/CRM_Active_Files/Documents/Project/Полулях_ЧУ_ДПО_ГОРОДСКАЯ_АКАДЕМИЯ_УРБАН_373977/'; foreach ($documents as $docId => $s3Key) { $filename = basename($s3Key); $isInProjectFolder = strpos($s3Key, $projectPrefix) === 0; echo "Документ ID: {$docId}\n"; echo " Файл: {$filename}\n"; echo " Путь: {$s3Key}\n"; if ($s3Client->doesObjectExist($s3Bucket, $s3Key)) { $object = $s3Client->headObject(['Bucket' => $s3Bucket, 'Key' => $s3Key]); $size = round($object['ContentLength'] / 1024, 2); if (!$isInProjectFolder) { echo " ⚠️ Файл существует, но в неправильном месте (размер: {$size} KB)\n"; $stats['wrong_place']++; $stats['wrong_place_files'][] = [ 'doc_id' => $docId, 'current_path' => $s3Key, 'should_be' => $projectPrefix . $filename, ]; } else { echo " ✅ Файл существует (размер: {$size} KB)\n"; $stats['exists']++; } } else { echo " ❌ Файл отсутствует\n"; $stats['missing']++; $stats['missing_files'][] = [ 'doc_id' => $docId, 'path' => $s3Key, ]; } echo "\n"; } // Итоги echo str_repeat("=", 80) . "\n"; echo "ИТОГИ:\n"; echo "Всего документов: {$stats['total']}\n"; echo "✅ На месте: {$stats['exists']}\n"; echo "⚠️ В неправильном месте: {$stats['wrong_place']}\n"; echo "❌ Отсутствуют: {$stats['missing']}\n\n"; if (!empty($stats['wrong_place_files'])) { echo "ФАЙЛЫ В НЕПРАВИЛЬНОМ МЕСТЕ:\n"; foreach ($stats['wrong_place_files'] as $file) { echo " - Документ {$file['doc_id']}: {$file['current_path']}\n"; echo " Должен быть: {$file['should_be']}\n"; } echo "\n"; } if (!empty($stats['missing_files'])) { echo "ОТСУТСТВУЮЩИЕ ФАЙЛЫ:\n"; foreach ($stats['missing_files'] as $file) { echo " - Документ {$file['doc_id']}: {$file['path']}\n"; } echo "\n"; } echo "=== ГОТОВО ===\n"; } catch (Exception $e) { echo "❌ Ошибка: " . $e->getMessage() . "\n"; exit(1); }