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

7.1 KiB
Raw Blame History

📋 Настройка шаблонов документов в Nextcloud

Дата: 2025-01-XX
Статус: Готово к использованию

🎯 Обзор

Для генерации документов из шаблонов используется гибридный подход:

  1. Шаблоны хранятся в Nextcloud в папке /crm/Templates/
  2. Заполнение переменных происходит через PHPWord
  3. Готовый документ сохраняется в папку проекта и открывается в OnlyOffice

📁 Структура шаблонов

1. Создание папки для шаблонов

В Nextcloud создайте папку:

/crm/Templates/

Как создать:

  1. Зайдите в Nextcloud: https://office.clientright.ru:8443
  2. Перейдите в папку /crm/
  3. Создайте папку Templates
  4. Загрузите туда типовые документы

2. Формат шаблонов

Формат переменных в шаблонах:

Вариант 1: Простые переменные

{CLIENT_NAME}
{DATE}
{AMOUNT}

Вариант 2: Двойные фигурные скобки

{{CLIENT_NAME}}
{{DATE}}
{{AMOUNT}}

Пример шаблона претензии:

ПРЕТЕНЗИЯ

Кому: {RESPONDENT_NAME}
От: {CLIENT_NAME}

Дата: {DATE}

Текст претензии:
{CLAIM_TEXT}

Требования:
1. Возместить ущерб в размере {AMOUNT} рублей
2. {OTHER_REQUIREMENTS}

С уважением,
{CLIENT_NAME}

🔧 Использование API

Endpoint: /crm_extensions/file_storage/api/create_from_template.php

Параметры:

  • module - модуль CRM (Project, Contacts, etc.)
  • recordId - ID записи
  • recordName - название записи
  • fileName - имя создаваемого файла
  • templateName - имя шаблона из Nextcloud (например, pretenziya.docx)
  • variables - JSON объект с переменными для заполнения

Пример запроса:

const url = `/crm_extensions/file_storage/api/create_from_template.php?` +
    `module=Project&` +
    `recordId=123456&` +
    `recordName=Проект_1&` +
    `fileName=Претензия_УК&` +
    `templateName=pretenziya.docx&` +
    `variables=${encodeURIComponent(JSON.stringify({
        CLIENT_NAME: 'Иванов Иван Иванович',
        DATE: '15.01.2025',
        AMOUNT: '400000',
        RESPONDENT_NAME: 'УК "Жилищник"',
        CLAIM_TEXT: 'УК отказывается возмещать ущерб от залива квартиры...',
        OTHER_REQUIREMENTS: 'Провести экспертизу'
    }))}`;

window.location.href = url;

🚀 Интеграция с AI Drawer

Пример использования в n8n:

// После генерации текста AI
const aiResponse = {
    document_type: 'pretenziya',
    client_name: 'Иванов Иван Иванович',
    amount: '400000',
    claim_text: '...',
    // ... другие данные
};

// Определяем шаблон по типу документа
const templateMap = {
    'pretenziya': 'pretenziya.docx',
    'isk': 'iskovoe_zayavlenie.docx',
    'zhaloba': 'zhaloba.docx',
    'hodataystvo': 'hodataystvo.docx'
};

const templateName = templateMap[aiResponse.document_type] || 'pretenziya.docx';

// Формируем переменные
const variables = {
    CLIENT_NAME: aiResponse.client_name,
    DATE: new Date().toLocaleDateString('ru-RU'),
    AMOUNT: aiResponse.amount,
    CLAIM_TEXT: aiResponse.claim_text,
    // ... другие переменные
};

// Вызываем API создания документа
const createUrl = `https://crm.clientright.ru/crm_extensions/file_storage/api/create_from_template.php?` +
    `module=Project&` +
    `recordId=${projectId}&` +
    `recordName=${projectName}&` +
    `fileName=${fileName}&` +
    `templateName=${templateName}&` +
    `variables=${encodeURIComponent(JSON.stringify(variables))}`;

// Открываем документ
return { url: createUrl };

📝 Создание шаблонов

Рекомендации по созданию шаблонов:

  1. Используйте стандартные названия:

    • pretenziya.docx - Претензия
    • iskovoe_zayavlenie.docx - Исковое заявление
    • zhaloba.docx - Жалоба
    • hodataystvo.docx - Ходатайство
  2. Структура документа:

    • Шапка (кому, от кого, дата)
    • Фабула (описание ситуации)
    • Требования
    • Ссылки на право
    • Приложения
  3. Переменные:

    • Используйте понятные названия: CLIENT_NAME, AMOUNT, DATE
    • Все переменные в верхнем регистре
    • Обрамляйте фигурными скобками: {VAR} или {{VAR}}

🔍 Отладка

Логи:

tail -f /var/log/apache2/error.log | grep "CREATE FROM TEMPLATE"

Проверка шаблона:

# Проверить наличие шаблона в Nextcloud
curl -u admin:office "https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/Templates/pretenziya.docx" -k -I

⚠️ Ограничения

  1. PHPWord работает только с DOCX файлами
  2. Для XLSX и PPTX используется простая замена текста
  3. Сложное форматирование (таблицы, изображения) может не сохраниться при простой замене

🎯 Альтернативные подходы

Вариант A: Использование DOCX шаблонов с закладками

Вместо переменных {VAR} можно использовать закладки Word:

  1. В Word: Вставка → Закладка
  2. Создать закладку с именем переменной
  3. PHPWord может заполнять закладки

Вариант B: Использование только локальных шаблонов

Если не нужна синхронизация через Nextcloud:

  1. Хранить шаблоны в /crm_extensions/file_storage/templates/
  2. Использовать напрямую без WebDAV

Вариант C: Генерация через PDFMaker

Если документ должен быть в PDF:

  1. Создать DOCX из шаблона
  2. Конвертировать через PDFMaker
  3. Сохранить PDF в проект

📚 Полезные ссылки