m46012002's picture
Refactor: Continuous conversation, UI improvements, and build fixes
0bf5c85
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<OptionsResponse> {
const response = await api.get<OptionsResponse>('/options');
return response.data;
},
/**
* 送出批改請求
*/
async gradeText(request: GradeRequest): Promise<GradeResponse> {
const response = await api.post<GradeResponse>('/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<any> {
const response = await api.get('/assistants');
return response.data;
},
/**
* 根據條件查找匹配的機器人
*/
async findAssistants(params: {
language?: string;
age_group?: string;
category?: string;
grading_mode?: string;
}): Promise<FindAssistantsResponse> {
const response = await api.get<FindAssistantsResponse>('/find-assistants', { params });
return response.data;
},
};