feat(platform): frame notifications as customer closure

This commit is contained in:
lingniu
2026-07-05 20:45:22 +08:00
parent 1e4a11d806
commit 2b246f414e
4 changed files with 15 additions and 14 deletions

View File

@@ -600,7 +600,7 @@ function notificationHandoffText({
...issueLines,
'',
`告警事件:${qualityShareURL()}`,
`通知规则${appURL(buildAppHash({ page: 'notification-rules' }))}`,
`通知闭环${appURL(buildAppHash({ page: 'notification-rules' }))}`,
`运维质量:${appURL(buildAppHash({ page: 'ops-quality' }))}`
].join('\n');
}
@@ -654,7 +654,7 @@ function alertBusinessImpactText({
`容量风险:${storageOk ? '存储可写' : '存储异常'}Kafka Lag ${formatLag(health?.kafkaLag)};容量发现 ${capacityCount.toLocaleString()}`,
`建议动作:${severity === '高风险' ? '立即通知责任团队并按 P0/P1 队列闭环' : severity === '需关注' ? '纳入当日治理,持续观察来源覆盖和字段完整性' : '保持监控'}`,
`告警事件:${qualityShareURL()}`,
`通知规则${appURL(buildAppHash({ page: 'notification-rules' }))}`,
`通知闭环${appURL(buildAppHash({ page: 'notification-rules' }))}`,
`运维质量:${appURL(buildAppHash({ page: 'ops-quality' }))}`
].join('\n');
}
@@ -715,7 +715,7 @@ function alertCustomerDecisionText({
`告警事件:${qualityShareURL()}`,
`实时监控:${appURL(buildAppHash({ page: 'realtime', keyword: focusLookup?.key || filters.keyword || '', protocol: focusIssue?.protocol || filters.protocol }))}`,
`轨迹回放:${appURL(buildAppHash({ page: 'history', keyword: focusLookup?.key || filters.keyword || '', protocol: focusIssue?.protocol || filters.protocol }))}`,
`通知规则${appURL(buildAppHash({ page: 'notification-rules' }))}`
`通知闭环${appURL(buildAppHash({ page: 'notification-rules' }))}`
].join('\n');
}
@@ -869,7 +869,7 @@ export function Quality({
value: primaryPolicy?.target || '待配置',
detail: primaryPolicy ? `${primaryPolicy.name} / ${primaryPolicy.channel}` : '缺少通知策略,建议先配置责任团队。',
color: primaryPolicy ? 'blue' as const : 'orange' as const,
action: '通知规则',
action: '通知闭环',
onClick: () => onOpenNotificationRules?.()
},
{
@@ -1226,7 +1226,7 @@ export function Quality({
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyAlertCustomerDecision}></Button>
<Button size="small" disabled={priorityRows.length === 0} onClick={copyPriorityDigest}></Button>
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
</Space>
</div>
<div className="vp-alert-decision-grid">
@@ -1310,7 +1310,7 @@ export function Quality({
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyNotificationHandoff}></Button>
<Button size="small" onClick={copyPolicyRunbook}> SLA </Button>
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
</Space>
</div>
<div className="vp-alert-sla-grid">
@@ -1350,7 +1350,7 @@ export function Quality({
<Space wrap>
<Button size="small" theme="solid" type="primary" onClick={copyNotificationHandoff}></Button>
<Button size="small" onClick={copyPolicyRunbook}></Button>
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
</Space>
</div>
<div className="vp-alert-channel-grid">
@@ -1426,7 +1426,7 @@ export function Quality({
<Space wrap>
<Button size="small" theme="solid" type="primary" disabled={priorityRows.length === 0} onClick={copyNotificationHandoff}></Button>
<Button size="small" onClick={copyBusinessImpact}></Button>
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}
</Space>
</div>
<div className="vp-alert-center-grid">
@@ -1757,7 +1757,7 @@ export function Quality({
/>
</Card>
<div className="vp-alert-ops-grid">
<Card bordered title={<Space><span></span>{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}</Space>}>
<Card bordered title={<Space><span></span>{onOpenNotificationRules ? <Button size="small" onClick={onOpenNotificationRules}></Button> : null}</Space>}>
<Table<AlertRuleRow>
pagination={false}
dataSource={rules}