Commit Graph

13 Commits

Author SHA1 Message Date
AI Assistant
d2777aeabf 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
AI Assistant
720d4ebdd9 feat: Split-screen с Debug панелью в реальном времени!
Новый UI:
 Split-screen layout:
   - Слева (60%): форма заявки
   - Справа (40%): Debug Console в реальном времени

Компонент DebugPanel.tsx:
 Темная тема (VS Code style)
 Timeline с событиями
 Real-time обновления
 Показывает:
   - Form Data (JSON в реальном времени)
   - Events Log с иконками и цветами
   - Детали каждого события

События которые отображаются:
1. policy_check:
   -  Полис найден в MySQL БД
   - ⚠️ Полис не найден
   - Показывает: voucher, found status

2. upload:
   - 📤 Загружаю X файлов в S3
   -  Загружено в S3: X/Y
   - Показывает: file_id, size, S3 URL

3. ocr:
   - 🔍 Запущен OCR
   - 📄 OCR завершен: XXX символов
   - Показывает: текст preview

4. ai_analysis:
   - 🤖 AI: policy/garbage, confidence: 95%
   - 🗑️ ШЛЯПА DETECTED! (пользователю не говорим)
   - Показывает: document_type, is_valid, confidence, extracted_data

5. sms:
   - 📱 Отправляю SMS
   -  SMS отправлен (DEBUG mode)
   - 🔐 Проверяю код
   -  Телефон подтвержден
   - Показывает: phone, debug_code

UX:
- Sticky panel (прилипает при скролле)
- Monospace шрифт для данных
- Цветовая кодировка статусов
- JSON форматирование

Layout:
- Row + Col от Ant Design
- Responsive: mobile = 1 column, desktop = split

Теперь видно ВСЁ что происходит в реальном времени! 🔍
2025-10-24 22:13:52 +03:00
AI Assistant
20bad53008 feat: OCR в фоне + AI проверка полиса + debug логи
Новый сервис ocr_service.py:
 OCR распознавание через http://147.45.146.17:8001
 AI анализ через Gemini Vision (OpenRouter)
 Проверка: полис или шляпа
 Извлечение данных полиса автоматически

Логика обработки:
1. Файл загружается в S3
2. OCR запускается в фоне (RabbitMQ queue)
3. Gemini Vision анализирует текст:
   - document_type: policy/passport/ticket/garbage
   - is_valid_policy: true/false
   - confidence: 0.0-1.0
   - extracted_data: voucher, holder_name, dates
4. Результат сохраняется в Redis (1 час TTL)

Debug логи (в backend):
📤 OCR task queued: file_id - filename
💾 OCR result cached in Redis
📊 Document type: policy/garbage/other
 Valid: true/false, Confidence: 0.95
🗑️ GARBAGE uploaded: если не полис (silent)

Новый endpoint:
GET /api/v1/upload/ocr-result/{file_id}
- Получить результат OCR из Redis
- Можно запрашивать когда угодно

Где смотреть логи:
tail -f /var/www/fastuser/data/www/crm.clientright.ru/erv_platform_backend.log

Результаты хранятся в Redis:
key: ocr_result:{file_id}
ttl: 3600 сек (1 час)
2025-10-24 21:58:34 +03:00
AI Assistant
621c8ebf01 feat: 5 улучшений безопасности и UX
1.  Прогресс бар загрузки:
   - Upload компонент с showUploadList
   - Кнопка показывает состояние 'Загрузка...'
   - Визуальный прогресс для каждого файла

2.  OCR проверка полиса (заготовка):
   - TODO: проверка что загружен полис, а не шляпа
   - Если шляпа - помечаем себе в policyValidationWarning
   - Пользователю не говорим (silent validation)

3.  Лимиты файлов:
   - Максимум 10 файлов
   - Каждый файл до 15MB
   - Валидация на фронте и бэкенде
   - Счетчик: 'Загружено: X/10 файлов'
   - Кнопка disabled при 10 файлах

