mirror of
https://gitverse.ru/kpa39l/telepost.git
synced 2026-09-29 18:05:08 +00:00
68 lines
4.1 KiB
Markdown
68 lines
4.1 KiB
Markdown
# План реализации второго этапа 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-токен
|
|
|
|
## Требования к фронтенду
|
|
- Страница списка постов с возможностью просмотра, редактирования и удаления
|
|
- Страница создания поста с полями для заголовка, содержимого и времени публикации
|
|
- Страница редактирования поста
|
|
- Защита маршрутов - доступ только для аутентифицированных пользователей |