# План реализации второго этапа TelePost Clone ## Цель второго этапа Реализовать функционал создания и редактирования постов, включая: 1. Создание модели Post в базе данных 2. Создание схем Pydantic для работы с постами 3. Реализацию API маршрутов для CRUD операций над постами 4. Добавление защиты маршрутов с использованием JWT-токенов 5. Реализацию сервисного слоя для бизнес-логики работы с постами 6. Добавление интерфейса на фронтенде для создания и редактирования постов ## Необходимые компоненты ### Backend #### 1. Модель поста - `backend/app/models/post.py` - модель SQLAlchemy для постов #### 2. Схемы Pydantic - `backend/app/schemas/post.py` - схемы для создания, обновления и чтения постов #### 3. API маршруты - `backend/app/api/v1/endpoints/posts.py` - маршруты для работы с постами - Обновление `backend/app/api/v1/routers.py` для регистрации нового роутера #### 4. Сервисный слой - `backend/app/services/post_service.py` - бизнес-логика для работы с постами #### 5. Обновления существующих компонентов - `backend/app/api/v1/endpoints/auth.py` - возможно обновление для работы с постами - `backend/main.py` - добавление зависимостей если нужно ### Frontend #### 1. Страницы - `frontend/src/routes/posts/+page.svelte` - страница со списком постов - `frontend/src/routes/posts/create/+page.svelte` - страница создания поста - `frontend/src/routes/posts/edit/[id]/+page.svelte` - страница редактирования поста #### 2. Компоненты - `frontend/src/lib/components/PostEditor.svelte` - компонент редактора поста - `frontend/src/lib/components/PostCard.svelte` - компонент карточки поста #### 3. Stores - `frontend/src/lib/stores/posts.js` - store для управления состоянием постов ## Требования к модели Post Модель должна включать: - id: UUID или Integer (первичный ключ) - title: строка (заголовок поста) - content: текст (содержимое поста) - scheduled_time: DateTime (время публикации, опционально) - status: строка (черновик, готов к публикации, опубликован и т.д.) - created_at: DateTime (время создания) - updated_at: DateTime (время последнего обновления) - owner_id: Integer (внешний ключ к пользователю) ## Требования к API - GET /api/v1/posts/ - получить список постов пользователя - POST /api/v1/posts/ - создать новый пост - GET /api/v1/posts/{id} - получить конкретный пост - PUT /api/v1/posts/{id} - обновить пост - DELETE /api/v1/posts/{id} - удалить пост - Все маршруты требуют аутентификации через JWT-токен ## Требования к фронтенду - Страница списка постов с возможностью просмотра, редактирования и удаления - Страница создания поста с полями для заголовка, содержимого и времени публикации - Страница редактирования поста - Защита маршрутов - доступ только для аутентифицированных пользователей