4.  Защита от инъекций и безопасность:
   Backend (upload.py):
   - Лимит файлов: if len(files) > 10
   - Проверка размера: if len(content) > MAX_FILE_SIZE
   - Валидация типа: allowed_types = ['image/', 'application/pdf']
   - Санитизация folder: allowed_folders whitelist

   Backend (draft.py):
   - Валидация session_id (max 255 chars)
   - Валидация step: only [1, 2, 3]
   - Параметризованные SQL запросы (защита от SQL injection)

   Frontend:
   - beforeUpload валидация размера
   - maxCount={10}
   - accept только разрешенные форматы

5.  Кнопка 'Начать заново':
   - Показывается на шаге 2 и 3 (extra в Card)
   - Сбрасывает всю форму
   - Возвращает на шаг 1
   - Очищает isPhoneVerified

Безопасность:
- SQL инъекции: параметризованные запросы ($1, $2)
- XSS: Pydantic валидация всех inputs
- File upload: type + size validation
- Path traversal: folder whitelist
- Rate limiting: TODO (Redis)

UX:
- Прогресс загрузки виден
- Понятные лимиты (10 файлов по 15MB)
- Возможность начать заново в любой момент
2025-10-24 21:34:50 +03:00
AI Assistant
e34f7a598b feat: 6 улучшений формы - S3 upload, draft, HEIC, email на step3
1.  Placeholder с тире E1000-302538524
   - Теперь в placeholder тоже тире

2.  Email перенесен на Step3
   - Убран с Step1 (проверка полиса)
   - Добавлен на Step3 (вместе с телефоном)
   - Теперь телефон + email + выплата на одном шаге

3.  HEIC формат + мультилоад
   - Добавлена поддержка .heic, .heif (iPhone формат)
   - Убран maxCount - неограниченная загрузка
   - Параметр multiple для множественной загрузки

4.  S3 Upload
   - Создан s3_service.py для работы с Timeweb S3
   - Новый endpoint: POST /api/v1/upload/files
   - Поддержка мультизагрузки файлов
   - Автоматическая генерация уникальных имен
   - Файлы грузятся в S3, не локально

5.  Draft автосохранение
   - Создана таблица claims_draft в PostgreSQL
   - Новый API: POST /api/v1/draft/save
   - GET /api/v1/draft/stats - статистика по шагам
   - GET /api/v1/draft/list - список последних драфтов
   - Для аналитики: где люди бросают заполнение

6.  Миграция БД
   - 002_create_claims_draft.sql применена
   - Индексы для быстрого поиска
   - JSONB поле для гибкости данных

Backend:
- s3_service.py - сервис для S3
- draft.py - API автосохранения
- upload.py - обновлен endpoint для S3
- main.py - добавлены роуты и подключения

Frontend:
- Step1Policy: убран email, добавлен HEIC
- Step3Payment: добавлен email после телефона

Статус:  Backend подключен к S3, таблица создана, всё работает
2025-10-24 21:24:00 +03:00
AI Assistant
f2cfa54c9d feat: Улучшена форма полиса - маска ввода и загрузка скана
Изменения в UX (Step1Policy):
 Автоматическая маска ввода E1000-302538524
   - Тире вставляется автоматически
   - Не нужно вводить вручную

 Расширенная автозамена кириллицы:
   - А→A, а→A, С→C, с→C, Е→E, е→E и т.д.
   - Поддержка строчных и заглавных

 Автоматический uppercase
   - Все буквы автоматически заглавные

 Логика при ненайденном полисе:
   - НЕ переходит на следующий шаг
   - Показывает поле загрузки скана прямо на месте
   - Кнопка "Продолжить со сканом"
   - Поддержка изображений и PDF

 Обработка paste:
   - Корректная обработка вставки текста
   - Применяются все правила форматирования

Backend (policy.py):
 Убран вывод holder_name (для продакшна)
   - API не возвращает персональные данные
   - Только found: true/false

