From ab0c91b2e85c7fe28ed7986cb4af99f3a3295059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 11 Feb 2026 08:19:23 +0300 Subject: [PATCH] docs(calendar): update architecture doc with Phase 2 completion status --- .../CALENDAR_OPTIONAL_ARCHITECTURE.md | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/docs/in-progress/CALENDAR_OPTIONAL_ARCHITECTURE.md b/docs/in-progress/CALENDAR_OPTIONAL_ARCHITECTURE.md index 393ef6e1..ac5acd63 100644 --- a/docs/in-progress/CALENDAR_OPTIONAL_ARCHITECTURE.md +++ b/docs/in-progress/CALENDAR_OPTIONAL_ARCHITECTURE.md @@ -1,7 +1,71 @@ # Упрощённая архитектура: Опциональные настраиваемые календари **Дата:** 11 февраля 2026 г. -**Подход:** Обратно совместимое расширение без поломки существующего функционала +**Подход:** Обратно совместимое расширение без поломки существующего функционала +**Статус:** ✅ Phase 2 (API) завершена + +--- + +## 📊 Прогресс реализации + +### ✅ Phase 1: Модели и миграции (Завершено) +- ✅ Создана модель `Calendar` с настройками видимости +- ✅ Создана модель `CalendarSubscription` с правами доступа +- ✅ Добавлено опциональное поле `calendar` в `CalendarEvent` +- ✅ Миграция 0011 создана и применена +- ✅ Admin интерфейсы настроены +- ✅ Коммит: `feat(calendar): add optional Calendar and CalendarSubscription models` + +### ✅ Phase 2: API Layer (Завершено) +- ✅ `CalendarEventWriteSerializer` поддерживает `calendar_id` +- ✅ Созданы сериализаторы для `Calendar` (read + write) +- ✅ Созданы сериализаторы для `CalendarSubscription` (read + write) +- ✅ `CalendarViewSet` с CRUD операциями +- ✅ Эндпоинты subscribe/unsubscribe для календарей +- ✅ `CalendarSubscriptionViewSet` для управления подписками +- ✅ `CalendarEventsViewSet` обновлен для поддержки `calendar_id` +- ✅ `CalendarManager.get_available_for_user()` метод +- ✅ Методы проверки прав в модели `Calendar` +- ✅ URL маршруты зарегистрированы +- ✅ Коммит: `feat(calendar): add API layer for optional calendars` + +#### API эндпоинты (новые): +``` +GET /api/v1/calendar/calendars/ # Список доступных календарей +POST /api/v1/calendar/calendars/ # Создание календаря +GET /api/v1/calendar/calendars/{id}/ # Детали календаря +PATCH /api/v1/calendar/calendars/{id}/ # Обновление календаря +DELETE /api/v1/calendar/calendars/{id}/ # Удаление календаря +POST /api/v1/calendar/calendars/{id}/subscribe/ # Подписка +POST /api/v1/calendar/calendars/{id}/unsubscribe/ # Отписка +GET /api/v1/calendar/calendars/my-calendars/ # Мои календари + +GET /api/v1/calendar/subscriptions/ # Мои подписки +POST /api/v1/calendar/subscriptions/ # Создать подписку +GET /api/v1/calendar/subscriptions/{id}/ # Детали подписки +PATCH /api/v1/calendar/subscriptions/{id}/ # Обновить подписку +DELETE /api/v1/calendar/subscriptions/{id}/ # Удалить подписку + +GET /api/v1/calendar/events/?calendar_id={id} # События календаря (legacy + new) +``` + +### ⏳ Phase 3: Frontend (В планах) +- ⏳ UI для списка календарей с фильтрацией +- ⏳ Кнопки подписки/отписки +- ⏳ Модальное окно создания/редактирования календаря +- ⏳ Переключатель отображения календарей +- ⏳ Интеграция с FullCalendar.js + +### ⏳ Phase 4: Тестирование (В планах) +- ⏳ Unit тесты для моделей +- ⏳ API тесты для новых эндпоинтов +- ⏳ Тесты прав доступа +- ⏳ Тесты обратной совместимости + +### ⏳ Phase 5: Документация (В планах) +- ⏳ Обновление README +- ⏳ API документация (OpenAPI/Swagger) +- ⏳ Руководство пользователя ---