Files
aiform_dev/frontend/src/components/form/Step2Details.tsx

464 lines
17 KiB
TypeScript
Raw Normal View History

feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
import { Form, Button, Select, Upload, message, Spin, Alert, Card } from 'antd';
import { UploadOutlined, LoadingOutlined, CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons';
import { useState, useEffect, useRef } from 'react';
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
import type { UploadFile } from 'antd/es/upload/interface';
import dayjs from 'dayjs';
const { Option } = Select;
interface Props {
formData: any;
updateFormData: (data: any) => void;
onNext: () => void;
onPrev: () => void;
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
addDebugEvent?: (type: string, status: string, message: string, data?: any) => void;
}
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
// Типы страховых случаев
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
const EVENT_TYPES = [
{ value: 'delay_flight', label: 'Задержка авиарейса (более 3 часов)' },
{ value: 'cancel_flight', label: 'Отмена авиарейса' },
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
{ value: 'miss_connection', label: 'Пропуск (задержка прибытия) стыковочного рейса' },
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
{ value: 'emergency_landing', label: 'Посадка воздушного судна на запасной аэродром' },
{ value: 'delay_train', label: 'Задержка отправки поезда' },
{ value: 'cancel_train', label: 'Отмена поезда' },
{ value: 'delay_ferry', label: 'Задержка/отмена отправки парома/круизного судна' },
];
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
// Конфигурация документов для каждого типа события с уникальными file_type
const DOCUMENT_CONFIGS: Record<string, any[]> = {
delay_flight: [
{
name: "Посадочный талон или Билет",
field: "boarding_or_ticket",
file_type: "flight_delay_boarding_or_ticket",
required: true,
maxFiles: 1,
description: "Boarding pass или ticket/booking confirmation"
},
{
name: "Подтверждение задержки",
field: "delay_confirmation",
file_type: "flight_delay_confirmation",
required: true,
maxFiles: 3,
description: "Справка от АК, email/SMS, или фото табло"
}
],
cancel_flight: [
{
name: "Билет",
field: "ticket",
file_type: "flight_cancel_ticket",
required: true,
maxFiles: 1,
description: "Ticket/booking confirmation"
},
{
name: "Уведомление об отмене",
field: "cancellation_notice",
file_type: "flight_cancel_notice",
required: true,
maxFiles: 3,
description: "Email, SMS или скриншот из приложения АК"
}
],
miss_connection: [
{
name: "Посадочный талон рейса ПРИБЫТИЯ",
field: "arrival_boarding",
file_type: "connection_arrival_boarding",
required: true,
maxFiles: 1,
description: "Boarding pass рейса, который задержался"
},
{
name: "Посадочный талон ИЛИ Билет рейса ОТПРАВЛЕНИЯ",
field: "departure_boarding_or_ticket",
file_type: "connection_departure_boarding_or_ticket",
required: true,
maxFiles: 1,
description: "Boarding pass (если успели) ИЛИ билет (если не успели)"
},
{
name: "Доказательство задержки (опционально)",
field: "delay_proof",
file_type: "connection_delay_proof",
required: false,
maxFiles: 5,
description: "Справка, фото табло, email/SMS"
}
],
delay_train: [
{
name: "Билет на поезд",
field: "train_ticket",
file_type: "train_ticket",
required: true,
maxFiles: 1,
description: "Билет РЖД или другого перевозчика"
},
{
name: "Подтверждение задержки",
field: "delay_proof",
file_type: "train_delay_proof",
required: true,
maxFiles: 3,
description: "Справка от РЖД, фото табло, скриншот приложения"
}
],
cancel_train: [
{
name: "Билет на поезд",
field: "train_ticket",
file_type: "train_ticket",
required: true,
maxFiles: 1,
description: "Билет РЖД или другого перевозчика"
},
{
name: "Подтверждение отмены",
field: "cancel_proof",
file_type: "train_cancel_proof",
required: true,
maxFiles: 3,
description: "Справка от РЖД, фото табло, скриншот приложения"
}
],
delay_ferry: [
{
name: "Билет на паром/круиз",
field: "ferry_ticket",
file_type: "ferry_ticket",
required: true,
maxFiles: 1,
description: "Билет или booking confirmation"
},
{
name: "Подтверждение задержки/отмены",
field: "delay_proof",
file_type: "ferry_delay_proof",
required: true,
maxFiles: 3,
description: "Справка от перевозчика, фото расписания, email/SMS"
}
],
emergency_landing: [
{
name: "Посадочный талон или Билет",
field: "boarding_or_ticket",
file_type: "emergency_boarding_or_ticket",
required: true,
maxFiles: 1,
description: "Boarding pass или ticket"
},
{
name: "Подтверждение посадки на запасной аэродром",
field: "emergency_proof",
file_type: "emergency_landing_proof",
required: true,
maxFiles: 3,
description: "Справка от АК, email/SMS, документы"
}
]
};
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
export default function Step2Details({ formData, updateFormData, onNext, onPrev, addDebugEvent }: Props) {
const [form] = Form.useForm();
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
const [eventType, setEventType] = useState(formData.eventType || '');
const [documentFiles, setDocumentFiles] = useState<Record<string, UploadFile[]>>({});
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
const [uploading, setUploading] = useState(false);
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
const [uploadProgress, setUploadProgress] = useState('');
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
const [waitingForOcr, setWaitingForOcr] = useState(false);
const [ocrResults, setOcrResults] = useState<any>(null);
const eventSourceRef = useRef<EventSource | null>(null);
const handleEventTypeChange = (value: string) => {
setEventType(value);
setDocumentFiles({}); // Очищаем загруженные файлы при смене типа
form.setFieldValue('eventType', value);
};
// Получаем конфигурацию документов для выбранного типа события
const currentDocuments = eventType ? DOCUMENT_CONFIGS[eventType] || [] : [];
const handleUploadChange = (field: string, { fileList: newFileList }: any) => {
setDocumentFiles(prev => ({
...prev,
[field]: newFileList
}));
};
const handleNext = async () => {
try {
const values = await form.validateFields();
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
// Проверяем что все обязательные документы загружены
const missingDocs = currentDocuments.filter(doc =>
doc.required && (!documentFiles[doc.field] || documentFiles[doc.field].length === 0)
);
if (missingDocs.length > 0) {
message.error(`Загрузите обязательные документы: ${missingDocs.map(d => d.name).join(', ')}`);
return;
}
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
// Загружаем все документы в S3 через n8n
setUploading(true);
setUploadProgress('📤 Загружаем документы...');
const claimId = formData.claim_id;
const uploadedFiles: any[] = [];
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
for (const docConfig of currentDocuments) {
const files = documentFiles[docConfig.field] || [];
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
for (let i = 0; i < files.length; i++) {
const file = files[i];
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
if (!file.originFileObj) continue;
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
setUploadProgress(`📡 Загружаем: ${docConfig.name} (${i + 1}/${files.length})...`);
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
const uploadFormData = new FormData();
uploadFormData.append('claim_id', claimId);
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
uploadFormData.append('file_type', docConfig.file_type); // 🔑 Уникальный file_type для n8n
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
uploadFormData.append('filename', file.name);
uploadFormData.append('voucher', formData.voucher || '');
uploadFormData.append('session_id', sessionStorage.getItem('session_id') || 'unknown');
uploadFormData.append('upload_timestamp', new Date().toISOString());
uploadFormData.append('file', file.originFileObj);
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
addDebugEvent?.('upload', 'pending', `📤 Загружаю документ: ${docConfig.name} (${docConfig.file_type})`, {
file_type: docConfig.file_type,
filename: file.name
});
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
const uploadResponse = await fetch('https://n8n.clientright.pro/webhook/7e2abc64-eaca-4671-86e4-12786700fe95', {
method: 'POST',
body: uploadFormData,
});
const uploadResult = await uploadResponse.json();
const resultData = Array.isArray(uploadResult) ? uploadResult[0] : uploadResult;
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
if (resultData?.success) {
uploadedFiles.push({
filename: file.name,
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
file_type: docConfig.file_type,
field: docConfig.field,
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
success: true
});
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
addDebugEvent?.('upload', 'success', `✅ Документ загружен: ${docConfig.name}`, {
file_type: docConfig.file_type,
filename: file.name
});
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
}
}
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
}
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
if (uploadedFiles.length > 0) {
setUploadProgress('🤖 AI анализирует документы...');
updateFormData({
...values,
uploadedDocuments: uploadedFiles
});
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
// TODO: Здесь будет ожидание SSE события с результатами OCR/AI
// Пока просто переходим дальше
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
setUploadProgress('');
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
setUploading(false);
message.success(`Загружено документов: ${uploadedFiles.length}. Переходим дальше...`);
onNext();
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
} else {
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
message.error('Не удалось загрузить документы');
setUploading(false);
setUploadProgress('');
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
}
} catch (error) {
message.error('Заполните все обязательные поля');
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
setUploading(false);
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
setUploadProgress('');
}
};
return (
<Form
form={form}
layout="vertical"
initialValues={formData}
style={{ marginTop: 24 }}
>
<Form.Item
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
label="Выберите тип события"
name="eventType"
rules={[{ required: true, message: 'Выберите тип события' }]}
>
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
<Select
placeholder="Выберите тип события"
size="large"
fix: 3 критических исправления - OCR прогресс, условные поля, убран некорректный статус 1. ✅ OCR Progress Bar: - Добавлен polling OCR результатов каждые 3 сек - Визуальный индикатор: 🔍 Обработка OCR... (1/10) - Progress bar с анимацией - Статусы: 🔄 Запуск → 🔍 Обработка → ✅ Завершен - Gemini Vision результаты в Debug панели 2. ✅ Убран некорректный 'Полис найден': - Было: показывался сразу после загрузки файла - Проблема: OCR еще не закончился, может быть шляпа - Решение: убрана зеленая плашка с Step2 - Статус полиса только после реальной проверки 3. ✅ Условные поля для стыковочного рейса: - Если выбран 'miss_connection' → показываются 4 доп поля: • Номер рейса прибытия • Дата рейса прибытия • Номер рейса отправления • Дата рейса отправления - Если выбран 'cancel_flight' → доп поле: • Подтверждение отмены от АК - Для обычных рейсов: только номер рейса Frontend изменения: - Step1Policy: OCR polling, progress bar - Step2Details: условная логика полей (как в erv_ticket) - useState для eventType - handleEventTypeChange для динамики Теперь: ✅ Видно прогресс OCR ✅ Видно результаты Gemini Vision ✅ Условные поля работают ✅ Нет ложных статусов
2025-10-25 10:12:41 +03:00
onChange={handleEventTypeChange}
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
>
{EVENT_TYPES.map(type => (
<Option key={type.value} value={type.value}>
{type.label}
</Option>
))}
</Select>
</Form.Item>
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
{/* Показываем документы только после выбора типа события */}
{eventType && currentDocuments.length > 0 && (
<Card
title="📋 Загрузите документы для обработки"
style={{ marginTop: 24 }}
headStyle={{ background: '#f0f9ff', borderBottom: '2px solid #91d5ff' }}
fix: 3 критических исправления - OCR прогресс, условные поля, убран некорректный статус 1. ✅ OCR Progress Bar: - Добавлен polling OCR результатов каждые 3 сек - Визуальный индикатор: 🔍 Обработка OCR... (1/10) - Progress bar с анимацией - Статусы: 🔄 Запуск → 🔍 Обработка → ✅ Завершен - Gemini Vision результаты в Debug панели 2. ✅ Убран некорректный 'Полис найден': - Было: показывался сразу после загрузки файла - Проблема: OCR еще не закончился, может быть шляпа - Решение: убрана зеленая плашка с Step2 - Статус полиса только после реальной проверки 3. ✅ Условные поля для стыковочного рейса: - Если выбран 'miss_connection' → показываются 4 доп поля: • Номер рейса прибытия • Дата рейса прибытия • Номер рейса отправления • Дата рейса отправления - Если выбран 'cancel_flight' → доп поле: • Подтверждение отмены от АК - Для обычных рейсов: только номер рейса Frontend изменения: - Step1Policy: OCR polling, progress bar - Step2Details: условная логика полей (как в erv_ticket) - useState для eventType - handleEventTypeChange для динамики Теперь: ✅ Видно прогресс OCR ✅ Видно результаты Gemini Vision ✅ Условные поля работают ✅ Нет ложных статусов
2025-10-25 10:12:41 +03:00
>
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
<div style={{ marginBottom: 16, padding: 12, background: '#e6f7ff', borderRadius: 8 }}>
<p style={{ margin: 0, fontSize: 13, color: '#0050b3' }}>
💡 Просто загрузите документы наш AI автоматически распознает все данные
(номера рейсов, даты, время, причины задержек)
</p>
</div>
fix: 3 критических исправления - OCR прогресс, условные поля, убран некорректный статус 1. ✅ OCR Progress Bar: - Добавлен polling OCR результатов каждые 3 сек - Визуальный индикатор: 🔍 Обработка OCR... (1/10) - Progress bar с анимацией - Статусы: 🔄 Запуск → 🔍 Обработка → ✅ Завершен - Gemini Vision результаты в Debug панели 2. ✅ Убран некорректный 'Полис найден': - Было: показывался сразу после загрузки файла - Проблема: OCR еще не закончился, может быть шляпа - Решение: убрана зеленая плашка с Step2 - Статус полиса только после реальной проверки 3. ✅ Условные поля для стыковочного рейса: - Если выбран 'miss_connection' → показываются 4 доп поля: • Номер рейса прибытия • Дата рейса прибытия • Номер рейса отправления • Дата рейса отправления - Если выбран 'cancel_flight' → доп поле: • Подтверждение отмены от АК - Для обычных рейсов: только номер рейса Frontend изменения: - Step1Policy: OCR polling, progress bar - Step2Details: условная логика полей (как в erv_ticket) - useState для eventType - handleEventTypeChange для динамики Теперь: ✅ Видно прогресс OCR ✅ Видно результаты Gemini Vision ✅ Условные поля работают ✅ Нет ложных статусов
2025-10-25 10:12:41 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
{currentDocuments.map((doc, index) => (
<div key={doc.field} style={{ marginBottom: 24 }}>
<div style={{ marginBottom: 8 }}>
<span style={{ fontSize: 15, fontWeight: 500 }}>
{doc.required ? '✅' : ''} {doc.name}
{doc.required && <span style={{ color: '#ff4d4f', marginLeft: 4 }}>*</span>}
</span>
</div>
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
<div style={{ marginBottom: 8, fontSize: 12, color: '#666' }}>
💡 {doc.description}
</div>
<Upload
listType="picture"
fileList={documentFiles[doc.field] || []}
onChange={(info) => handleUploadChange(doc.field, info)}
beforeUpload={(file) => {
const isLt15M = file.size / 1024 / 1024 < 15;
if (!isLt15M) {
message.error(`${file.name}: файл больше 15MB`);
return Upload.LIST_IGNORE;
}
const currentFiles = documentFiles[doc.field] || [];
if (currentFiles.length >= doc.maxFiles) {
message.error(`Максимум ${doc.maxFiles} файл(ов) для этого документа`);
return Upload.LIST_IGNORE;
}
const validTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'application/pdf'];
const validExtensions = /\.(jpg|jpeg|png|pdf|heic|heif|webp)$/i;
if (!validTypes.includes(file.type) && !validExtensions.test(file.name)) {
message.error(`${file.name}: неподдерживаемый формат`);
return Upload.LIST_IGNORE;
}
return false;
}}
accept="image/*,.pdf,.heic,.heif,.webp"
multiple={doc.maxFiles > 1}
maxCount={doc.maxFiles}
showUploadList={{
showPreviewIcon: true,
showRemoveIcon: true,
}}
>
<Button
icon={<UploadOutlined />}
size="large"
block
disabled={(documentFiles[doc.field] || []).length >= doc.maxFiles}
>
Загрузить файл{doc.maxFiles > 1 ? 'ы' : ''} (до {doc.maxFiles} шт, макс 15MB)
</Button>
</Upload>
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
feat: Умная форма Step2 с автоматическим распознаванием документов 🤖 Переход на OCR/AI для извлечения данных из документов: ✅ Изменения: - Убран ручной ввод полей (дата, номер рейса и тд) - Добавлена умная загрузка документов в зависимости от типа события - Каждый тип документа получает уникальный file_type для n8n - Валидация обязательных документов перед переходом 📋 Типы документов и их file_type: 1. Задержка рейса: - flight_delay_boarding_or_ticket (обяз) - flight_delay_confirmation (обяз) 2. Отмена рейса: - flight_cancel_ticket (обяз) - flight_cancel_notice (обяз) 3. Пропуск стыковки: - connection_arrival_boarding (обяз) - connection_departure_boarding_or_ticket (обяз) - connection_delay_proof (опц) 4. Поезд (задержка): - train_ticket (обяз) - train_delay_proof (обяз) 5. Поезд (отмена): - train_ticket (обяз) - train_cancel_proof (обяз) 6. Паром: - ferry_ticket (обяз) - ferry_delay_proof (обяз) 7. Запасной аэродром: - emergency_boarding_or_ticket (обяз) - emergency_landing_proof (обяз) 🔑 file_type позволяет n8n разделять потоки и применять разные AI промпты для каждого типа документа. Backup старой версии: Step2Details.OLD_MANUAL_INPUT.tsx
2025-10-28 12:03:12 +03:00
<div style={{ marginTop: 8, fontSize: 12, color: '#999' }}>
Загружено: {(documentFiles[doc.field] || []).length}/{doc.maxFiles} файл(ов)
</div>
</div>
))}
</Card>
fix: 3 критических исправления - OCR прогресс, условные поля, убран некорректный статус 1. ✅ OCR Progress Bar: - Добавлен polling OCR результатов каждые 3 сек - Визуальный индикатор: 🔍 Обработка OCR... (1/10) - Progress bar с анимацией - Статусы: 🔄 Запуск → 🔍 Обработка → ✅ Завершен - Gemini Vision результаты в Debug панели 2. ✅ Убран некорректный 'Полис найден': - Было: показывался сразу после загрузки файла - Проблема: OCR еще не закончился, может быть шляпа - Решение: убрана зеленая плашка с Step2 - Статус полиса только после реальной проверки 3. ✅ Условные поля для стыковочного рейса: - Если выбран 'miss_connection' → показываются 4 доп поля: • Номер рейса прибытия • Дата рейса прибытия • Номер рейса отправления • Дата рейса отправления - Если выбран 'cancel_flight' → доп поле: • Подтверждение отмены от АК - Для обычных рейсов: только номер рейса Frontend изменения: - Step1Policy: OCR polling, progress bar - Step2Details: условная логика полей (как в erv_ticket) - useState для eventType - handleEventTypeChange для динамики Теперь: ✅ Видно прогресс OCR ✅ Видно результаты Gemini Vision ✅ Условные поля работают ✅ Нет ложных статусов
2025-10-25 10:12:41 +03:00
)}
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
{/* Прогресс обработки */}
{uploading && uploadProgress && (
<Alert
message={uploadProgress}
type="info"
showIcon
icon={<Spin indicator={<LoadingOutlined style={{ fontSize: 16 }} spin />} />}
style={{ marginBottom: 16, marginTop: 16 }}
/>
)}
<Form.Item>
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
<div style={{ display: 'flex', gap: 8, marginTop: 32 }}>
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
<Button onClick={onPrev} size="large" disabled={uploading}>Назад</Button>
feat: Step2 переделан + улучшен Debug Panel с полными S3 URL Step2Details (по скриншоту): ✅ Индикатор '✅ Полис найден' вверху ✅ Select с типами событий из erv_ticket: - Задержка авиарейса (более 3 часов) - Отмена авиарейса - Пропуск стыковочного рейса - Посадка на запасной аэродром - Задержка отправки поезда - Отмена поезда - Задержка/отмена парома/круизного судна ✅ Дата наступления страхового случая (DatePicker) ✅ Номер рейса/поезда/парома ✅ Загрузка подтверждающих документов: - Посадочный талон, билет, справка и т.д. - До 10 файлов по 15MB - HEIC, PDF, фото Debug Panel улучшения: ✅ Полные S3 URL (не обрезанные) ✅ Кнопка '🔗 Открыть в новой вкладке' ✅ word-break: break-all для длинных URL ✅ Показывает все файлы из массива ✅ Для каждого файла: - Filename - File ID (UUID) - Size (KB) - Полный S3 URL (кликабельный) Теперь в Debug видно КУДА загрузилось: https://s3.twcstorage.ru/f9825c87-.../policies/20251024_213045_abc123_file.jpg Можно кликнуть и посмотреть глазами! 👀
2025-10-25 09:27:56 +03:00
<Button
type="primary"
onClick={handleNext}
loading={uploading}
style={{ flex: 1 }}
size="large"
>
feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
{uploading ? 'Обрабатываем...' : 'Далее'}
</Button>
</div>
</Form.Item>
{/* 🔧 Технические кнопки для разработки */}
<div style={{
marginTop: 24,
padding: 16,
background: '#f0f0f0',
borderRadius: 8,
border: '2px dashed #999'
}}>
<div style={{ marginBottom: 8, fontSize: 12, color: '#666', fontWeight: 'bold' }}>
🔧 DEV MODE - Быстрая навигация (без валидации)
</div>
<div style={{ display: 'flex', gap: 8 }}>
<Button
onClick={onPrev}
size="small"
disabled={uploading}
>
Назад (Step 1)
</Button>
<Button
type="dashed"
onClick={() => {
// Пропускаем валидацию, заполняем минимальные данные
const devData = {
eventType: 'delay_flight',
};
updateFormData(devData);
onNext();
}}
size="small"
style={{ flex: 1 }}
>
Далее (Step 3) [пропустить]
</Button>
</div>
</div>
</Form>
);
}