import { User } from '@things-factory/auth-base'; import { Domain } from '@things-factory/shell'; export interface SyncResult { success: boolean; email: string; action: 'created' | 'updated' | 'deactivated' | 'skipped' | 'error'; lsUserId?: string; lsPermissions?: string; error?: string; } export interface SyncSummary { total: number; created: number; updated: number; deactivated: number; skipped: number; errors: number; results: SyncResult[]; } /** * Label Studio 사용자 프로비저닝 서비스 * * Things-Factory 사용자를 Label Studio에 배치 동기화합니다. */ export declare class UserProvisioningService { /** * 설정 검증 */ private static validateConfig; /** * 단일 사용자 동기화 * * @param domain Things-Factory 도메인 * @param user Things-Factory 사용자 * @returns 동기화 결과 */ static syncUser(domain: Domain, user: User): Promise; static getDomainUsers(domain: Domain): Promise; /** * 도메인의 모든 사용자 일괄 동기화 * * @param domain Things-Factory 도메인 * @returns 동기화 요약 */ static syncAllUsers(domain: Domain): Promise; /** * Label Studio API를 통해 사용자 생성 또는 업데이트 */ private static createOrUpdateLabelStudioUser; /** * Label Studio에서 사용자 비활성화 */ private static deactivateUser; /** * API URL 빌드 */ private static buildApiUrl; /** * 랜덤 비밀번호 생성 (SSO 사용으로 실제로는 사용 안 됨) */ private static generateRandomPassword; /** * Sleep 유틸리티 */ private static sleep; }