Перейти к содержанию

FSP ID

Полный контракт — docs/FSP_INTEGRATION.md и fsp-registry.openapi.yaml. Здесь короткий контур, как он есть в коде.

Вход на платформу остаётся почтой и паролем. FSP ID не выдаёт наши токены и не создаёт аккаунт. Привязка доступна вошедшему кандидату, у которого уже есть резюме.

Организаторы не дают доступ к настоящим системам, поэтому обе работают в эмуляции при FSP_ID_MODE=mock: пути Keycloak, обмен authorization code и PKCE, claims ID-токена и запись реестра. Переход на настоящий Keycloak — смена конфигурации, пакет backend/app/integrations/fsp/.

sequenceDiagram
  participant C as Кандидат
  participant SPA as SPA
  participant API as API
  participant IdP as FSP ID
  C->>SPA: Связать с ФСП
  SPA->>API: /fsp-id/authorize
  C->>IdP: Вход и согласие
  SPA->>API: code и state на /profile/fsp/callback
  API->>IdP: Обмен кода
  API->>API: GET реестра и запись достижений

Пустой ответ реестра — обычный результат, не ошибка. Достижения влияют на силу профиля внутри категории и не задают грейд. Отвязка — DELETE /candidates/me/fsp-link. Повторный импорт — POST /candidates/me/fsp-sync.

Расписание «раз в 24 часа» из FR-К-36 в коде как фоновая задача не искалось отдельно: в маршрутах есть ручная синхронизация и импорт в момент привязки.