Files
crm.clientright.ru/LOGS/AI_DOCUMENT_GENERATION_SESSION.md
Fedor cd90b0d58a feat: Добавлен инструмент генерации документов для AI Ассистента
- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
2025-11-12 19:46:06 +03:00

9.8 KiB
Raw Blame History

📝 Лог сессии: Реализация генерации документов для AI Ассистента

Дата: 2025-01-12
Участники: Фёдор, AI Assistant
Тема: Создание инструмента для генерации документов из шаблонов и с текстом от AI


🎯 Цель сессии

Реализовать функционал генерации документов (претензий, исков, жалоб, ходатайств) для AI Ассистента с возможностью использования шаблонов Nextcloud и форматирования Markdown.


📋 Обсужденные вопросы

1. Шаблонизация документов в Nextcloud

Вопрос: Как настроить шаблоны в Nextcloud? Есть ли понятный механизм шаблонизирования?

Анализ:

  • Проверен API Nextcloud Direct Editing - endpoint /templates не существует
  • Найдена папка /Templates/ в корне пользователя admin
  • ONLYOFFICE хранит "Общие шаблоны" отдельно от обычной папки Templates
  • Шаблоны доступны через WebDAV PROPFIND

Решение:

  • Использовать WebDAV для получения списка шаблонов
  • Создать API для работы с шаблонами через WebDAV
  • Поддержать заполнение переменных через PHPWord

2. Процесс создания документов AI Ассистентом

Вопрос: Как AI Ассистент будет создавать документы?

Решение:

  1. Пользователь просит создать документ
  2. AI Drawer отправляет запрос в n8n
  3. n8n → GPT-4 анализирует запрос и генерирует текст
  4. n8n вызывает API создания документа
  5. API создает DOCX с текстом (поддержка Markdown форматирования)
  6. Документ сохраняется в S3 в папку проекта
  7. Возвращается ссылка на редактирование в OnlyOffice

3. Форматирование документов

Вопрос: Можно ли сделать красивое форматирование документов?

Решение: Да! Реализована поддержка Markdown:

  • Заголовки: # H1, ## H2, ### H3
  • Жирный: **текст** или __текст__
  • Курсив: *текст* или екст_
  • Код: `текст`
  • Маркированные списки: - пункт или * пункт
  • Нумерованные списки: 1. пункт

🔧 Реализованные компоненты

1. API создания документов с текстом

Файл: /crm_extensions/file_storage/api/create_document_with_text.php

Функционал:

  • Создает DOCX/XLSX/PPTX с текстом от AI
  • Поддержка Markdown форматирования
  • Сохранение в S3 в правильную папку проекта
  • Возврат ссылки на редактирование в OnlyOffice

Особенности:

  • Поддержка JSON POST запросов
  • Fallback на простой DOCX если PHPWord недоступен
  • Правильная обработка пробелов (замена на подчеркивания)
  • Правильный путь: crm2/CRM_Active_Files/Documents/... (без /crm/ в начале)

2. API создания документов из шаблонов

Файл: /crm_extensions/file_storage/api/create_from_template.php

Функционал:

  • Скачивает шаблон из Nextcloud через WebDAV
  • Заполняет переменные через PHPWord
  • Сохраняет готовый документ в папку проекта

3. API получения списка шаблонов

Файл: /crm_extensions/file_storage/api/list_templates.php

Функционал:

  • Получает список шаблонов из Nextcloud через WebDAV PROPFIND
  • Фильтрует только Office файлы
  • Возвращает JSON с метаданными

4. Установка PHPWord

Команда:

composer require phpoffice/phpword

Результат:

  • PHPWord 1.4.0 установлен
  • Поддержка форматирования Markdown
  • Красивое оформление документов

📝 Исправленные проблемы

Проблема 1: PHPWord не установлен

  • Решение: Установлен через composer
  • Дополнительно: Добавлен fallback на простой DOCX через ZIP

Проблема 2: JSON POST не обрабатывался

  • Решение: Добавлена проверка Content-Type и парсинг JSON из php://input

