/** 浏览器可读的 API 根(scheme + host + port),不含路径。生产环境务必配置 NEXT_PUBLIC_API_ORIGIN。 */ export function getPublicApiOrigin(): string { const o = process.env.NEXT_PUBLIC_API_ORIGIN || (process.env.NODE_ENV === 'development' ? 'http://127.0.0.1:8000' : ''); if (!o) { throw new Error('NEXT_PUBLIC_API_ORIGIN is not set'); } return o.replace(/\/$/, ''); } export function getOAuthClientId(): string { const id = process.env.NEXT_PUBLIC_OAUTH_CLIENT_ID || (process.env.NODE_ENV === 'development' ? 'spa' : ''); if (!id) { throw new Error('NEXT_PUBLIC_OAUTH_CLIENT_ID is not set'); } return id; } export function getOAuthRedirectUri(): string { const u = process.env.NEXT_PUBLIC_OAUTH_REDIRECT_URI || (process.env.NODE_ENV === 'development' ? 'http://localhost:3000/oauth/callback' : ''); if (!u) { throw new Error('NEXT_PUBLIC_OAUTH_REDIRECT_URI is not set'); } return u; }