- Добавлена полная интеграция с Telegram Mini App (динамическая загрузка SDK) - Отдельный компактный дизайн для Telegram Mini App - Добавлен loader при инициализации (предотвращает мелькание SMS-авторизации) - Улучшена навигация: кнопки "Назад" и "К списку заявок" теперь сохраняют авторизацию - Telegram Mini App: кнопка "Выход" просто закрывает приложение - Telegram Mini App: заявки "В работе" скрыты из списка - Веб-версия: для заявок "В работе" добавлена кнопка "Просмотреть в Telegram" (ссылка на @klientprav_bot) - Telegram Mini App: кнопки действий в черновиках расположены вертикально - Веб-версия: убрано отображение номера телефона в приветствии - Исправлена проблема с возвратом к списку черновиков (не требует повторной SMS-авторизации) - Заблокировано удаление и редактирование заявок со статусом "В работе" - Добавлена документация по Telegram Mini App интеграции
73 lines
3.0 KiB
JavaScript
73 lines
3.0 KiB
JavaScript
// ============================================================================
|
||
// n8n Code Node: Полный цикл - HTML → Base64 PDF (всё в одном)
|
||
// ============================================================================
|
||
// Этот код делает всё: получает HTML, отправляет на конвертацию, получает base64
|
||
// Требует настройки HTTP Request ноды или внешнего сервиса
|
||
// ============================================================================
|
||
|
||
// Получаем HTML из предыдущей ноды "Code: Process Flights Data"
|
||
const processedData = $('Code: Process Flights Data').first().json;
|
||
|
||
if (!processedData || !processedData.html) {
|
||
throw new Error('HTML не получен из предыдущей ноды');
|
||
}
|
||
|
||
const html = processedData.html;
|
||
|
||
// ==== НАСТРОЙКИ ====
|
||
// Замените на ваши параметры
|
||
const PDF_SERVICE_URL = 'https://api.htmlpdfapi.com/v1/pdf'; // Или другой сервис
|
||
const PDF_API_KEY = 'YOUR_API_KEY'; // Замените на ваш ключ
|
||
|
||
// ==== ПОДГОТОВКА ЗАПРОСА ДЛЯ HTTP REQUEST ====
|
||
// Этот код подготавливает данные для HTTP Request ноды
|
||
// После этого Code Node добавьте HTTP Request ноду и используйте эти данные
|
||
|
||
return [{
|
||
json: {
|
||
// Данные для HTTP Request ноды
|
||
http_method: 'POST',
|
||
http_url: PDF_SERVICE_URL,
|
||
http_headers: {
|
||
'Content-Type': 'application/json',
|
||
'Authorization': `Bearer ${PDF_API_KEY}`
|
||
},
|
||
http_body: JSON.stringify({
|
||
html: html,
|
||
options: {
|
||
format: 'A4',
|
||
printBackground: true,
|
||
margin: {
|
||
top: '20mm',
|
||
right: '15mm',
|
||
bottom: '20mm',
|
||
left: '15mm'
|
||
}
|
||
},
|
||
base64: true // Запрашиваем base64 напрямую
|
||
}),
|
||
|
||
// Метаданные
|
||
html_length: html.length,
|
||
flights_count: processedData.flights_count,
|
||
generated_at: processedData.generated_at,
|
||
|
||
// Инструкция для следующей ноды
|
||
next_step: 'HTTP Request → Code: Extract Base64 PDF'
|
||
}
|
||
}];
|
||
|
||
// ============================================================================
|
||
// ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ:
|
||
// ============================================================================
|
||
// 1. Этот Code Node подготавливает запрос
|
||
// 2. Добавьте HTTP Request ноду после этого Code Node
|
||
// 3. В HTTP Request ноде используйте:
|
||
// - Method: {{ $json.http_method }}
|
||
// - URL: {{ $json.http_url }}
|
||
// - Headers: {{ $json.http_headers }}
|
||
// - Body: {{ $json.http_body }}
|
||
// 4. После HTTP Request добавьте Code Node с кодом из N8N_FLIGHTS_PDF_BASE64_FULL.js
|
||
// для извлечения base64 из ответа
|
||
// ============================================================================
|