mirror of
https://gitverse.ru/kpa39l/telepost.git
synced 2026-09-29 09:55:09 +00:00
Initial commit
This commit is contained in:
+157
@@ -0,0 +1,157 @@
|
||||
# Архитектура приложения 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. Создание и публикация поста
|
||||
```
|
||||
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**: Расширенные функции (планирование, история, черновики)
|
||||
Reference in New Issue
Block a user