feat: Telegram Mini App integration and UX improvements
- Добавлена полная интеграция с 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 интеграции
This commit is contained in:
65
docs/N8N_FLIGHTS_PREPARE_REQUEST_DATA.js
Normal file
65
docs/N8N_FLIGHTS_PREPARE_REQUEST_DATA.js
Normal file
@@ -0,0 +1,65 @@
|
||||
// ============================================================================
|
||||
// n8n Code Node: Подготовка данных запроса рейса
|
||||
// ============================================================================
|
||||
// Используйте эту ноду ПЕРЕД "причесываем данные"
|
||||
// Она безопасно получает данные из ноды "запрос рейса" и передаёт их дальше
|
||||
// ============================================================================
|
||||
|
||||
// Получаем данные из ноды "запрос рейса"
|
||||
let requestData = {
|
||||
flight_number: null,
|
||||
departure_date_local: null,
|
||||
arrival_date_local: null
|
||||
};
|
||||
|
||||
try {
|
||||
const requestNode = $('запрос рейса');
|
||||
if (requestNode && requestNode.first()) {
|
||||
const requestJson = requestNode.first().json;
|
||||
if (requestJson) {
|
||||
requestData = {
|
||||
flight_number: requestJson.flight_number || requestJson.ident || requestJson.flight || null,
|
||||
departure_date_local: requestJson.departure_date_local || null,
|
||||
arrival_date_local: requestJson.arrival_date_local || null
|
||||
};
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('⚠️ Не удалось получить данные из ноды "запрос рейса":', e.message);
|
||||
}
|
||||
|
||||
// Получаем данные из входных элементов (fallback)
|
||||
const inputItems = $input.all();
|
||||
inputItems.forEach(item => {
|
||||
if (item.json) {
|
||||
if (!requestData.flight_number && item.json.flight_number) {
|
||||
requestData.flight_number = item.json.flight_number;
|
||||
}
|
||||
if (!requestData.departure_date_local && item.json.departure_date_local) {
|
||||
requestData.departure_date_local = item.json.departure_date_local;
|
||||
}
|
||||
if (!requestData.arrival_date_local && item.json.arrival_date_local) {
|
||||
requestData.arrival_date_local = item.json.arrival_date_local;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Передаём данные дальше вместе с входными данными
|
||||
const outputItems = inputItems.map(item => ({
|
||||
...item,
|
||||
json: {
|
||||
...item.json,
|
||||
// Добавляем данные запроса
|
||||
request_flight_number: requestData.flight_number,
|
||||
request_departure_date: requestData.departure_date_local,
|
||||
request_arrival_date: requestData.arrival_date_local
|
||||
}
|
||||
}));
|
||||
|
||||
return outputItems.length > 0 ? outputItems : [{
|
||||
json: {
|
||||
request_flight_number: requestData.flight_number,
|
||||
request_departure_date: requestData.departure_date_local,
|
||||
request_arrival_date: requestData.arrival_date_local
|
||||
}
|
||||
}];
|
||||
Reference in New Issue
Block a user