Files
crm.clientright.ru/PARSER_TESTING_MODE.md

200 lines
7.3 KiB
Markdown
Raw Permalink Normal View History

# Тестовый режим парсера (отключение проверки дубликатов)
**Дата:** 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`
- 🚀 Для продакшена: не передавай этот параметр
**Эффект:**
- С параметром: события добавляются всегда (даже дубликаты)
- Без параметра: дубликаты пропускаются (защита от повторов)
**Готово! Теперь можешь легко тестировать парсер! 🎉**