# 🛠️ Инструмент для 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}`