# Универсальный парсер судов - Документация **Дата:** 17 октября 2025 **Статус:** ✅ Готов к тестированию ## 🎯 Что изменилось Парсер `parscourt.php` был улучшен для поддержки **двух типов судов**: 1. **Региональные суды** (*.sudrf.ru) - существующая логика 2. **Московские суды** (mos-gorsud.ru) - **НОВОЕ!** ## 📋 Обратная совместимость **✅ ВСЕ СУЩЕСТВУЮЩИЕ ИНТЕГРАЦИИ ПРОДОЛЖАТ РАБОТАТЬ БЕЗ ИЗМЕНЕНИЙ!** - Вход (POST параметры) - **НЕ ИЗМЕНИЛСЯ** - Выход (JSON ответ) - **НЕ ИЗМЕНИЛСЯ** - Сохранение в БД - **НЕ ИЗМЕНИЛОСЬ** ## 🔧 Как это работает ### Автоматическое определение типа суда Скрипт автоматически определяет тип суда по URL: - `sverdlov--perm.sudrf.ru` → **Региональный парсер** - `mos-gorsud.ru` → **Московский парсер** ### Fallback механизм Если новый парсер не сработает, скрипт **автоматически** переключится на старый (проверенный) код. ## 📂 Новая структура файлов ``` /var/www/fastuser/data/www/crm.clientright.ru/ ├── parscourt.php # Главный скрипт (улучшенный) ├── parscourt_backup_YYYYMMDD_HHMMSS.php # Резервная копия (старый) └── parsers/ ├── BaseCourtParser.php # Базовый класс ├── RegionalCourtParser.php # Парсер для региональных судов ├── MoscowCourtParser.php # Парсер для московских судов └── CourtParserFactory.php # Фабрика парсеров ``` ## 🚀 Использование ### Вариант 1: Автоматический режим (рекомендуется) Используйте как раньше - ничего не меняя: ```http POST /parscourt.php status=представительство в суде 1й инстанции link1=https://sverdlov--perm.sudrf.ru/modules.php?name=sud_delo... case_number=2-5352/2025 uid=59RS0007-01-2025-006357-84 ``` ### Вариант 2: Принудительно старый парсер Если хочешь отключить новую логику (для отладки): ```http POST /parscourt.php status=... link1=... case_number=... uid=... use_new_parser=0 ← ДОБАВИТЬ ЭТО ``` ## 📊 Пример ответа (не изменился) ```json { "status": "success", "message": "Парсинг завершен.", "last_event": { "Наименование": "Предварительное судебное заседание", "Дата": "16.10.2025", "Время": "10:00", "Место": "Зал судебных заседаний №1", "Результат": "Отложено", "Основание": "...", "Примечание": "...", "Дата размещения": "15.10.2025" } } ``` ## 🔍 Логирование Все логи пишутся в `logs/parser.log`: ``` [2025-10-17 10:00:00] ======================================== [2025-10-17 10:00:00] Режим парсера: НОВЫЙ (универсальный) [2025-10-17 10:00:00] Выбран парсер: MoscowCourtParser [2025-10-17 10:00:01] Старт парсинга 2-5352/2025 для статуса: ... (МОСКОВСКИЙ СУД) ``` ## ⚠️ Важные моменты ### Московские суды Московские суды имеют **другую структуру HTML**, поэтому: - Парсер пытается определить структуру автоматически - Может потребоваться тонкая настройка после первых тестов - Если структура страницы неизвестна - используется fallback ### Тестирование **Для тестирования московских судов:** 1. Найди проект с ссылкой на `mos-gorsud.ru` 2. Дерни скрипт через дизайнер процессов 3. Проверь `logs/parser.log` - должно быть "МОСКОВСКИЙ СУД" 4. Проверь, что данные сохранились в БД `court` → таблица `subject` ## 🛠️ Расширение функциональности ### Добавление нового типа суда 1. Создай новый парсер в `parsers/`: ```php class NewCourtParser extends BaseCourtParser { public function canHandle($url) { return preg_match('/your-pattern/', $url); } public function parse($url, $status) { // Твоя логика парсинга } } ``` 2. Зарегистрируй в `CourtParserFactory.php`: ```php $parsers = [ new NewCourtParser($pdo, $case_number, $uid), new MoscowCourtParser($pdo, $case_number, $uid), new RegionalCourtParser($pdo, $case_number, $uid), ]; ``` ## 📞 Что делать если что-то сломалось 1. **Проверь логи:** `logs/parser.log` 2. **Откат на старую версию:** ```bash cp parscourt_backup_* parscourt.php ``` 3. **Или отключи новый парсер:** Добавь `use_new_parser=0` в POST параметры ## ✅ Готово к использованию! Новая версия полностью совместима со старой, но теперь может парсить и московские суды! 🎉