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