Фронтенд был обновлен для соответствия новой OpenAPI спецификации TRC Backend v0.1.0. Все изменения направлены на улучшение типизации, добавление новых эндпоинтов и приведение в соответствие с актуальной структурой API.
- CartItemResponse: Новый тип для ответов API корзины
- CartSummary: Обновлена структура с опциональными полями
- CartResponse: Новая структура ответа с items и summary
- CartItemOut: Упрощенная структура для совместимости
- CartStateOut: Старая структура для deprecated endpoints
- OutfitItemCreate: Новая структура для создания элементов образа
- OutfitCreate: Обновлена структура с новыми полями (tags, season, occasion, outfit_type)
- OutfitUpdate: Добавлены новые поля для обновления
- OutfitOut: Приведена в соответствие с API
- UserCreate: Базовая структура для регистрации
- ProfileOut: Обновлены типы массивов (favorite_colors, favorite_brands)
- TokensOut: Новый тип для ответов обновления токенов
- HTTPValidationError: Структура ошибок валидации
- ValidationError: Детали ошибок валидации
// Новые методы
getCart(): Promise<CartResponse>
addToCart(data: CartItemCreate): Promise<CartItemResponse>
updateCartItem(itemId: number, data: CartItemUpdate): Promise<CartItemResponse>
getCartSummary(): Promise<CartSummary>
// Deprecated методы для совместимости
getCartState(): Promise<CartStateOut>
addToCartOld(), updateCartItemOld(), removeFromCartOld(), clearCartOld()// Управление пользователями (admin)
listUsers(): Promise<UserOut[]>
getUser(userId: number): Promise<UserOut>
createUserAdmin(data: UserCreateAdmin): Promise<UserOut>
updateUserAdmin(userId: number, data: UserUpdateAdmin): Promise<UserOut>
deleteUser(userId: number): Promise<void>
// Контент пользователей
toggleFavorite(userId: number, itemId: number)
listFavorites(userId: number): Promise<ItemOut[]>
getUserHistory(userId: number, limit?: number): Promise<ItemOut[]>// Новые методы
refreshTokenApi(refreshToken: string): Promise<TokensOut>
// Обновленные методы
registerApi() - теперь использует UserCreate тип
loginApi() - улучшена обработка ошибок// Новые эндпоинты
getProfile(): Promise<ProfileOut>
updateProfile(data: ProfileUpdate): Promise<ProfileOut>
deleteProfile(): Promise<void>
getMe(): Promise<ProfileOut> // альтернативный эндпоинт// Новый API для проверки состояния
healthApi.readinessCheck()- Переработан для использования типов из schemas.ts
- Сохранены дополнительные утилитарные типы:
CartNotificationCartStateCartItemWithActionsCartMetrics
- Улучшена обработка обновления токенов
- Добавлено автоматическое перенаправление на страницу входа при ошибке авторизации
- Обновлены типы для refresh token endpoint
Все изменения поддерживают обратную совместимость:
- Старые API методы корзины помечены как deprecated, но сохранены
- Существующие компоненты продолжают работать без изменений
- Новые типы дополняют, а не заменяют существующие
import { useCart } from '../hooks/useCart';
const { cart, addToCart, updateQuantity } = useCart();
// Добавление товара
await addToCart({ variant_id: 123, quantity: 2, notes: 'Срочно' });
// Обновление количества
await updateQuantity(itemId, 3);import { listUsers, toggleFavorite } from '../api/users';
// Получение списка пользователей (админ)
const users = await listUsers();
// Добавление в избранное
await toggleFavorite(userId, itemId);import { getProfile, updateProfile } from '../api/profile';
// Получение профиля
const profile = await getProfile();
// Обновление профиля
await updateProfile({
first_name: 'Иван',
favorite_colors: ['red', 'blue']
});- Используйте новые API методы для корзины вместо deprecated
- Проверяйте типизацию - все методы имеют строгие типы
- Обрабатывайте ошибки - добавлены детальные типы ошибок валидации
- Тестируйте авторизацию - улучшена логика обновления токенов
Для полной миграции на новые API:
- Замените вызовы
cartApi.getCartState()наcartApi.getCart() - Обновите типы в компонентах с
CartItemнаCartItemResponse - Используйте новые поля в образах (tags, season, occasion)
- Обновите обработку ошибок с новыми типами валидации
- ✅ Все существующие компоненты работают без изменений
- ✅ Deprecated методы API поддерживаются
- ✅ Новые типы опциональны для существующего кода
- ✅ Автоматическая обработка авторизации улучшена
- Постепенная миграция компонентов на новые API методы
- Использование новых полей в образах для расширенной функциональности
- Внедрение админ-панели с управлением пользователями
- Добавление health checks для мониторинга