news
This commit is contained in:
+197
@@ -0,0 +1,197 @@
|
||||
# Архитектура новостного интерфейса
|
||||
|
||||
## Схема компонентов
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 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** - логи и ошибки
|
||||
Reference in New Issue
Block a user