Проблема 3: Неправильный путь к файлам

  • Было: /crm/crm2/CRM_Active_Files/...
  • Стало: crm2/CRM_Active_Files/...
  • Решение: Исправлен путь в create_document_with_text.php

Проблема 4: Пробелы в именах папок

  • Было: Крылова ГБУ ЖИЛИЩНИК...
  • Стало: Крылова_ГБУ_ЖИЛИЩНИК...
  • Решение: Добавлена замена пробелов на подчеркивания в recordName

📚 Созданная документация

  1. AI_DOCUMENT_TOOL_INSTRUCTION.md - Инструкция для AI Ассистента
  2. AI_DOCUMENT_GENERATION_FLOW.md - Описание процесса создания документов
  3. MARKDOWN_FORMATTING.md - Справочник по Markdown форматированию
  4. NEXTCLOUD_TEMPLATES.md - Работа с шаблонами Nextcloud
  5. NEXTCLOUD_TEMPLATES_API_ANALYSIS.md - Анализ API шаблонов
  6. ONLYOFFICE_TEMPLATES_ANALYSIS.md - Анализ шаблонов ONLYOFFICE
  7. N8N_HTTP_REQUEST_CURL.md - cURL команды для n8n

🎯 Результаты

Реализовано:

  1. API создания документов - работает, протестирован
  2. Поддержка Markdown - заголовки, жирный, курсив, списки, код
  3. Правильные пути - документы сохраняются в правильную структуру
  4. Обработка пробелов - автоматическая замена на подчеркивания
  5. PHPWord установлен - красивое форматирование документов
  6. Документация - полная инструкция для AI и разработчиков

📊 Статистика:

  • Создано файлов: 7+ (API, документация)
  • Установлено библиотек: PHPWord 1.4.0
  • Исправлено проблем: 4
  • Поддерживаемых форматов: DOCX, XLSX, PPTX
  • Поддерживаемых элементов Markdown: 6 типов

🚀 Следующие шаги

  1. Настроить в n8n:

    • Добавить HTTP Request ноду для создания документов
    • Подключить к AI workflow
    • Протестировать создание документов
  2. Улучшения (опционально):

    • Добавить поддержку шаблонов с переменными
    • Расширенное форматирование (таблицы, изображения)
    • Автоматическое определение типа документа
  3. Интеграция с AI:

    • Добавить инструмент в список доступных для AI
    • Протестировать генерацию документов через AI Drawer

📁 Измененные файлы

Новые файлы:

  • /crm_extensions/file_storage/api/create_document_with_text.php
  • /crm_extensions/file_storage/api/create_from_template.php
  • /crm_extensions/file_storage/api/list_templates.php
  • /crm_extensions/file_storage/docs/AI_DOCUMENT_TOOL_INSTRUCTION.md
  • /crm_extensions/file_storage/docs/AI_DOCUMENT_GENERATION_FLOW.md
  • /crm_extensions/file_storage/docs/MARKDOWN_FORMATTING.md
  • /crm_extensions/file_storage/docs/NEXTCLOUD_TEMPLATES.md
  • /crm_extensions/file_storage/docs/NEXTCLOUD_TEMPLATES_API_ANALYSIS.md
  • /crm_extensions/file_storage/docs/ONLYOFFICE_TEMPLATES_ANALYSIS.md
  • /crm_extensions/file_storage/docs/N8N_HTTP_REQUEST_CURL.md

Обновленные файлы:

  • composer.json - добавлен phpoffice/phpword
  • composer.lock - обновлен после установки PHPWord

💡 Ключевые решения

  1. Использование Markdown - стандартный синтаксис, понятный AI
  2. WebDAV вместо API - надежнее, работает всегда
  3. Fallback механизм - работает даже без PHPWord
  4. Правильная структура путей - соответствует существующей системе

Статус: Готово к использованию

Все компоненты реализованы, протестированы и готовы к использованию в n8n workflow.