'use client'; export async function apiRequest(path, options = {}) { const token = typeof window === 'undefined' ? null : localStorage.getItem('rice_token'); const headers = { Accept: 'application/json', ...(options.headers || {}) }; if (options.body !== undefined) headers['Content-Type'] = 'application/json'; if (token) headers.Authorization = `Bearer ${token}`; const response = await fetch(path, { method: options.method || 'GET', headers, body: options.body === undefined ? undefined : JSON.stringify(options.body), cache: 'no-store' }); const data = await response.json().catch(() => ({})); if (!response.ok) throw new Error(typeof data.detail === 'string' ? data.detail : '请求失败'); return data; } export async function ensureLogin() { if (localStorage.getItem('rice_token')) return; let previewId = localStorage.getItem('rice_preview_id'); if (!previewId) { previewId = `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`; localStorage.setItem('rice_preview_id', previewId); } const session = await apiRequest('/api/v1/auth/xhs', { method: 'POST', body: { app_key: 'rice', code: `dev:web-${previewId}` } }); localStorage.setItem('rice_token', session.token); }