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