Тестовая новость

REST API — Замена GraphQL для кабинета /my/
Изменения
- Создана структура
backend/{app}/rest/(viewsets/, serializers/, filters/) в 10 приложениях - Все viewset’ы зарегистрированы в
backend/config/urls.py(router + DefaultRouter) - GraphQL (
/graphql/) продолжает работать — старый код не затронут
1. Профиль пользователя
App: users
GET /api/profile/me/
Замена UserProfile (profile).
{
"id": 1,
"enter_with_password": false,
"phone": "+7...",
"username": "...",
"telegram_nickname": "",
"email": "...",
"first_name": "...",
"last_name": "...",
"patronymic": "...",
"additional_last_name": "",
"additional_first_name": "",
"additional_patronymic": "",
"additional_phone": "",
"additional_email": "",
"phone_two": "",
"ad_agreement": true
}
PATCH /api/profile/update_me/
Замена мутации UserProfile (update).
Body: любые поля из списка выше (кроме id, phone, username).
POST /api/profile/logout/
Замена мутации logout.
Response: {"ok": true}
2. Страницы кабинета (хедеры)
App: users
GET /api/stage-dealing-page/
Замена stageDealingPage.
{
"title": "...",
"sub_title": "...",
"image_dealing": [],
"image_dealing_mobile": []
}
GET /api/stage-mortgage-page/
Замена stageMortgagePage.
{
"title": "...",
"sub_title": "...",
"image_mortgage": [],
"image_mortgage_mobile": []
}
3. Избранное
App: favorites
Будет делать в другой таске
4. Сделки
App: deals
Будет сделано в другой таске
5. Бронирования
App: online_booking
GET /api/cabinet-bookings/
Замена getBooked, getUserBookingRequests. Auth: IsAuthenticated, фильтр по user.
GET /api/cabinet-bookings/{uuid}/
Замена getOnlineBooking(id_booked).
GET /api/pre-booking-disclaimer/
Замена PreBookingDisclaimer.
6. Офисы
App: offices
GET /api/offices/
Замена allOffices. Только активные офисы.
[
{
"id": 1,
"is_central": true,
"is_combined": false,
"name": "",
"address": "...",
"coords": "...",
"phone": "...",
"email": "...",
"hours": [
{"days": "Пн-Пт", "open_at": "09:00", "close_at": "20:00", "is_free_day": false}
]
}
]
7. Динамика строительства
App: progress
GET /api/progress/
Замена allProgress.
[
{
"id": 1,
"date": "2026-06-01",
"project": 1,
"cover": "url",
"images": [
{"id": 1, "file": "url", "name": "Фото", "buildings": [1, 2]}
]
}
]
GET /api/webcams/
Замена allWebcams.
GET /api/aerophotos/
Замена allAerophotos.
8. Секции корпуса
App: buildings
GET /api/sections/?building=uuid
Замена allSections. Фильтр по building_id.
9. Ипотечный калькулятор
App: mortgage
GET /api/mortgage-calculator-page/
Замена mortgageCalculatorPage.
{
"initial_mortgage_term": 30,
"initial_mortgage_deposit": "20.00",
"initial_mortgage_program_category": 1
}
10. Альбомы изображений проекта
App: projects
GET /api/album-images/?project=slug
Замена allProjectImageAlbums.
11. Счётчики и рекомендации
App: properties
GET /api/property-counts/
Замена flatFacets, storageFacets, parkingFacets (только count).
[
{"typename": "FlatType", "count": 42},
{"typename": "ParkingType", "count": 15},
{"typename": "StorageType", "count": 8}
]
12. Акции
App: promos
GET /api/cabinet-promos/?project=slug
Замена allPromos (AllPromosQuery). Фильтры: project (slug проекта), month (М/ГГГГ).
Queryset повторяет GraphQL-резолвер: published().with_month().timeframed().
Поля повторяют PromoType (snake_case): id, pk, crm_id, title, tag_name, sub_title,
slug, start, end, legal_info, video, show_timer, short_description, description,
link, request_form, time_scrolling, timer_text, show_with_promo, tooltip, show_tooltip,
preview, popup_image, image_card, image_two_card, image_one_card, video_card,
video_two_card, video_one_card, tags[{id, name}], mobile_tag{id, name},
history_slides[], projects[{slug, title}].
description/short_description и тексты слайдов проходят через get_text_after_mortgage_converter,
как в GraphQL.
Уже существующие (не изменялись)
| Endpoint | GraphQL |
|---|---|
/api/project/ |
detailLivingProject |
/api/flat/ |
flatFacets, flats |
/api/parking/ |
parkingFacets |
/api/storage/ |
storageFacets |
/api/finish-type/ |
finishingSpecs |
/api/bank/ |
allBanks |
/api/mortgage-programm/ |
allMortgageProgramCategory |
/api/mortgage-offer/ |
allMortgageOffers, mortgageOfferSpecs, mortgageOfferFacets |
/api/promotions/ |
панельный CRUD, портал не использует (AllPromosQuery → /api/cabinet-promos/) |
/api/booking_documents/ |
Документы бронирования |