- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI - Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код) - Установлен PHPWord для красивого форматирования документов - Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале) - Замена пробелов на подчеркивания в именах папок - Создана документация для AI и разработчиков - Добавлены API для работы с шаблонами Nextcloud
9.8 KiB
📝 Лог сессии: Реализация генерации документов для 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 Ассистент будет создавать документы?
Решение:
- Пользователь просит создать документ
- AI Drawer отправляет запрос в n8n
- n8n → GPT-4 анализирует запрос и генерирует текст
- n8n вызывает API создания документа
- API создает DOCX с текстом (поддержка Markdown форматирования)
- Документ сохраняется в S3 в папку проекта
- Возвращается ссылка на редактирование в 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
📚 Созданная документация
- AI_DOCUMENT_TOOL_INSTRUCTION.md - Инструкция для AI Ассистента
- AI_DOCUMENT_GENERATION_FLOW.md - Описание процесса создания документов
- MARKDOWN_FORMATTING.md - Справочник по Markdown форматированию
- NEXTCLOUD_TEMPLATES.md - Работа с шаблонами Nextcloud
- NEXTCLOUD_TEMPLATES_API_ANALYSIS.md - Анализ API шаблонов
- ONLYOFFICE_TEMPLATES_ANALYSIS.md - Анализ шаблонов ONLYOFFICE
- N8N_HTTP_REQUEST_CURL.md - cURL команды для n8n
🎯 Результаты
✅ Реализовано:
- API создания документов - работает, протестирован
- Поддержка Markdown - заголовки, жирный, курсив, списки, код
- Правильные пути - документы сохраняются в правильную структуру
- Обработка пробелов - автоматическая замена на подчеркивания
- PHPWord установлен - красивое форматирование документов
- Документация - полная инструкция для AI и разработчиков
📊 Статистика:
- Создано файлов: 7+ (API, документация)
- Установлено библиотек: PHPWord 1.4.0
- Исправлено проблем: 4
- Поддерживаемых форматов: DOCX, XLSX, PPTX
- Поддерживаемых элементов Markdown: 6 типов
🚀 Следующие шаги
-
Настроить в n8n:
- Добавить HTTP Request ноду для создания документов
- Подключить к AI workflow
- Протестировать создание документов
-
Улучшения (опционально):
- Добавить поддержку шаблонов с переменными
- Расширенное форматирование (таблицы, изображения)
- Автоматическое определение типа документа
-
Интеграция с 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/phpwordcomposer.lock- обновлен после установки PHPWord
💡 Ключевые решения
- Использование Markdown - стандартный синтаксис, понятный AI
- WebDAV вместо API - надежнее, работает всегда
- Fallback механизм - работает даже без PHPWord
- Правильная структура путей - соответствует существующей системе
✅ Статус: Готово к использованию
Все компоненты реализованы, протестированы и готовы к использованию в n8n workflow.