Files
crm.clientright.ru/crm_extensions/file_storage/docs/AI_DOCUMENT_TOOL.md

206 lines
7.5 KiB
Markdown
Raw Normal View History

# 🛠️ Инструмент для AI: Создание документов
**Дата:** 2025-01-XX
**Статус:** ✅ Готово к использованию
## 🎯 Назначение
Простой инструмент для AI Ассистента, который:
1. Создает пустой DOCX/XLSX/PPTX файл
2. Записывает в него текст, сгенерированный AI
3. Сохраняет в папку проекта
4. Возвращает ссылку на редактирование
## 📍 Endpoint
```
POST /crm_extensions/file_storage/api/create_document_with_text.php
```
## 📥 Параметры запроса
### Обязательные:
- `module` - модуль CRM (Project, Contacts, Accounts, etc.)
- `recordId` - ID записи (проекта, контакта и т.д.)
- `recordName` - название записи (для формирования папки)
- `fileName` - имя создаваемого файла (без расширения)
- `documentText` - текст документа, который нужно записать
### Опциональные:
- `documentType` - тип документа: `docx` (по умолчанию), `xlsx`, `pptx`
## 📤 Ответ
### Успешный ответ:
```json
{
"success": true,
"message": "Документ создан успешно",
"documentName": "Претензия_УК_Жилищник.docx",
"documentUrl": "https://s3.twcstorage.ru/.../Претензия_УК_Жилищник.docx",
"editUrl": "https://crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php?recordId=123456&fileName=...",
"path": "crm2/CRM_Active_Files/Documents/Project/Дело_Иванова_123456/Претензия_УК_Жилищник.docx"
}
```
### Ошибка:
```json
{
"success": false,
"error": "Не указаны обязательные параметры: module, recordId, fileName, documentText"
}
```
## 🔧 Использование в n8n
### Пример HTTP Request узла в n8n:
**URL:**
```
https://crm.clientright.ru/crm_extensions/file_storage/api/create_document_with_text.php
```
**Method:** `POST`
**Body (JSON):**
```json
{
"module": "{{ $json.body.context.module }}",
"recordId": "{{ $json.body.context.projectId }}",
"recordName": "{{ $json.body.context.projectName }}",
"fileName": "{{ $json.body.documentName }}",
"documentText": "{{ $json.body.generatedText }}",
"documentType": "docx"
}
```
**Или через Query Parameters (GET):**
```
https://crm.clientright.ru/crm_extensions/file_storage/api/create_document_with_text.php?
module={{ $json.body.context.module }}&
recordId={{ $json.body.context.projectId }}&
recordName={{ $json.body.context.projectName }}&
fileName={{ $json.body.documentName }}&
documentText={{ $json.body.generatedText }}&
documentType=docx
```
## 📋 Пример полного workflow в n8n
```
1. Webhook (получает запрос от AI Drawer)
2. AI Node (GPT-4) - генерирует текст документа
3. HTTP Request → create_document_with_text.php
Body: {
module: "Project",
recordId: "123456",
recordName: "Дело Иванова",
fileName: "Претензия_УК_Жилищник",
documentText: "ПРЕТЕНЗИЯ\n\nКому: УК Жилищник\nОт: Иванов Иван Иванович\n\n..."
}
4. Получаем ответ:
{
success: true,
documentName: "Претензия_УК_Жилищник.docx",
editUrl: "https://..."
}
5. Формируем сообщение для пользователя:
"✅ Документ создан: Претензия_УК_Жилищник.docx\n[Открыть для редактирования]"
6. Публикуем в Redis: ai:response:{taskId}
```
## 💬 Пример ответа AI пользователю
**После создания документа:**
```
✅ Документ создан: Претензия_УК_Жилищник.docx
Документ сохранен в папку проекта и готов к редактированию.
Вы можете открыть его для просмотра и внесения изменений.
[Открыть документ] ← ссылка на editUrl
```
## 🎨 Форматирование текста
### DOCX:
- Текст разбивается на параграфы по переносам строк (`\n`)
- Каждый параграф отделяется пустой строкой
- Шрифт: Times New Roman, 12pt
- Поля: 2 см сверху/справа/снизу, 3 см слева
### XLSX:
- Весь текст записывается в ячейку A1
- Автоподбор ширины колонки
### PPTX:
- Текст размещается на первом слайде
- Разбивается на параграфы
## 🔍 Примеры использования
### Пример 1: Создание претензии
**Запрос в n8n:**
```json
{
"module": "Project",
"recordId": "123456",
"recordName": "Дело Иванова",
"fileName": "Претензия_УК_Жилищник",
"documentText": "ПРЕТЕНЗИЯ\n\nКому: УК \"Жилищник\"\nОт: Иванов Иван Иванович\n\nДата: 15.01.2025\n\nТекст претензии:\nУК отказывается возмещать ущерб от залива квартиры...\n\nТребования:\n1. Возместить ущерб в размере 400000 рублей\n2. Провести экспертизу\n\nС уважением,\nИванов Иван Иванович"
}
```
**Результат:**
- Создан файл ретензия_УК_Жилищник.docx`
- Сохранен в папку проекта
- Возвращена ссылка на редактирование
### Пример 2: Создание иска
**Запрос:**
```json
{
"module": "Project",
"recordId": "123456",
"recordName": "Дело Иванова",
"fileName": "Исковоеаявление",
"documentText": "ИСКОВОЕ ЗАЯВЛЕНИЕ\n\nВ суд: ...\n\nИстец: Иванов Иван Иванович\nОтветчик: УК \"Жилищник\"\n\n...",
"documentType": "docx"
}
```
## ⚠️ Ограничения
1. **Максимальный размер текста:** Ограничен памятью PHP (обычно 128MB+)
2. **Форматирование:** Базовое форматирование (параграфы, переносы строк)
3. **Таблицы/изображения:** Не поддерживаются в упрощенной версии
## 🚀 Следующие шаги
После MVP можно добавить:
1. Поддержку шаблонов (заполнение переменных)
2. Расширенное форматирование (жирный, курсив, списки)
3. Таблицы и изображения
4. Автоматическое определение типа документа
## 📝 Примечания
- Файл сохраняется в S3
- Событие публикуется в Redis для индексации
- Документ сразу доступен для редактирования в OnlyOffice
- Путь формируется автоматически: `{module}/{recordName}_{recordId}/{fileName}.{ext}`