import axios from 'axios'; import type { OptionsResponse, GradeRequest, GradeResponse, FindAssistantsResponse } from '../types/index'; const API_BASE_URL = import.meta.env.VITE_API_URL || '/api'; const api = axios.create({ baseURL: API_BASE_URL, headers: { 'Content-Type': 'application/json', }, }); // Add password verification interceptor api.interceptors.request.use((config) => { const passwordVerified = sessionStorage.getItem('app_password_verified'); if (passwordVerified === 'true') { config.headers['X-Password-Verified'] = 'true'; } return config; }); export const gradingApi = { /** * 取得前端下拉選單選項 */ async getOptions(): Promise { const response = await api.get('/options'); return response.data; }, /** * 送出批改請求 */ async gradeText(request: GradeRequest): Promise { const response = await api.post('/grade', request); return response.data; }, /** * 驗證密碼 */ async verifyPassword(password: string): Promise<{ success: boolean, message?: string }> { const response = await axios.post(`${API_BASE_URL}/verify-password`, { password }); return response.data; }, /** * 除錯用:查看所有配置的助手 */ async getAssistants(): Promise { const response = await api.get('/assistants'); return response.data; }, /** * 根據條件查找匹配的機器人 */ async findAssistants(params: { language?: string; age_group?: string; category?: string; grading_mode?: string; }): Promise { const response = await api.get('/find-assistants', { params }); return response.data; }, };