import axios from 'axios' const API_BASE_URL = '/api' const instance = axios.create({ baseURL: API_BASE_URL, timeout: 10000, headers: { 'Content-Type': 'application/json' } }) instance.interceptors.request.use( (config) => { const token = localStorage.getItem('auth_token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => Promise.reject(error) ) instance.interceptors.response.use( (response) => response.data, (error) => { if (error.response?.status === 401) { localStorage.removeItem('auth_token') localStorage.removeItem('user') window.location.href = '/login' } return Promise.reject(error.response?.data || error.message) } ) export const DailyMissionStatus = { Pending: 0, InProgress: 1, Completed: 2, Claimed: 3 } as const export type DailyMissionStatus = typeof DailyMissionStatus[keyof typeof DailyMissionStatus] export const RewardType = { Pill: 1, Equipment: 2, Exp: 3, Money: 4 } as const export type RewardType = typeof RewardType[keyof typeof RewardType] export interface MissionReward { rewardType: RewardType rewardTypeName: string itemId: number itemName: string count: number } export interface DailyMission { id: number characterId: number missionId: number missionName: string missionTitle: string missionDescription: string spendTimeMinutes: number status: DailyMissionStatus startTime?: string endTime?: string isFromYesterday: boolean assignedDate: string rewards: MissionReward[] } export const dailyMissionApi = { getList: (): Promise => { return instance.get('/god/daily-mission/list') }, accept: (dailyMissionId: number): Promise => { return instance.post(`/god/daily-mission/${dailyMissionId}/accept`) }, claim: (dailyMissionId: number): Promise => { return instance.post(`/god/daily-mission/${dailyMissionId}/claim`) } } export default instance