Skip to content

Feature/browser context api

Описание

Цель изменений

Реализация схем и заглушек Browser Context API для управления изолированными контекстами браузера (cookies, localStorage).

Это позволяет:

  • Создавать и хранить профили браузера.
  • Управлять жизненным циклом контекстов (active/disabled).
  • Гибко настраивать политики хранения (cookies_only/full).

Реализовано

  • API: Заглушки эндпоинтов /contexts (CRUD, смена статуса через PATCH /meta, обновление контента через PATCH /content). Возвращают 501 Not Implemented.
  • Models: Pydantic-схемы для BrowserContext, Cookie, Origin. API использует единый snake_case стиль, преобразование в формат Playwright выполняется в адаптере.
  • Infrastructure: Подключение contexts_router в FastApiAppBuilder, исправление импортов драйверов хранилищ.

Добавленные сущности и концепты

  1. Модели Cookie и Origin
    • Определены локально в схемах с extra="forbid". Конвертация в формат Playwright будет выполняться в адаптере.
  2. ContextPolicy (политики хранения)
    • cookies_only: сохраняем только куки.
    • full: полное сохранение (куки + localStorage).
  3. ContextStatus (жизненный цикл)
    • active / disabled.
  4. Опциональное поле integration_id
    • Техническое поле для привязки контекста к внешней системе.
  5. RevisionConflictErrorResponse
    • Типизированная модель ошибки 409 для конфликта ревизий. Содержит current_revision, чтобы клиент мог повторить запрос с актуальной ревизией.

Чеклист:

  • Описание MR:
    • Из описания MR ясно кому и зачем нужны правки
    • Указаны ссылки на связанные issues
    • Указаны дополнительные материалы (если есть)
  • Проверка:
    • Изменения протестированы
    • Проверено поведение в dev (если применимо)
  • Changelog:
    • Добавлен новый файл в changelogs/unreleased
    • Добавлено описание всех изменений
    • Указаны изменения в переменных окружения
    • Указаны ссылки на GitLab Issues, связанные с MR
  • Документация:
    • Обновлены инструкции в CONTRIBUTING.md (если применимо)
    • Обновлен README (если применимо)
Edited by Виктор Тиховской

Merge request reports