import { clearAdminSession, readAdminSession } from '@/utils/auth' const API_BASE = import.meta.env.VITE_SUPPLIED_ADMIN_API_BASE || 'http://127.0.0.1:8888/api/admin' const normalizeBase = (base: string) => base.replace(/\/$/, '') export const resolveImageUrl = (value: string) => /^\/api\/(?:file|upload-preview)\?/.test(value) ? `${normalizeBase(API_BASE).replace(/\/api\/admin$/, '')}${value.replace('/api/upload-preview?', '/api/file?')}` : value export const postAdmin = async (name: string, body: Record): Promise => { const token = readAdminSession()?.token const response = await fetch(`${normalizeBase(API_BASE)}/${name}`, { method: 'POST', headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}) }, body: JSON.stringify(body) }) const payload = await response.json().catch(() => ({})) if (response.status === 401 && name !== 'login') { clearAdminSession() if (name !== 'admin-session' && window.location.pathname !== '/login') { window.location.replace(`/login?redirect=${encodeURIComponent(window.location.pathname + window.location.search)}`) } } if (!response.ok || payload.success === false) { throw new Error(payload.error?.message || payload.msg || '请求失败') } return payload.data as T }