Обновленные файлы: - 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 файлы и тестовые директории не изменены
178 lines
7.0 KiB
Markdown
178 lines
7.0 KiB
Markdown
# Система создания судебных событий в CRM
|
||
|
||
## Описание
|
||
|
||
Новая система для автоматического создания событий в календаре CRM на основе данных парсинга судебных сайтов. Решает проблему нестабильной работы workflow и обеспечивает надёжное создание событий через прямые SQL запросы.
|
||
|
||
## Структура
|
||
|
||
### 1. CreateCourtEvent_v2.php
|
||
**Основной скрипт для создания событий**
|
||
|
||
- Создаёт событие в календаре CRM через прямые SQL запросы
|
||
- Привязывает событие к проекту
|
||
- Обновляет поля проекта с датой и временем последнего события
|
||
- Надёжно работает даже при высокой нагрузке
|
||
|
||
**Входные параметры (JSON через stdin или POST):**
|
||
```json
|
||
{
|
||
"project_id": "364118",
|
||
"event_name": "Судебное заседание",
|
||
"event_date": "02.10.2025",
|
||
"event_time": "12:00",
|
||
"location": "Зал 305",
|
||
"result": "Решение",
|
||
"basis": "Основание",
|
||
"note": "Примечание",
|
||
"publication_date": "02.10.2025"
|
||
}
|
||
```
|
||
|
||
**Выходные данные:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"event_id": "4x395438",
|
||
"event_numeric_id": 395438,
|
||
"event_name": "Решение",
|
||
"event_date": "2025-10-02",
|
||
"event_time": "12:00:00",
|
||
"project_id": 364118,
|
||
"message": "Событие успешно создано и привязано к проекту"
|
||
}
|
||
```
|
||
|
||
### 2. ParseAndCreateEvent.php
|
||
**Обёртка для workflow - полный цикл парсинга и создания события**
|
||
|
||
- Принимает те же параметры что и `parscourt.php`
|
||
- Вызывает `parscourt.php` для парсинга данных с сайта суда
|
||
- Извлекает данные последнего события из ответа
|
||
- Создаёт событие через `CreateCourtEvent_v2.php`
|
||
|
||
**Входные параметры (GET/POST):**
|
||
- `project_id` - ID проекта (обязательно)
|
||
- `status` - статус проекта
|
||
- `link1`, `link2`, `link3` - ссылки на дело в суде
|
||
- `case_number` - номер дела
|
||
- `uid` - УИД дела
|
||
- `use_new_parser` - использовать новый парсер (по умолчанию true)
|
||
- `skip_duplicate_check` - пропустить проверку дубликатов (по умолчанию false)
|
||
|
||
**Выходные данные:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "Парсинг выполнен и событие создано",
|
||
"event_created": true,
|
||
"event_id": "4x395438",
|
||
"event_name": "Решение",
|
||
"event_date": "02.10.2025",
|
||
"event_time": "12:00",
|
||
"project_id": "364118"
|
||
}
|
||
```
|
||
|
||
## Использование
|
||
|
||
### Вариант 1: Прямое создание события (если данные уже есть)
|
||
|
||
```bash
|
||
echo '{"project_id":"364118","event_name":"Решение","event_date":"02.10.2025","event_time":"12:00","result":"02-15800/2025 - Решение"}' | php CreateCourtEvent_v2.php
|
||
```
|
||
|
||
### Вариант 2: Парсинг и создание события (полный цикл)
|
||
|
||
```bash
|
||
php ParseAndCreateEvent.php project_id=364118 status="представительство в суде 1й инстанции" link1="https://mos-gorsud.ru/rs/shcherbinskij/services/cases/civil/details/d5ccaf30-7093-11f0-87dc-e54257624d4d"
|
||
```
|
||
|
||
Или через HTTP:
|
||
```
|
||
GET /ParseAndCreateEvent.php?project_id=364118&status=...&link1=...
|
||
```
|
||
|
||
### Вариант 3: Из workflow CRM
|
||
|
||
В workflow вместо блока PHP кода используйте блок "HTTP Request":
|
||
|
||
**URL:** `http://your-domain.ru/ParseAndCreateEvent.php`
|
||
|
||
**Method:** GET или POST
|
||
|
||
**Parameters:**
|
||
```
|
||
project_id=$crmid
|
||
status=$projectstatus
|
||
link1=$cf_1499
|
||
link2=$cf_2278
|
||
link3=$cf_2281
|
||
case_number=$project_no
|
||
uid=$cf_2490
|
||
```
|
||
|
||
**Response handling:**
|
||
```php
|
||
$response = json_decode($result, true);
|
||
|
||
if ($response['success'] && $response['event_created']) {
|
||
return "yes"; // Событие создано
|
||
} else {
|
||
return "no"; // Событие не создано
|
||
}
|
||
```
|
||
|
||
## Логи
|
||
|
||
- **CreateCourtEvent_v2.php:** `logs/create_court_event.log`
|
||
- **ParseAndCreateEvent.php:** `logs/parse_and_create_event.log`
|
||
- **parscourt.php:** `logs/parser.log`
|
||
|
||
## Преимущества новой системы
|
||
|
||
1. ✅ **Надёжность** - прямые SQL запросы вместо ненадёжного workflow
|
||
2. ✅ **Независимость** - не зависит от кеша и багов Workflow2
|
||
3. ✅ **Логирование** - детальные логи на каждом этапе
|
||
4. ✅ **Гибкость** - можно вызывать из workflow, cron, или вручную
|
||
5. ✅ **Совместимость** - работает с существующим `parscourt.php`
|
||
6. ✅ **Универсальность** - поддерживает и региональные, и московские суды
|
||
|
||
## Обновление полей проекта
|
||
|
||
При создании события автоматически обновляются поля:
|
||
- **cf_1682** - дата последнего события (формат YYYY-MM-DD)
|
||
- **cf_1684** - время последнего события (формат HH:MM:SS)
|
||
|
||
## Связь с проектом
|
||
|
||
Событие автоматически связывается с проектом через таблицу `vtiger_seactivityrel`, что позволяет видеть его в разделе "Мероприятия" проекта.
|
||
|
||
## Статус события
|
||
|
||
По умолчанию событие создаётся со статусом:
|
||
- **Тип:** Meeting (Встреча)
|
||
- **Статус:** Planned (Запланировано)
|
||
- **Видимость:** Public (Публичное)
|
||
- **Длительность:** 1 час
|
||
|
||
## Примечания
|
||
|
||
- Если дата события пустая, событие не создаётся
|
||
- Если время не указано, используется 10:00 по умолчанию
|
||
- Владелец события = владелец проекта
|
||
- Событие автоматически появляется в календаре CRM
|
||
|
||
## Миграция с workflow
|
||
|
||
Чтобы перейти с workflow на новую систему:
|
||
|
||
1. В workflow замените блок "обрабатываем JSON" и "Создаем Событие по суду" на один блок "HTTP Request"
|
||
2. Укажите URL: `http://your-domain.ru/ParseAndCreateEvent.php`
|
||
3. Передайте параметры проекта
|
||
4. Проверьте ответ на `success: true`
|
||
|
||
Или просто замените вызов `parscourt.php` на `ParseAndCreateEvent.php` с теми же параметрами.
|
||
|
||
|