Skip to content

Commit ee48c71

Browse files
authored
Merge pull request #57 from aice030/feat/55
Feat/55(View&Controller): 实现告警记录和AI处理记录界面及其api
2 parents 6f5e12f + 9dbac2a commit ee48c71

File tree

9 files changed

+1701
-6082
lines changed

9 files changed

+1701
-6082
lines changed

client/package-lock.json

Lines changed: 0 additions & 5665 deletions
This file was deleted.

client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"axios": "^1.11.0",
2020
"echarts": "^5.6.0",
2121
"element-plus": "^2.11.2",
22+
"marked": "^16.2.1",
2223
"pinia": "^3.0.3",
2324
"vue": "^3.5.18",
2425
"vue-echarts": "^7.0.3",

client/src/api/index.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,24 @@ export const apiService = {
102102

103103
// 获取告警规则变更记录
104104
getAlertRuleChangelog: (start?: string, limit?: number) => {
105-
const params: { start?: string; limit?: number } = {}
105+
const params: any = {}
106106
if (start) params.start = start
107107
if (limit) params.limit = limit
108108
return api.get('/v1/changelog/alertrules', { params })
109+
},
110+
111+
// 获取告警列表
112+
getAlerts: (start?: string, limit?: number, state?: string) => {
113+
const params: any = {}
114+
if (start) params.start = start
115+
if (limit) params.limit = limit
116+
if (state) params.state = state
117+
return api.get('/v1/issues', { params })
118+
},
119+
120+
// 获取告警详情
121+
getAlertDetail: (issueID: string) => {
122+
return api.get(`/v1/issues/${issueID}`)
109123
}
110124
}
111125

client/src/mock/api.ts

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Mock API服务
2-
import { mockServicesData, mockServiceDetails, mockVersionOptions, mockScheduledReleases, mockServiceActiveVersions, mockServiceMetrics, mockAvailableVersions, mockDeploymentPlans, mockMetricsData, mockDeploymentChangelog, mockAlertRuleChangelog, type ServicesResponse, type ServiceDetail, type ServiceActiveVersionsResponse, type ServiceMetricsResponse, type AvailableVersionsResponse, type DeploymentPlansResponse, type MetricsResponse, type DeploymentChangelogResponse, type AlertRuleChangelogResponse } from './services'
2+
import { mockServicesData, mockServiceDetails, mockVersionOptions, mockScheduledReleases, mockServiceActiveVersions, mockServiceMetrics, mockAvailableVersions, mockDeploymentPlans, mockMetricsData, mockDeploymentChangelog, mockAlertRuleChangelog, mockAlertsData, mockAlertDetails, type ServicesResponse, type ServiceDetail, type ServiceActiveVersionsResponse, type ServiceMetricsResponse, type AvailableVersionsResponse, type DeploymentPlansResponse, type MetricsResponse, type DeploymentChangelogResponse, type AlertRuleChangelogResponse, type AlertsResponse, type AlertDetail } from './services'
33

44
// 模拟网络延迟
55
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))
@@ -152,29 +152,76 @@ export class MockApiService {
152152
}
153153
}
154154

155-
// 获取告警规则变更记录 - 新的API接口
155+
// 获取告警规则变更记录
156156
static async getAlertRuleChangelog(start?: string, limit?: number): Promise<AlertRuleChangelogResponse> {
157-
await delay(300)
157+
await delay(400) // 模拟网络延迟
158158
console.log(`Mock API: 获取告警规则变更记录 - start: ${start}, limit: ${limit}`)
159-
160-
// 模拟分页逻辑
159+
161160
let items = [...mockAlertRuleChangelog.items]
162-
163-
// 如果有start参数,模拟从该时间点开始的数据
161+
162+
// 1. 先按时间排序(从新到旧)
163+
items.sort((a, b) => new Date(b.editTime).getTime() - new Date(a.editTime).getTime())
164+
165+
// 2. 根据 start 参数筛选数据(分页逻辑)
164166
if (start) {
165167
const startTime = new Date(start)
166168
items = items.filter(item => new Date(item.editTime) <= startTime)
167169
}
170+
171+
// 3. 根据limit限制返回数量
172+
if (limit && limit > 0) {
173+
items = items.slice(0, limit)
174+
}
175+
176+
return {
177+
items,
178+
next: items.length > 0 ? items[items.length - 1].editTime : undefined
179+
}
180+
}
181+
182+
// 获取告警列表
183+
static async getAlerts(start?: string, limit: number = 10, state?: string): Promise<AlertsResponse> {
184+
await delay(400) // 模拟网络延迟
185+
console.log(`Mock API: 获取告警列表 - start: ${start}, limit: ${limit}, state: ${state}`)
168186

169-
// 如果有limit参数,限制返回数量
187+
let items = [...mockAlertsData.items]
188+
189+
// 1. 先按时间排序(从新到旧)
190+
items.sort((a, b) => new Date(b.alertSince).getTime() - new Date(a.alertSince).getTime())
191+
192+
// 2. 根据 start 参数筛选数据(分页逻辑)
193+
if (start) {
194+
const startTime = new Date(start)
195+
items = items.filter(alert => new Date(alert.alertSince) <= startTime)
196+
}
197+
198+
// 3. 根据state参数过滤数据
199+
if (state) {
200+
items = items.filter(alert => alert.state === state)
201+
}
202+
203+
// 4. 根据limit限制返回数量
170204
if (limit && limit > 0) {
171205
items = items.slice(0, limit)
172206
}
173207

174208
return {
175209
items,
176-
next: items.length > 0 ? items[items.length - 1].editTime : undefined
210+
next: items.length > 0 ? items[items.length - 1].alertSince : ''
211+
}
212+
}
213+
214+
// 获取告警详情
215+
static async getAlertDetail(issueID: string): Promise<AlertDetail> {
216+
await delay(300) // 模拟网络延迟
217+
console.log(`Mock API: 获取告警详情 - issueID: ${issueID}`)
218+
219+
const alertDetail = mockAlertDetails[issueID]
220+
if (!alertDetail) {
221+
throw new Error(`告警详情不存在: ${issueID}`)
177222
}
223+
224+
return alertDetail
178225
}
179226
}
180227

0 commit comments

Comments
 (0)