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

7.5 KiB
Raw Blame 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

📤 Ответ

Успешный ответ:

{
    "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"
}

Ошибка:

{
    "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):

{
    "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:

{
    "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: Создание иска

Запрос:

{
    "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}