Формат полиса:
Ввод: k78486489849494 или К7848-6489849494
Результат: K7848-648984949
2025-10-24 21:12:30 +03:00
AI Assistant
3b08916c22 fix: Исправлены MySQL креды - подключение к локальной БД
Проблема: Backend пытался подключиться к удаленной БД turistpr_erv
Решение: Обновлены креды на локальную БД ci20465_erv

Изменения:
- MySQL Host: localhost (было: 141.8.194.131)
- MySQL DB: ci20465_erv (было: turistpr_erv)
- MySQL User: ci20465_erv (было: root)
- MySQL Password: c7vOXbmG (было: пустой)
- MySQL Table: lexrpiority (было: erv_vouchers в коде)

Результат:
 MySQL Policy DB подключена успешно
 API /api/v1/policy/check работает
 Валидация полисов работает (33963 полисов в БД)

Тестирование:
- E1000-302372730 → found: true 
- E9999-999999999 → found: false 
2025-10-24 21:02:20 +03:00
AI Assistant
4c844d00a5 feat: Обновлена форма проверки полиса + автозамена кириллицы
Изменения в форме (Шаг 1):
- Полис в одну строку: E1000-302538524 (было: отдельно серия и номер)
- Email теперь обязателен (было: опционально)
- Убран ИНН (было: опционально)
- Автозамена кириллицы на латиницу (Е→E, О→O и т.д.)
- Валидация формата: буква + 4 цифры + тире + 9 цифр

Изменения в Backend API:
- PolicyCheckRequest: voucher + email (убран inn)
- policy_service: упрощен запрос к MySQL
- Добавлено подключение MySQL в lifespan

Изменения в ClaimForm:
- FormData обновлен: voucher вместо policyNumber/policySeries
- Убрано поле inn из всей логики

Статус: Frontend работает, MySQL требует настройки доступа
2025-10-24 20:54:57 +03:00
AI Assistant
30bbf2cf2c docs: Обновлен SESSION_LOG с информацией о рефакторинге формы 2025-10-24 20:41:32 +03:00
AI Assistant
cfd84e0f9d refactor: Изменен порядок формы - проверка полиса на первом шаге
Изменения в UX:
- Шаг 1: Проверка полиса (было: телефон + SMS)
- Шаг 2: Детали происшествия (без изменений)
- Шаг 3: Телефон + SMS + Выплата (было: только выплата)

Обновленные компоненты:
- Удален: Step1Phone.tsx
- Создан: Step1Policy.tsx - проверка полиса через API
- Обновлен: Step3Payment.tsx - добавлена SMS верификация
- Обновлен: ClaimForm.tsx - новая структура шагов

Логика: сначала проверяем полис, потом детали, в конце верификация телефона и выплата
2025-10-24 20:40:44 +03:00
AI Assistant
8b0bd156bb fix: Перезапуск платформы - исправлены зависимости и TypeScript ошибки
- Исправлены TypeScript ошибки в Step3Payment.tsx (типизация, неиспользуемые импорты)
- Добавлены недостающие зависимости: aiomysql, pymysql, python-multipart
- Обновлен requirements.txt с актуальными версиями
- Добавлены новые API endpoints: policy check, file upload
- Добавлен policy_service для работы с MySQL
- Все сервисы успешно запущены и работают
- Обновлен SESSION_LOG с документацией процесса
2025-10-24 20:27:10 +03:00
AI Assistant
0f82eef08d 🚀 MVP: FastAPI + React форма с SMS верификацией
 Инфраструктура: PostgreSQL, Redis, RabbitMQ, S3
 Backend: SMS сервис + API endpoints
 Frontend: React форма (3 шага) + SMS верификация
2025-10-24 16:19:58 +03:00
AI Assistant
8af23e90fa Initial commit: ERV Platform MVP - FastAPI + React 2025-10-24 12:02:17 +03:00