Files
telepost/plans/phase2_plan.md
2026-01-18 21:01:43 +03:00

4.1 KiB

План реализации второго этапа 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-токен

Требования к фронтенду

  • Страница списка постов с возможностью просмотра, редактирования и удаления
  • Страница создания поста с полями для заголовка, содержимого и времени публикации
  • Страница редактирования поста
  • Защита маршрутов - доступ только для аутентифицированных пользователей