214 lines
9.8 KiB
Markdown
214 lines
9.8 KiB
Markdown
|
|
# 📝 Лог сессии: Реализация генерации документов для 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
|
|||
|
|
|
|||
|
|
**Команда:**
|
|||
|
|
```bash
|
|||
|
|
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.
|
|||
|
|
|