Files
crm.clientright.ru/COURT_PARSER_UPGRADE.md

163 lines
5.9 KiB
Markdown
Raw Permalink Normal View History

# Универсальный парсер судов - Документация
**Дата:** 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 параметры
## ✅ Готово к использованию!
Новая версия полностью совместима со старой, но теперь может парсить и московские суды! 🎉