Обновленные файлы: - crm_extensions/nextcloud_api.php (2 места) - modules/Documents/actions/NcPrepareEdit.php - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - crm_extensions/file_storage/api/get_edit_urls.php - crm_extensions/file_storage/api/simple_edit.php - crm_extensions/README.md - NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md - crm_extensions/docs/NEXTCLOUD_EDITOR.md - test_syntax_check.html - crm_extensions/tests/test_edit_button.html Все ссылки теперь указывают на новый сервер office.clientright.ru Backup файлы и тестовые директории не изменены
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 параметры
|
||
|
||
## ✅ Готово к использованию!
|
||
|
||
Новая версия полностью совместима со старой, но теперь может парсить и московские суды! 🎉
|
||
|
||
|