跳至正文

个人告警

路由:/alerts。角色:所属用户。范围:当前主流程。依据:当前页面和调用组件(代码基线 67df5ab1,本轮仅修复根元素 hydration 并移除无调用旧 header 插槽)。以下数量是现有读取策略,不是实际业务记录数,也不是容量或服务承诺。

源码入口:page.tsx  · alerts-workspace.tsx  · alert-history.tsx  · alert-presenters.ts  · alert-rule-summary.tsx 。

用户任务与当前操作

作为所属用户,我需要设置可解释的阈值并查看为什么触发或未触发。当前操作围绕下表的数据完成;不从旧表和旧接口的存在反推新增产品需求。页面存在不等于来源、模型、送达或长期运行已通过真实验收。

页面需要的数据

区域/操作实际展示或输入字段展示数量/读取方式是否持久化及最小存储
规则表单/列表name、topic、event(热度指标)、metric、threshold、cooldown、target、enabled、rule_version/topic_rule_version规则列表当前未分页;主题50/页、事件100/页读取选项alert_rules/versions及通知目标
评估历史evaluation id/window_end、状态、测量值、阈值、原因、投递状态每规则最多50条alert_evaluations和notification_deliveries

接口与业务落点

下列为本页业务读取/提交入口。全局会话、头像、站点元信息和共享组件中未在本页触发的导出函数不算新增页面能力。请求类型、响应与错误以生成客户端和后端为准。

页面调用方法和路径请求 → 响应合同实现依据
createAlertPOST /api/alertsAlertRuleInput → AlertRuleView客户端  · 后端 
listAlertHistoryGET /api/alerts/{rule_id}/historylistAlertHistoryParams → AlertEvaluationView[]客户端  · 后端 
listAlertTargetsGET /api/alerts/targets无业务入参 → AlertTargetView[]客户端  · 后端 
listAlertsGET /api/alerts无业务入参 → AlertRuleView[]客户端  · 后端 
listEventsGET /api/eventslistEventsParams → PageViewEventReadView_客户端  · 后端 
listMonitorTopicsGET /api/topicslistMonitorTopicsParams → PageViewMonitorTopicView_客户端  · 后端 
updateAlertPUT /api/alerts/{rule_id}updateAlertParams, AlertRuleInput → AlertRuleView客户端  · 后端 

数据落点:alert_rules、alert_rule_versions、alert_evaluations、notification_targets、notification_deliveries。这是当前依赖定位,不代表这些表均为重新设计时必须新建;详细字段/键/关系及保留原因见页面数据库设计。

收敛与替换

页面没有已读/未读操作,撤掉alert_read_states及read_operations;触发不等于已发送。

实现时先复用上述合同。确有缺口须描述具体控件、输入、输出、当前失败和最小修复,不能直接把历史扩展方案列为前置。公开分发、付费供应商、海外新来源与 Flutter 继续受冻结范围和其他生效决策约束。

验收与非功能要求

  • 主路径:目标失效拒绝保存;同窗口不重复通知;规则未触发、跳过和发送失败分别解释。
  • 数据边界:上表数量、字段和统计范围要能从响应核对;未知、未分析、无权限和真实零值不同。筛选、页签与选择不创建持久业务副本。
  • 状态:有远程读取的区域分别验证正常、零数据、加载、失败和撤权;静态说明的业务空态/无权限写不适用,不伪造验收。
  • 写入:有保存/运行/发布时保留可恢复输入,版本冲突先重读;请求结果未知按现有接口查询或复用原幂等键,不新增全局操作账本。
  • 交互:1440px与390px下主动作可见;Tab/Enter/Escape和适用的方向键可操作,弹层关闭返回触发点。凭据只按现有认证流程传递,不进入日志/URL/本机持久存储。

测量和跨页场景统一见非功能要求、验收场景。这里只定义判据,执行进度仍只在 BACKLOG。

原始 Markdown