Files
crm.clientright.ru/PARSER_TESTING_MODE.md
Fedor 75d3f7942b feat: Обновлены все URL Nextcloud с office.klientprav.tech на office.clientright.ru
Обновленные файлы:
- 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 файлы и тестовые директории не изменены
2025-10-20 17:17:34 +03:00

200 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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