Files
marketing/ARCHITECTURE.md
2025-09-15 09:31:51 +05:00

198 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Архитектура новостного интерфейса
## Схема компонентов
```
┌─────────────────────────────────────────────────────────────────┐
│ 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** - логи и ошибки