Задачи
•Разрабатывать и поддерживать административный портал RAISA на React и TypeScript: приложения, роли и доступы, секреты, пространства, ресурсы, репозитории, базовые образы, модели, мониторинг и отчёты
•Разрабатывать и дорабатывать REST API на Python и FastAPI в сервисах портала, шаблонизатора и уведомлений
•Вести функции целиком: проектировать контракт OpenAPI, реализовывать бэкенд, генерировать клиент, создавать экран и проверять права
•Реализовывать ролевую модель на фронтенде с CASL и авторизацию на бэкенде с Keycloak, JWT и raisa_api_protected
•Интегрировать портал с GitLab, Vault, Airflow, Superset и смежными сервисами платформы
•Контейнеризировать сервисы и участвовать в их выкладке в Kubernetes через существующие CI/CD-пайплайны
•Писать тесты для API на pytest, интерфейса на Vitest и сквозные тесты
Требования
•Опыт коммерческой разработки на TypeScript/React и Python — от 4 лет суммарно, не менее двух лет на каждом стеке
•Опыт работы с React 18: многостраничные приложения, маршрутизация, формы, таблицы, разграничение экранов по ролям
•Уверенное владение TypeScript
•Опыт работы с REST и OpenAPI: проектирование контрактов и использование сгенерированных клиентов
•Знание Python и FastAPI, опыт разработки асинхронных конечных точек, работы с Pydantic и структуры «роутер — сервис — репозиторий»
•Знание PostgreSQL, SQLAlchemy и миграций Alembic
•Опыт аутентификации и авторизации с OAuth/OIDC, Keycloak и JWT
•Знание Docker и понимание работы сервисов в Kubernetes
•Опыт работы с Git и проверки кода
•Умение самостоятельно доводить задачи от API до интерфейса
Будет плюсом: TanStack Query, Zustand, Tailwind CSS, компонентные библиотеки, CASL или аналоги для проверки прав на клиенте, keycloak-js, HashiCorp Vault, GitLab API, pytest, Vitest, Testing Library, Streamlit, шаблоны пользовательских приложений для работы с данными, понимание контура MLOps на уровне интеграций портала, GitLab CI и Helm.
Условия
•Долгосрочный проект
•Старт ASAP