Skip to content

Commit 128b919

Browse files
committed
调整字段不一致的接口字段定义、补充api、database文档描述
1 parent 3fbaada commit 128b919

File tree

4 files changed

+44
-17
lines changed

4 files changed

+44
-17
lines changed

client/src/mock/services.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,7 +1274,7 @@ export interface AlertsResponse {
12741274

12751275
// 告警评论
12761276
export interface AlertComment {
1277-
createAt: string
1277+
createdAt: string
12781278
content: string
12791279
}
12801280

@@ -1397,7 +1397,7 @@ export const mockAlertDetails: Record<string, AlertDetail> = {
13971397
alertSince: '2025-09-01T19:14:12.382331146Z',
13981398
comments: [
13991399
{
1400-
createAt: '2025-09-01T19:15:00Z',
1400+
createdAt: '2025-09-01T19:15:00Z',
14011401
content: `## AI分析结果
14021402
14031403
**问题类型**: 发版本导致的问题
@@ -1451,7 +1451,7 @@ export const mockAlertDetails: Record<string, AlertDetail> = {
14511451
alertSince: '2025-09-01T20:10:15.123456789Z',
14521452
comments: [
14531453
{
1454-
createAt: '2025-09-01T20:11:00Z',
1454+
createdAt: '2025-09-01T20:11:00Z',
14551455
content: `## AI分析结果
14561456
14571457
**问题类型**: 严重性能问题
@@ -1501,7 +1501,7 @@ export const mockAlertDetails: Record<string, AlertDetail> = {
15011501
alertSince: '2025-09-01T18:30:00.000000000Z',
15021502
comments: [
15031503
{
1504-
createAt: '2025-09-01T18:35:00Z',
1504+
createdAt: '2025-09-01T18:35:00Z',
15051505
content: `## AI分析结果
15061506
15071507
**问题类型**: 消息队列积压
@@ -1551,7 +1551,7 @@ export const mockAlertDetails: Record<string, AlertDetail> = {
15511551
alertSince: '2025-09-01T21:00:00.000000000Z',
15521552
comments: [
15531553
{
1554-
createAt: '2025-09-01T21:01:00Z',
1554+
createdAt: '2025-09-01T21:01:00Z',
15551555
content: `## AI分析结果
15561556
15571557
**问题类型**: 资源使用率告警
@@ -1602,7 +1602,7 @@ export const mockAlertDetails: Record<string, AlertDetail> = {
16021602
alertSince: '2025-09-01T17:20:00.000000000Z',
16031603
comments: [
16041604
{
1605-
createAt: '2025-09-01T17:25:00Z',
1605+
createdAt: '2025-09-01T17:25:00Z',
16061606
content: `## AI分析结果
16071607
16081608
**问题类型**: 服务健康检查失败

client/src/views/AlertsView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
<div class="result-header">
155155
<el-icon class="brain-icon"><InfoFilled /></el-icon>
156156
<span class="result-title">AI分析结果</span>
157-
<span class="result-time">{{ formatRelativeTime(comment.createAt) }}</span>
157+
<span class="result-time">{{ formatRelativeTime(comment.createdAt) }}</span>
158158
</div>
159159
<div class="result-content">
160160
<div class="markdown-content" v-html="renderMarkdown(comment.content)"></div>

docs/alerting/api.md

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ GET /v1/issues?start={start}&limit={limit}[&state={state}]
3333

3434
| 参数名 | 类型 | 必填 | 说明 |
3535
|--------|------|------|------|
36-
| start | string | | 分页起始位置标识 |
36+
| start | string | | 游标。第一页可不传或传空;翻页使用上次响应的 `next` |
3737
| limit | integer || 每页返回数量,建议范围:1-100 |
3838
| state | string || 问题状态筛选:`Open``Closed` |
3939

40+
分页说明:服务采用基于游标(cursor)的分页。首次请求建议省略 `start`;当返回结果较多时,响应体会包含 `next` 字段,表示下一页的游标。继续翻页时,将该 `next` 作为 `start` 传回。
41+
4042
**响应示例:**
4143
```json
4244
{
@@ -95,15 +97,15 @@ GET /v1/issues/{issueID}
9597
"alertSince": "2025-05-05T11:00:00.000Z",
9698
"comments": [
9799
{
98-
"createAt": "2025-05-05T11:00:30.000Z",
100+
"createdAt": "2025-05-05T11:00:30.000Z",
99101
"content": "## 自动分析\n\n检测到 S3 API 响应时间异常,可能原因:\n- 后端存储负载过高\n- 网络延迟增加\n\n## 建议处理\n1. 检查存储节点状态\n2. 分析网络监控数据"
100102
},
101103
{
102-
"createAt": "2025-05-05T11:05:00.000Z",
104+
"createdAt": "2025-05-05T11:05:00.000Z",
103105
"content": "## 自动治愈开始\n\n执行治愈策略:重启相关服务实例"
104106
},
105107
{
106-
"createAt": "2025-05-05T11:15:00.000Z",
108+
"createdAt": "2025-05-05T11:15:00.000Z",
107109
"content": "## 问题已解决\n\n响应时间恢复正常,告警自动关闭"
108110
}
109111
]
@@ -123,9 +125,9 @@ GET /v1/issues/{issueID}
123125
| 字段名 | 类型 | 说明 |
124126
|--------|------|------|
125127
| id | string | 告警问题唯一标识 |
126-
| state | string | 问题状态`Open``Closed` |
128+
| state | string | 告警工单的生命周期状态状态`Open``Closed` |
127129
| level | string | 告警等级:`P0``P1``P2``Warning` |
128-
| alertState | string | 处理状态`Restored``AutoRestored``InProcessing` |
130+
| alertState | string | 告警本身的实时状态`Restored``AutoRestored``InProcessing` |
129131
| title | string | 告警标题描述 |
130132
| labels | Label[] | 标签数组 |
131133
| alertSince | string | 告警发生时间(ISO 8601格式) |
@@ -142,9 +144,20 @@ GET /v1/issues/{issueID}
142144

143145
| 字段名 | 类型 | 说明 |
144146
|--------|------|------|
145-
| createAt | string | 评论创建时间(ISO 8601格式) |
147+
| createdAt | string | 评论创建时间(ISO 8601格式) |
146148
| content | string | 评论内容(Markdown格式) |
147149

150+
### 状态语义与映射
151+
152+
- **state**:工单生命周期状态,取值:`Open``Closed`
153+
- **alertState**:告警实时状态,取值:`InProcessing``Restored``AutoRestored`
154+
155+
典型关系与约定:
156+
-`state = Open` 时,通常表示仍存在未恢复的相关告警,`alertState` 多为 `InProcessing`
157+
-`state = Closed` 时,通常表示所有相关告警已恢复,`alertState` 多为 `Restored``AutoRestored`(自动恢复)。
158+
159+
注意:`alertState` 反映的是告警流的当前快照,而 `state` 管理的是问题工单的生命周期。二者并非强绑定,边界时刻可能出现 `state = Open` 但部分告警已恢复的情况。
160+
148161
## 错误响应
149162

150163
所有接口在出错时返回统一的错误格式:
@@ -178,7 +191,12 @@ GET /v1/issues/{issueID}
178191

179192
```bash
180193
# 获取告警列表
181-
curl -X GET "https://api.example.com/v1/issues?start=0&limit=10&state=Open" \
194+
curl -X GET "https://api.example.com/v1/issues?limit=10&state=Open" \
195+
-H "Authorization: Bearer YOUR_TOKEN" \
196+
-H "Content-Type: application/json"
197+
198+
# 获取第二页(使用上一页响应中的 next 作为 start)
199+
curl -X GET "https://api.example.com/v1/issues?start=c_abcdef12345&limit=10&state=Open" \
182200
-H "Authorization: Bearer YOUR_TOKEN" \
183201
-H "Content-Type: application/json"
184202

@@ -192,14 +210,23 @@ curl -X GET "https://api.example.com/v1/issues/issue_20250505_001" \
192210

193211
```javascript
194212
// 获取告警列表
195-
const response = await fetch('/v1/issues?start=0&limit=10', {
213+
const response = await fetch('/v1/issues?limit=10', {
196214
headers: {
197215
'Authorization': 'Bearer ' + token,
198216
'Content-Type': 'application/json'
199217
}
200218
});
201219
const data = await response.json();
202220

221+
// 获取第二页(将上一页的 next 作为 start 传回)
222+
const nextResponse = await fetch(`/v1/issues?start=${data.next}&limit=10`, {
223+
headers: {
224+
'Authorization': 'Bearer ' + token,
225+
'Content-Type': 'application/json'
226+
}
227+
});
228+
const nextPage = await nextResponse.json();
229+
203230
// 获取告警详情
204231
const detailResponse = await fetch(`/v1/issues/${issueId}`, {
205232
headers: {

docs/alerting/database-design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
| 字段名 | 类型 | 说明 |
7777
|--------|------|------|
7878
| id | varchar(255) PK | 规则 ID(可与 K8s 资源 ID 对应或做映射) |
79-
| name | varchar(255) | 规则名称 |
79+
| name | varchar(255) | 规则名称,表达式可读的名称 |
8080
| scopes | varchar(255) | 作用域,例:"services:svc1,svc2" |
8181
| expr | text | 规则表达式(可含占位符) |
8282

0 commit comments

Comments
 (0)