mirror of
https://gitverse.ru/kpa39l/telepost.git
synced 2026-09-29 09:55:09 +00:00
4.1 KiB
4.1 KiB
План реализации второго этапа TelePost Clone
Цель второго этапа
Реализовать функционал создания и редактирования постов, включая:
- Создание модели Post в базе данных
- Создание схем Pydantic для работы с постами
- Реализацию API маршрутов для CRUD операций над постами
- Добавление защиты маршрутов с использованием JWT-токенов
- Реализацию сервисного слоя для бизнес-логики работы с постами
- Добавление интерфейса на фронтенде для создания и редактирования постов
Необходимые компоненты
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-токен
Требования к фронтенду
- Страница списка постов с возможностью просмотра, редактирования и удаления
- Страница создания поста с полями для заголовка, содержимого и времени публикации
- Страница редактирования поста
- Защита маршрутов - доступ только для аутентифицированных пользователей