/** * Admin API 地址(方案 A) * - 开发:相对路径,Vite 代理到 Admin * - 生产:直连 https://api.ideship.com/admin(可用 VITE_API_ADMIN_URL 覆盖) */ function normalizeBase(base: string): string { return base.trim().replace(/\/$/, '') } function ensureLeadingSlash(path: string): string { return path.startsWith('/') ? path : `/${path}` } const DEFAULT_PROD_ADMIN = 'https://api.ideship.com/admin' function prodAdminBase(): string { const override = import.meta.env.VITE_API_ADMIN_URL as string | undefined if (override?.trim()) return normalizeBase(override) return DEFAULT_PROD_ADMIN } /** 浏览器请求 Admin API(OpenAPI.BASE 或 omsUrl/orderUrl 等) */ export function resolveAdminApiPath(path: string): string { const p = ensureLeadingSlash(path) if (!import.meta.env.DEV) { return `${prodAdminBase()}${p}` } return p } export function resolveOpenApiBase(): string { if (!import.meta.env.DEV) { return prodAdminBase() } return '' } /** 桌面 Agent 等直连 Admin 网关 */ export function resolveDirectAdminApiUrl(): string { const override = import.meta.env.VITE_API_ADMIN_URL as string | undefined if (override?.trim()) { return normalizeBase(override) } if (import.meta.env.DEV) { return 'http://api.nanafa.com/admin' } return DEFAULT_PROD_ADMIN } /** 静态资源(uploads)在 Admin wwwroot,须带 `/admin`。 * 生产默认 api 域名;开发空串走 Vite `/uploads` 代理。 */ export function resolveAdminAssetOrigin(): string { const override = import.meta.env.VITE_API_ASSET_ORIGIN as string | undefined if (override?.trim()) { return normalizeBase(override) } if (!import.meta.env.DEV) { return DEFAULT_PROD_ADMIN } return '' }