142 lines
6.5 KiB
Markdown
142 lines
6.5 KiB
Markdown
|
|
# Система уведомлений о приходе писем
|
|||
|
|
|
|||
|
|
**Дата:** 16 октября 2025
|
|||
|
|
**Статус:** ✅ Реализовано и протестировано
|
|||
|
|
|
|||
|
|
## Описание
|
|||
|
|
|
|||
|
|
Интегрирована система уведомлений в существующий процесс обработки судебных документов (`simple_project_updater_v2.php`). Теперь при поступлении письма от суда автоматически создается уведомление для ответственного по проекту.
|
|||
|
|
|
|||
|
|
## Как это работает
|
|||
|
|
|
|||
|
|
### 1. Процесс обработки письма
|
|||
|
|
|
|||
|
|
1. **Письмо поступает** → n8n обрабатывает → вызывает `simple_project_updater_v2.php`
|
|||
|
|
2. **Система ищет проект** по ФИО истца, номеру дела, УИД
|
|||
|
|
3. **Создается документ** в CRM с привязкой к проекту
|
|||
|
|
4. **Загружается файл** в S3 хранилище
|
|||
|
|
5. **🆕 Создается уведомление** для ответственного по проекту
|
|||
|
|
|
|||
|
|
### 2. Структура уведомления
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
INSERT INTO vtiger_vdnotifierpro (
|
|||
|
|
userid, -- Ответственный по проекту
|
|||
|
|
modulename, -- 'Documents'
|
|||
|
|
crmid, -- ID документа
|
|||
|
|
link, -- Ссылка на документ
|
|||
|
|
title, -- "Письмо от [ФИО] - [тип документа]"
|
|||
|
|
status -- 5 (непрочитанное)
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Пример уведомления
|
|||
|
|
|
|||
|
|
- **Текст:** "Письмо от Агеев Дмитрий - ОПРЕДЕЛЕНИЕ суда"
|
|||
|
|
- **Ссылка:** `module=Documents&view=Detail&record=123456` (без index.php?)
|
|||
|
|
- **Получатель:** Ответственный по проекту (пользователь 8)
|
|||
|
|
|
|||
|
|
## Технические детали
|
|||
|
|
|
|||
|
|
### Функция `createMailNotification()`
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
function createMailNotification($projectId, $documentId, $documentTitle, $plaintiffFio) {
|
|||
|
|
// 1. Получаем ответственного по проекту
|
|||
|
|
// 2. Формируем текст уведомления
|
|||
|
|
// 3. Проверяем дубликаты
|
|||
|
|
// 4. Создаем или обновляем уведомление
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Интеграция в основной процесс
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
// После успешной привязки документа к проекту
|
|||
|
|
if ($linkSuccess) {
|
|||
|
|
// Создаем уведомление о приходе письма
|
|||
|
|
$notificationId = createMailNotification($project_id, $documentNumericId, $document_title, $plaintiff_fio);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Обработка дубликатов
|
|||
|
|
|
|||
|
|
- Если уведомление для документа уже существует → обновляется время
|
|||
|
|
- Если уведомления нет → создается новое
|
|||
|
|
- Статус `5` = непрочитанное уведомление
|
|||
|
|
|
|||
|
|
## Результаты тестирования
|
|||
|
|
|
|||
|
|
### ✅ Тест прошел успешно
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
=== Тест исправленной системы уведомлений ===
|
|||
|
|
|
|||
|
|
Тестовые данные:
|
|||
|
|
- Проект ID: 390657 (Агеев ООО СКИЛБОКС)
|
|||
|
|
- Документ ID: 395297 (реальный документ)
|
|||
|
|
- Ответственный: пользователь 8
|
|||
|
|
|
|||
|
|
✅ Новое уведомление создано с ID: 6869
|
|||
|
|
✅ Текст: "Письмо от Губанова Анна Евгеньевна - ОПРЕДЕЛЕНИЕ суда"
|
|||
|
|
✅ Ссылка: "module=Documents&view=Detail&record=395297" (исправлено!)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проверка в CRM
|
|||
|
|
|
|||
|
|
1. **Войти в CRM** под пользователем 8 (Фёдор Коробков)
|
|||
|
|
2. **Посмотреть панель уведомлений** (справа вверху)
|
|||
|
|
3. **Увидеть уведомление:** "Письмо от Агеев Дмитрий - ОПРЕДЕЛЕНИЕ суда"
|
|||
|
|
4. **Кликнуть на уведомление** → откроется документ
|
|||
|
|
|
|||
|
|
## Файлы
|
|||
|
|
|
|||
|
|
### Измененные файлы:
|
|||
|
|
- ✅ `crm_extensions/simple_project_updater_v2.php` - добавлена функция уведомлений
|
|||
|
|
|
|||
|
|
### Новые файлы:
|
|||
|
|
- ✅ `test_mail_notification.php` - тестовый скрипт
|
|||
|
|
|
|||
|
|
## Логирование
|
|||
|
|
|
|||
|
|
Все действия логируются в `crm_extensions/logs/project_update.log`:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
2025-10-16 15:11:36 - INFO: Создаем уведомление для проекта 390657 о документе 123456
|
|||
|
|
2025-10-16 15:11:36 - DEBUG: Ответственный по проекту: пользователь 8
|
|||
|
|
2025-10-16 15:11:36 - SUCCESS: Создано новое уведомление ID: 6867 для пользователя 8
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Исправления
|
|||
|
|
|
|||
|
|
### 🔧 Проблема со ссылками (исправлено)
|
|||
|
|
|
|||
|
|
**Проблема:** Ссылки в уведомлениях не работали - показывали пустую страницу
|
|||
|
|
**Причина:** VDNotifierPro автоматически убирает `index.php?` из ссылок
|
|||
|
|
**Решение:** Изменили формат ссылки с `index.php?module=Documents&view=Detail&record=123456` на `module=Documents&view=Detail&record=123456`
|
|||
|
|
|
|||
|
|
## Преимущества
|
|||
|
|
|
|||
|
|
1. **Автоматизация** - уведомления создаются автоматически
|
|||
|
|
2. **Интеграция** - использует существующую систему VDNotifierPro
|
|||
|
|
3. **Умная логика** - показывает уведомления только ответственному по проекту
|
|||
|
|
4. **Защита от дубликатов** - не создает множественные уведомления
|
|||
|
|
5. **Прямая ссылка** - клик ведет сразу к документу
|
|||
|
|
6. **Исправленные ссылки** - работают корректно в CRM
|
|||
|
|
|
|||
|
|
## Использование
|
|||
|
|
|
|||
|
|
Система работает автоматически при обработке писем через `simple_project_updater_v2.php`. Никаких дополнительных действий не требуется.
|
|||
|
|
|
|||
|
|
### Для тестирования:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
php test_mail_notification.php
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Статус:** ✅ Готово к использованию
|
|||
|
|
**Автор:** AI Assistant + Фёдор
|
|||
|
|
**Дата:** 16 октября 2025
|