import axios from 'axios'

const api = axios.create({ baseURL: '/api/hrm' })

api.interceptors.request.use(cfg => {
  const token = localStorage.getItem('hrm_token')
  if (token) cfg.headers.Authorization = `Bearer ${token}`
  return cfg
})

api.interceptors.response.use(
  r => r,
  err => {
    if (err.response?.status === 401) {
      localStorage.removeItem('hrm_token')
      window.location.href = '/login'
    }
    return Promise.reject(err)
  }
)

export default api

// ── WISE AI (중앙 guardia-rag 프록시) ──────────────────────────────────
// 별도 baseURL(/api/wise) — 공용 api(/api/hrm)와 경로가 다르므로 전용 인스턴스.
// 인증 사용자 전용(로그인 JWT). 응답은 ApiResponse 봉투(r.data.data 에 rag 결과).
const wiseApi = axios.create({ baseURL: '/api/wise' })
wiseApi.interceptors.request.use(cfg => {
  const token = localStorage.getItem('hrm_token')
  if (token) cfg.headers.Authorization = `Bearer ${token}`
  return cfg
})
export const wiseAsk = (query: string) => wiseApi.post('/ask', { query })

// ── Auth / Me ─────────────────────────────────────────────────────────
// client baseURL='/api/hrm' → 경로는 상대(/auth/...·/admin/...).
export const getMe = () => api.get('/auth/me')

// ── 2FA / OTP / 계정 보안 (마이페이지, access 토큰 필요) ────────────────
// 보안 불변: setup 응답(secret/qrImage)은 화면 표시용만 — 로그/저장 금지.
export const otpSetup = () => api.post('/auth/otp/setup')
export const otpConfirm = (code: string) => api.post('/auth/otp/confirm', { code })
export const otpDisable = () => api.post('/auth/otp/disable')
export const changePassword = (currentPassword: string, newPassword: string) =>
  api.post('/auth/change-password', { currentPassword, newPassword })

// ── Admin: OTP 초기화 (SUPERADMIN — /api/hrm/admin/users/** 게이트) ─────
// 대상 사용자 OTP 해제(다음 로그인 시 OTP_SETUP 재등록). 시크릿 미조회.
export const adminOtpReset = (id: number) => api.post(`/admin/users/${id}/otp-reset`)
