Files
telepost/architecture.md
T

157 lines
7.7 KiB
Markdown

# Архитектура приложения TelePost Clone
## 1. Общая архитектура системы
```
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Frontend │◄──►│ Backend │◄──►│ External APIs │
│ (SvelteKit) │ │ (FastAPI) │ │ (Telegram, MAX) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
┌──────────────────┐
│ PostgreSQL │
│ │
│ Redis (queue) │
└──────────────────┘
```
## 2. Структура проекта
```
telepost-clone/
├── backend/ # FastAPI приложение
│ ├── app/
│ │ ├── api/ # API маршруты
│ │ ├── models/ # ORM модели
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # Бизнес-логика
│ │ ├── database/ # Настройки базы данных
│ │ ├── auth/ # Аутентификация
│ │ ├── integrations/ # Интеграции с внешними сервисами
│ │ └── utils/ # Утилиты
│ ├── migrations/ # Миграции базы данных
│ ├── tests/ # Тесты
│ └── requirements.txt # Зависимости
├── frontend/ # SvelteKit приложение
│ ├── src/
│ │ ├── routes/ # Страницы
│ │ ├── components/ # Компоненты
│ │ ├── lib/ # Библиотеки
│ │ ├── stores/ # Svelte stores
│ │ └── app.html # Базовый шаблон
│ ├── static/ # Статические файлы
│ └── package.json # Зависимости
├── docs/ # Документация
└── docker-compose.yml # Оркестрация
```
## 3. Подробное описание компонентов
### 3.1. Бэкенд (FastAPI)
**Основные модули:**
- **Auth module**: Telegram Login Widget с проверкой аутентичности
- **Posts module**: CRUD операции для постов, работа с черновиками
- **Channels module**: Управление Telegram-каналами
- **Integrations module**: Подключение и управление внешними платформами
- **Publications module**: Планирование и выполнение публикаций
- **Media module**: Загрузка и обработка медиафайлов
### 3.2. Фронтенд (SvelteKit)
**Основные страницы:**
- `/login` - Страница входа через Telegram
- `/dashboard` - Главная панель управления
- `/posts` - Список постов
- `/posts/new` - Создание нового поста
- `/posts/[id]/edit` - Редактирование поста
- `/channels` - Управление каналами
- `/integrations` - Подключение интеграций
- `/history` - История публикаций
### 3.3. База данных (PostgreSQL)
**Основные таблицы:**
- `users`: Информация о пользователях
- `channels`: Привязанные Telegram-каналы
- `posts`: Созданные посты
- `integrations`: Настроенные интеграции
- `publications`: История публикаций
- `media_files`: Загруженные медиафайлы
## 4. Потоки работы
### 4.1. Аутентификация
```
1. Пользователь переходит на /login
2. Нажимает кнопку "Войти через Telegram"
3. Telegram возвращает данные пользователя
4. Приложение проверяет подлинность данных
5. Создается/обновляется запись пользователя
6. Генерируется JWT-токен
7. Пользователь перенаправляется в панель управления
```
### 4.2. Создание и публикация поста
```text
1. Пользователь создает новый пост
2. Пользователь выбирает каналы для публикации
3. Пользователь может назначить время публикации
4. Пост сохраняется в базе данных
5. Если время публикации в будущем - задача помещается в очередь
6. При наступлении времени публикации:
- Формируется сообщение под формат каждого канала
- Отправляется в соответствующие интеграции
- Результат сохраняется в истории публикаций
```
## 5. Технические особенности
### 5.1. Безопасность
- Проверка аутентичности данных от Telegram
- Валидация всех входных данных
- Защита от XSS и CSRF атак
- Хранение чувствительных данных в зашифрованном виде
### 5.2. Масштабируемость
- Использование очередей задач для фоновых операций
- Кэширование частых запросов
- Оптимизация SQL-запросов
### 5.3. Надежность
- Обработка ошибок и повторные попытки отправки
- Логирование всех действий
- Мониторинг статуса публикаций
## 6. Особенности реализации
### 6.1. Визуальный редактор
Для редактирования постов будет использован современный WYSIWYG редактор, поддерживающий:
- Форматирование текста
- Вставку изображений и видео
- Добавление опросов
- Работу с альбомами
### 6.2. Поддержка различных типов контента
- Текстовые посты
- Медиафайлы (фото, видео, документы)
- Альбомы
- Опросы
- Видеосообщения
- Специальные элементы (реакции, закрепление)
### 6.3. Интеграции
- Telegram (основная платформа)
- MAX (как пример внешней интеграции)
- Возможность легко добавлять новые интеграции
## 7. План реализации MVP
1. **Этап 1**: Базовая аутентификация и структура приложения
2. **Этап 2**: Создание и редактирование постов
3. **Этап 3**: Публикация в Telegram
4. **Этап 4**: Добавление интеграции с внешней платформой
5. **Этап 5**: Расширенные функции (планирование, история, черновики)