# Архитектура новостного интерфейса ## Схема компонентов ``` ┌─────────────────────────────────────────────────────────────────┐ │ Vue.js Frontend │ ├─────────────────────────────────────────────────────────────────┤ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ NewsList │ │ NewsDashboard │ │ NewsAdmin │ │ │ │ (Лента) │ │ (Статистика) │ │ (Управление) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ NewsFilters │ │ NewsDetail │ │ NewsService │ │ │ │ (Фильтры) │ │ (Детали) │ │ (API слой) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ News Parser API │ ├─────────────────────────────────────────────────────────────────┤ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ GET /items │ │ GET /stats │ │ GET /health │ │ │ │ (Новости) │ │ (Статистика) │ │ (Статус) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ POST /parse/all │ │POST /parse/{id} │ │GET /health/mongo│ │ │ │ (Парсинг всех) │ │ (Парсинг по ID) │ │ (Статус БД) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ MongoDB Database │ ├─────────────────────────────────────────────────────────────────┤ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ News Items │ │ Statistics │ │ Health Logs │ │ │ │ (Новости) │ │ (Статистика) │ │ (Логи) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## Поток данных ### 1. Загрузка новостей ``` User → NewsList → NewsService → API → MongoDB ← NewsFilters ← ``` ### 2. Фильтрация ``` User → NewsFilters → NewsList → NewsService → API (с параметрами) ``` ### 3. Статистика ``` User → NewsDashboard → NewsService → API → MongoDB ``` ### 4. Управление парсером ``` User → NewsAdmin → NewsService → API → Parser Service → MongoDB ``` ## Структура данных ### NewsItem ```javascript { id: string, sourceName: string, title: string, url: string, publishedAt: string, addedAt: string, rawText: string, hash: string, category: string, analytics: { summary: string, sentiment: string, tags: string[], entities: object } } ``` ### API Response ```javascript { success: boolean, message: string, data: { content: NewsItem[], pageable: object, totalElements: number, totalPages: number, last: boolean, first: boolean, numberOfElements: number } } ``` ## Технологический стек ### Frontend - **Vue 3** - основной фреймворк - **PrimeVue** - UI компоненты - **Tailwind CSS** - стилизация - **Chart.js** - графики и диаграммы - **Vue Router** - маршрутизация ### Backend API - **REST API** - HTTP эндпоинты - **JSON** - формат данных - **MongoDB** - база данных ### Инструменты разработки - **Vite** - сборщик - **ESLint** - линтер - **Prettier** - форматирование ## Принципы архитектуры ### 1. Разделение ответственности - **Компоненты** - только UI логика - **Сервисы** - работа с API - **Конфигурация** - настройки ### 2. Переиспользование - **NewsService** - единая точка доступа к API - **NewsFilters** - переиспользуемый компонент - **Конфигурация** - централизованные настройки ### 3. Производительность - **Ленивая загрузка** - компоненты загружаются по требованию - **Кэширование** - данные статистики кэшируются - **Оптимизация** - минимальные API запросы ### 4. Масштабируемость - **Модульная структура** - легко добавлять новые функции - **Конфигурируемость** - настройки через переменные окружения - **Расширяемость** - простое добавление новых источников ## Безопасность ### 1. Валидация данных - **Проверка ответов API** - всегда проверяется поле `success` - **Обработка ошибок** - graceful degradation - **Санитизация** - очистка пользовательского ввода ### 2. Аутентификация - **Требуется авторизация** - все маршруты защищены - **Роли пользователей** - админ функции только для админов ### 3. CORS - **Настройка CORS** - на уровне API сервера - **Безопасные запросы** - только к настроенному API ## Мониторинг и отладка ### 1. Логирование - **Консольные логи** - для разработки - **Обработка ошибок** - централизованная система ### 2. Метрики - **Статистика загрузки** - количество запросов - **Время отклика** - производительность API - **Статус системы** - мониторинг здоровья ### 3. Отладка - **DevTools** - инструменты разработчика - **Network tab** - мониторинг запросов - **Console** - логи и ошибки