|
1 | 1 | // 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' |
3 | 3 |
|
4 | 4 | // 模拟网络延迟 |
5 | 5 | const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)) |
@@ -152,29 +152,76 @@ export class MockApiService { |
152 | 152 | } |
153 | 153 | } |
154 | 154 |
|
155 | | - // 获取告警规则变更记录 - 新的API接口 |
| 155 | + // 获取告警规则变更记录 |
156 | 156 | static async getAlertRuleChangelog(start?: string, limit?: number): Promise<AlertRuleChangelogResponse> { |
157 | | - await delay(300) |
| 157 | + await delay(400) // 模拟网络延迟 |
158 | 158 | console.log(`Mock API: 获取告警规则变更记录 - start: ${start}, limit: ${limit}`) |
159 | | - |
160 | | - // 模拟分页逻辑 |
| 159 | + |
161 | 160 | 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 参数筛选数据(分页逻辑) |
164 | 166 | if (start) { |
165 | 167 | const startTime = new Date(start) |
166 | 168 | items = items.filter(item => new Date(item.editTime) <= startTime) |
167 | 169 | } |
| 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}`) |
168 | 186 |
|
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限制返回数量 |
170 | 204 | if (limit && limit > 0) { |
171 | 205 | items = items.slice(0, limit) |
172 | 206 | } |
173 | 207 |
|
174 | 208 | return { |
175 | 209 | 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}`) |
177 | 222 | } |
| 223 | + |
| 224 | + return alertDetail |
178 | 225 | } |
179 | 226 | } |
180 | 227 |
|
|
0 commit comments