# Тестовый режим парсера (отключение проверки дубликатов) **Дата:** 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 (для ручного тестирования) ```bash 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: Тестирование московского суда ```bash # В дизайнере процессов добавь параметр: skip_duplicate_check=1 # Дерни парсер - получишь данные даже если дело уже парсили ``` **Ожидаемый результат:** ```json { "status": "success", "message": "Парсинг завершен.", "last_event": { "Наименование": "Решение", "Дата": "02.10.2025", ... } } ``` ### Пример 2: Обычная работа (продакшен) ```bash # НЕ добавляй skip_duplicate_check # Дерни парсер - дубликаты будут пропущены ``` **Ожидаемый результат при дубликатах:** ```json { "status": "success", "message": "Парсинг завершен, но нет новых событий." } ``` --- ## 📝 Логи ### В тестовом режиме: ``` [timestamp] ======================================== [timestamp] Режим парсера: НОВЫЙ (универсальный) [timestamp] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов ОТКЛЮЧЕНА [timestamp] Выбран парсер: MoscowCourtParser [timestamp] ⚠️ ТЕСТОВЫЙ РЕЖИМ: Проверка дубликатов отключена для события: Решение [timestamp] Данные успешно записаны в таблицу subject для события: Решение ``` ### В обычном режиме: ``` [timestamp] ======================================== [timestamp] Режим парсера: НОВЫЙ (универсальный) [timestamp] Выбран парсер: MoscowCourtParser [timestamp] Дубликат найден для события: Решение, пропускаем запись. ``` --- ## 🔧 Очистка тестовых данных Если накопилось много дубликатов после тестирования: ```sql -- Удалить дубликаты по конкретному делу 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` - 🚀 Для продакшена: не передавай этот параметр **Эффект:** - С параметром: события добавляются всегда (даже дубликаты) - Без параметра: дубликаты пропускаются (защита от повторов) **Готово! Теперь можешь легко тестировать парсер! 🎉**