export const useAuthStore = defineStore('authStore', () => {
  const auth = ref({
    seq: '',          // 시퀀스
    id: '',          // 아이디   
    name: '',        // 이름
    email: '',        // 이메일
    companyName: '',  // 회사명
    companyNumber: '', // 회사번호 (COMPANY_NUMBER)
    phone: '',      // 전화번호
    memberType: '',   // 사용자 타입 (VENDOR, INFLUENCER)
    accessToken: '',      // 토큰
    refreshToken: '',     // 갱신토큰   
    snsTempData : '', // sns 임시데이터
  })

  // 전체 조회
  const getSeq = computed(() => auth.value.seq)             // 시퀀스 조회
  const getUserId = computed(() => auth.value.id)             // 아이디 조회
  const getUserName = computed(() => auth.value.name)             // 이름 조회
  const getUserEmail = computed(() => auth.value.email)             // 이메일 조회
  const getCompanyName = computed(() => auth.value.companyName)             // 회사명 조회
  const getCompanyNumber = computed(() => auth.value.companyNumber)         // 회사번호 조회
  const getUserPhone = computed(() => auth.value.phone)             // 관리자 핸드폰 조회
  const getAccessToken = computed(() => auth.value.accessToken)         // 토큰 조회
  const getRefreshToken = computed(() => auth.value.refreshToken)       // 리프레시토큰 조회
  const getSnsTempData = computed(() => auth.value.snsTempData)       // sns 임시데이터 조회

  function setAuth(payload){
    console.log('=== setAuth 함수 디버깅 ===');
    console.log('payload.user:', payload.user);
    
    auth.value.seq = payload.user.SEQ
    auth.value.id = payload.user.ID
    auth.value.name = payload.user.NAME
    auth.value.email = payload.user.EMAIL
    auth.value.companyName = payload.user.companyName || payload.user.COMPANY_NAME || ''
    auth.value.companyNumber = payload.user.companyNumber || payload.user.COMPANY_NUMBER || ''
    auth.value.phone = payload.user.PHONE
    
    console.log('설정된 companyNumber:', auth.value.companyNumber);
    console.log('원본 COMPANY_NUMBER:', payload.user.COMPANY_NUMBER);
    console.log('원본 companyNumber:', payload.user.companyNumber);
    
    // 사용자 타입 설정 (COMPANY_NUMBER가 있으면 벤더사, 없으면 인플루언서)
    auth.value.memberType = (payload.user.COMPANY_NUMBER || payload.user.companyNumber) ? 'VENDOR' : 'INFLUENCER'
    
    console.log('설정된 memberType:', auth.value.memberType);
    console.log('=============================');
    
    auth.value.accessToken = payload.accessToken
    auth.value.refreshToken = payload.refreshToken        
  }

  function setTempData(payload){
    auth.value.snsTempData = payload
  }
  
  function setAccessToken(token){
    auth.value.accessToken = token
  }
  
  function setRefreshToken(token){
    auth.value.refreshToken = token
  }

  // logout
  function setLogout(){
    // 모든 필드 초기화
    auth.value = {
      seq: '',
      id: '',
      name: '',
      email: '',
      companyName: '',
      companyNumber: '',
      phone: '',
      memberType: '',
      accessToken: '',
      refreshToken: '',
      snsTempData: ''
    }
  }

  return { 
    auth, 
    getSnsTempData, 
    getAccessToken, 
    getRefreshToken, 
    setAuth, 
    setTempData, 
    setAccessToken, 
    setRefreshToken, 
    setLogout,
    getSeq,
    getUserSeq: getSeq,  // getUserSeq 별칭 추가
    getUserId,
    getUserName,
    getUserEmail,
    getCompanyName,
    getCompanyNumber,
    getUserPhone
  }
}, {persist: { storage: persistedState.localStorage}})

