4.7 KiB
4.7 KiB
Анализ поддержки медиа-контента в системе
Реальные ограничения из кода
1. Frontend (ChatInterface.vue)
Поддерживаемые форматы:
accept = '.txt,.pdf,.jpg,.jpeg,.png,.gif,.mp3,.wav,.mp4,.avi,.docx,.xlsx,.pptx,.odt,.ods,.odp,.zip,.rar,.7z'
Типы файлов:
- Текст: .txt
- PDF: .pdf
- Изображения: .jpg, .jpeg, .png, .gif
- Аудио: .mp3, .wav
- Видео: .mp4, .avi
- Документы: .docx, .xlsx, .pptx, .odt, .ods, .odp
- Архивы: .zip, .rar, .7z
2. Backend - Uploads (uploads.js)
Ограничения для изображений:
- Размер: 5MB максимум
- Форматы: только изображения (png, jpg, jpeg, gif, webp)
- Проверка: по расширению файла И MIME-типу
limits: { fileSize: 5 * 1024 * 1024 }, // 5MB
fileFilter: (req, file, cb) => {
const ok = /(png|jpg|jpeg|gif|webp)$/i.test(file.originalname || '') &&
/^image\//i.test(file.mimetype || '');
}
3. Backend - Email Bot (emailBot.js)
Ограничения для вложений:
- Размер: 10MB максимум
- Форматы: любые (без фильтрации)
- Обработка: автоматическое извлечение из email
const MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024; // 10MB
4. Backend - Telegram Bot (telegramBot.js)
Поддержка медиа:
- Документы: любые (через ctx.message.document)
- Фото: автоматически (ctx.message.photo)
- Аудио: любые (ctx.message.audio)
- Видео: любые (ctx.message.video)
- Размер: ограничения Telegram API (обычно до 50MB)
Извлекаемые данные:
// Документы
fileId = ctx.message.document.file_id;
fileName = ctx.message.document.file_name;
mimeType = ctx.message.document.mime_type;
fileSize = ctx.message.document.file_size;
// Фото (берется самое большое)
const photo = ctx.message.photo[ctx.message.photo.length - 1];
// Аудио
fileName = ctx.message.audio.file_name || 'audio.ogg';
mimeType = ctx.message.audio.mime_type || 'audio/ogg';
// Видео
fileName = ctx.message.video.file_name || 'video.mp4';
mimeType = ctx.message.video.mime_type || 'video/mp4';
Итоговые рекомендации для UniversalMediaProcessor
Поддерживаемые форматы (основано на реальном коде):
supportedAudioFormats: ['.mp3', '.wav'],
supportedVideoFormats: ['.mp4', '.avi'],
supportedImageFormats: ['.jpg', '.jpeg', '.png', '.gif'],
supportedDocumentFormats: ['.txt', '.pdf', '.docx', '.xlsx', '.pptx', '.odt', '.ods', '.odp'],
supportedArchiveFormats: ['.zip', '.rar', '.7z']
Ограничения размеров:
maxFileSize: 10 * 1024 * 1024, // 10MB (как в emailBot)
maxImageSize: 5 * 1024 * 1024, // 5MB (как в uploads.js)
Особенности по каналам:
-
Web (frontend):
- Множественный выбор файлов
- Предпросмотр перед отправкой
- Ограничения браузера (~2GB)
-
Telegram:
- Автоматическое определение типа медиа
- Поддержка всех типов файлов
- Ограничения Telegram API (до 50MB)
-
Email:
- Извлечение вложений из писем
- Фильтрация по размеру (10MB)
- Поддержка любых форматов
Выводы
- Система уже поддерживает большинство популярных форматов файлов
- Размеры файлов ограничены разумными пределами (5-10MB)
- Каждый канал имеет свои особенности обработки
- UniversalMediaProcessor должен учитывать эти ограничения
- Telegram имеет наибольшую гибкость, Web - наибольший контроль
Следующие шаги
- ✅ Создать UniversalMediaProcessor с реальными ограничениями
- ⏳ Интегрировать с существующими ботами
- ⏳ Добавить валидацию MIME-типов
- ⏳ Реализовать обработку ошибок для больших файлов
- ⏳ Добавить логирование обработки медиа