Обновленные файлы: - 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 файлы и тестовые директории не изменены
7.3 KiB
Тестовый режим парсера (отключение проверки дубликатов)
Дата: 17 октября 2025
Статус: ✅ Готово к использованию
🎯 Зачем это нужно
Когда ты тестируешь парсер на уже обработанных делах, все события помечаются как дубликаты и не добавляются в БД повторно. Это правильное поведение для продакшена, но неудобно для тестирования.
Тестовый режим позволяет:
- ✅ Повторно парсить одно и то же дело
- ✅ Видеть все события в логах
- ✅ Получать корректный JSON ответ даже для дубликатов
- ✅ Проверять работу парсера без очистки БД
🚀 Как использовать
Вариант 1: В дизайнере процессов (для тестирования)
Добавь в POST параметры:
skip_duplicate_check=1
Пример полного запроса:
status=представительство в суде 1й инстанции
link1=https://mos-gorsud.ru/rs/shcherbinskij/services/cases/civil/details/...
case_number=02-15800/2025
uid=
skip_duplicate_check=1 ← ДОБАВИТЬ ДЛЯ ТЕСТИРОВАНИЯ
Вариант 2: Через cURL (для ручного тестирования)
curl -X POST http://crm.clientright.ru/parscourt.php \
-d "status=представительство в суде 1й инстанции" \
-d "link1=https://mos-gorsud.ru/rs/shcherbinskij/..." \
-d "case_number=02-15800/2025" \
-d "uid=" \
-d "skip_duplicate_check=1"
📊 Что происходит в тестовом режиме
С проверкой дубликатов (по умолчанию, продакшен):
[2025-10-17 15:49:25] Найдено событие (МСК): Название: Решение, Дата: 02.10.2025...
[2025-10-17 15:49:25] Дубликат найден для события: Решение, пропускаем запись.
❌ Событие не добавляется в БД
❌ $last_event остается null если все события дубликаты
Без проверки дубликатов (skip_duplicate_check=1):
[2025-10-17 16:00:00] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов ОТКЛЮЧЕНА
[2025-10-17 16:00:01] Найдено событие (МСК): Название: Решение, Дата: 02.10.2025...
[2025-10-17 16:00:01] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов отключена для события: Решение
[2025-10-17 16:00:01] Данные успешно записаны в таблицу subject для события: Решение
✅ Событие добавляется в БД (даже если уже есть)
✅ $last_event всегда заполняется
✅ JSON ответ всегда возвращает данные
⚠️ ВАЖНО!
Когда использовать тестовый режим:
✅ ДА (для тестирования):
- Проверка работы парсера на уже обработанных делах
- Отладка извлечения данных
- Проверка формата JSON ответа
- Тестирование новых функций
❌ НЕТ (в продакшене):
- Обычная работа через дизайнер процессов
- Автоматические запуски через cron
- Реальная обработка новых дел
Последствия использования в продакшене:
⚠️ В БД будут создаваться дубликаты событий!
- Одно и то же событие будет записано несколько раз
- Размер БД будет расти
- Может нарушиться логика отчетов
🧪 Примеры использования
Пример 1: Тестирование московского суда
# В дизайнере процессов добавь параметр:
skip_duplicate_check=1
# Дерни парсер - получишь данные даже если дело уже парсили
Ожидаемый результат:
{
"status": "success",
"message": "Парсинг завершен.",
"last_event": {
"Наименование": "Решение",
"Дата": "02.10.2025",
...
}
}
Пример 2: Обычная работа (продакшен)
# НЕ добавляй skip_duplicate_check
# Дерни парсер - дубликаты будут пропущены
Ожидаемый результат при дубликатах:
{
"status": "success",
"message": "Парсинг завершен, но нет новых событий."
}
📝 Логи
В тестовом режиме:
[timestamp] ========================================
[timestamp] Режим парсера: НОВЫЙ (универсальный)
[timestamp] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов ОТКЛЮЧЕНА
[timestamp] Выбран парсер: MoscowCourtParser
[timestamp] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов отключена для события: Решение
[timestamp] Данные успешно записаны в таблицу subject для события: Решение
В обычном режиме:
[timestamp] ========================================
[timestamp] Режим парсера: НОВЫЙ (универсальный)
[timestamp] Выбран парсер: MoscowCourtParser
[timestamp] Дубликат найден для события: Решение, пропускаем запись.
🔧 Очистка тестовых данных
Если накопилось много дубликатов после тестирования:
-- Удалить дубликаты по конкретному делу
DELETE FROM court.subject
WHERE case_number = '02-15800/2025'
AND update_datetime > '2025-10-17 15:00:00';
-- ИЛИ оставить только последние записи
DELETE t1 FROM court.subject t1
INNER JOIN court.subject t2
WHERE t1.event_name = t2.event_name
AND t1.event_date = t2.event_date
AND t1.case_number = t2.case_number
AND t1.id < t2.id;
✅ Резюме
Новый параметр: skip_duplicate_check=1
Использование:
- 🧪 Для тестирования:
skip_duplicate_check=1 - 🚀 Для продакшена: не передавай этот параметр
Эффект:
- С параметром: события добавляются всегда (даже дубликаты)
- Без параметра: дубликаты пропускаются (защита от повторов)
Готово! Теперь можешь легко тестировать парсер! 🎉