161 lines
3.8 KiB
JavaScript
161 lines
3.8 KiB
JavaScript
|
|
/**
|
||
|
|
* 统一API服务
|
||
|
|
* 提供所有API调用的统一接口
|
||
|
|
*/
|
||
|
|
|
||
|
|
class ApiService {
|
||
|
|
constructor() {
|
||
|
|
this.baseURL = '';
|
||
|
|
this.defaultTimeout = 30000; // 30秒超时
|
||
|
|
}
|
||
|
|
|
||
|
|
async request(endpoint, options = {}) {
|
||
|
|
const url = `${this.baseURL}${endpoint}`;
|
||
|
|
const config = {
|
||
|
|
headers: {
|
||
|
|
'Content-Type': 'application/json',
|
||
|
|
...options.headers
|
||
|
|
},
|
||
|
|
timeout: options.timeout || this.defaultTimeout,
|
||
|
|
...options
|
||
|
|
};
|
||
|
|
|
||
|
|
try {
|
||
|
|
const response = await fetch(url, config);
|
||
|
|
const data = await response.json();
|
||
|
|
|
||
|
|
if (!response.ok) {
|
||
|
|
throw new Error(data.error || `HTTP ${response.status}: ${response.statusText}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
return data;
|
||
|
|
} catch (error) {
|
||
|
|
console.error(`API请求失败: ${endpoint}`, error);
|
||
|
|
throw error;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 健康检查相关
|
||
|
|
async getHealth() {
|
||
|
|
return this.request('/api/health');
|
||
|
|
}
|
||
|
|
|
||
|
|
// 预警相关
|
||
|
|
async getAlerts() {
|
||
|
|
return this.request('/api/alerts');
|
||
|
|
}
|
||
|
|
|
||
|
|
async createAlert(alertData) {
|
||
|
|
return this.request('/api/alerts', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify(alertData)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async updateAlert(alertId, alertData) {
|
||
|
|
return this.request(`/api/alerts/${alertId}`, {
|
||
|
|
method: 'PUT',
|
||
|
|
body: JSON.stringify(alertData)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async deleteAlert(alertId) {
|
||
|
|
return this.request(`/api/alerts/${alertId}`, {
|
||
|
|
method: 'DELETE'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 规则相关
|
||
|
|
async getRules() {
|
||
|
|
return this.request('/api/rules');
|
||
|
|
}
|
||
|
|
|
||
|
|
async createRule(ruleData) {
|
||
|
|
return this.request('/api/rules', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify(ruleData)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async updateRule(ruleId, ruleData) {
|
||
|
|
return this.request(`/api/rules/${ruleId}`, {
|
||
|
|
method: 'PUT',
|
||
|
|
body: JSON.stringify(ruleData)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async deleteRule(ruleId) {
|
||
|
|
return this.request(`/api/rules/${ruleId}`, {
|
||
|
|
method: 'DELETE'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 监控相关
|
||
|
|
async getMonitorStatus() {
|
||
|
|
return this.request('/api/monitor/status');
|
||
|
|
}
|
||
|
|
|
||
|
|
async startMonitoring() {
|
||
|
|
return this.request('/api/monitor/start', {
|
||
|
|
method: 'POST'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async stopMonitoring() {
|
||
|
|
return this.request('/api/monitor/stop', {
|
||
|
|
method: 'POST'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Agent相关
|
||
|
|
async getAgentStatus() {
|
||
|
|
return this.request('/api/agent/status');
|
||
|
|
}
|
||
|
|
|
||
|
|
async toggleAgent(enabled) {
|
||
|
|
return this.request('/api/agent/toggle', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify({ enabled })
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async getAgentHistory(limit = 50) {
|
||
|
|
return this.request(`/api/agent/action-history?limit=${limit}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 车辆数据相关
|
||
|
|
async getVehicleData(params = {}) {
|
||
|
|
const queryString = new URLSearchParams(params).toString();
|
||
|
|
return this.request(`/api/vehicle/data?${queryString}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
async addVehicleData(data) {
|
||
|
|
return this.request('/api/vehicle/data', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify(data)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 对话相关
|
||
|
|
async createChatSession(data) {
|
||
|
|
return this.request('/api/chat/session', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify(data)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async sendChatMessage(data) {
|
||
|
|
return this.request('/api/chat/message', {
|
||
|
|
method: 'POST',
|
||
|
|
body: JSON.stringify(data)
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async getChatHistory(sessionId) {
|
||
|
|
return this.request(`/api/chat/history/${sessionId}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 创建全局API服务实例
|
||
|
|
const apiService = new ApiService();
|