import axios from 'axios' const API_BASE_URL = '/api' const API_GOD_URL = '/api/god' 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 interface CharacterDto { id: number name: string levelName: string levelId: number maxHP: number attack: number professionName?: string money: number currentExp: number trainingOn?: string nextLevelName?: string nextLevelMinExp?: number breakthroughRate: number canBreakthrough: boolean nextLevelRequiredPillId?: number nextLevelRequiredPillName?: string nextLevelRequiredPillQuantity: number trainingExpRate: number lastLogin: string createdOn: string } export interface ProfessionDto { id: number name: string description: string attackRate: number defendRate: number healthRate: number criticalRate: number } export interface CreateCharacterRequest { name: string professionId: number } export const characterApi = { getCharacterList: (): Promise => { return instance.get('/character/list') }, createCharacter: (data: CreateCharacterRequest): Promise => { return instance.post('/character/register', data) }, deleteCharacter: (characterId: number): Promise => { return instance.delete(`/character/${characterId}`) }, selectCharacter: (characterId: number): Promise => { return instance.post(`/character/select/${characterId}`) }, getProfessions: (): Promise => { return instance.get(`/profession/all`) }, startTraining: (characterId: number): Promise => { return instance.post(`/character/${characterId}/training/start`) }, stopTraining: (characterId: number): Promise => { return instance.post(`/character/${characterId}/training/stop`) }, breakthrough: (characterId: number): Promise => { return instance.post(`/character/${characterId}/breakthrough`) } } export default instance