1. 页面概览

时间轴是 LightGotham 的事件时间序列分析页,路由 /gotham/timeline,对应源码 action/web/src/views/GothamTimelinePage.vue。页面围绕事件(Event)提供四块能力:时间范围查询(start/end/type → /timeline/events/range,事件列表)、时间桶聚合(day/week/month → /timeline/aggregate,柱状图)、新增事件POST /timeline/events)、时序分析增强(预测/周期/对比三个 Tab,ECharts 渲染)。

事件类型枚举 incident / movement / meeting / transaction / registration,严重度枚举 low / medium / high / critical(另有 none 兜底徽标)。一句话总结:时间轴是"事件查询 + 时间桶统计 + 时序算法"的事件情报分析台。

2. 访问入口

3. 界面布局

+-------------------------------------------------------------+
| 页头:Gotham 时间轴  [刷新查询]   alert                       |
+-------------------------------------------------------------+
| 时间范围查询(card):开始日期 至 结束日期 类型▾ [查询]         |
|   时间桶聚合:按日|按周|按月                                   |
|   柱状图(桶高按最大计数归一化)+ 桶计数 + 桶标签(旋转-30°)     |
+-------------------------------------------------------------+
| 新增事件(card):标题* 时间* 类型 严重度 位置 关联实体 描述     |
|                 属性JSON [新增事件]                           |
+-------------------------------------------------------------+
| 事件列表(card):时间|标题|类型|严重度|位置|关联实体           |
+-------------------------------------------------------------+
| 时序分析(card)Tab:[预测][周期][对比]                        |
|   预测→实际/MA/SES 折线;周期→自相关柱状图+周期表;对比→多实体折线|
+-------------------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新查询 / 查询按钮时间范围查询GET /timeline/events/range 拉事件列表并连带刷新聚合
类型下拉时间范围查询「全部类型」或 eventTypes 枚举,作为 range/aggregate 的 type
时间桶切换时间桶聚合「按日 / 按周 / 按月」(默认 week),切换即 doAggregate
新增事件表单新增事件标题*(如 玄武集团高管会晤)、时间*、类型、严重度(low/medium/high/critical)、位置、关联实体(entity_id)、描述、属性 JSON
预测 Tab时序分析类型 + 桶 + MA 窗口(默认 3)+ 预测期(默认 5),GET /timeline/forecast 画三线图
周期 Tab时序分析类型 + 「检测周期」,GET /timeline/periods(bucket 固定 day)画自相关图与周期表
对比 Tab时序分析实体 ID 逗号分隔(默认 graph:org:xuanwu,graph:org:tianhe)+ 桶,「对比」画多实体折线

5. 后端关联

API 客户端gothamClient.jsaxios.create({ baseURL: '/gotham-api/v1', timeout: 30000 });请求拦截器注入 Bearer token,响应 401 自动 refresh 重放。

端点表

方法路径用途
GET/timeline/events/range时间范围查询,params start/end/type/limit
GET/timeline/aggregate时间桶聚合,params start/end/bucket/type
POST/timeline/events新增事件 {title, description, event_time, event_type, severity, location, entity_id, properties}
GET/timeline/forecast趋势预测,params event_type/bucket/window/horizon,返回 {time, actual, ma, ses}
GET/timeline/periods周期检测,params event_type/bucket=day,返回 {period_days, correlation}
GET/timeline/compare多实体对比,params entity_ids/bucket,返回 {entity_id, points: [{time, count}]}

关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:点「查询」提示「请填写起止时间」

现象:未出列表即被前端拦截。

原因rangeForm.startend 为空。

处理:补齐起止日期重试;默认已预填 2026-07-012026-08-31

问题 2:预测/对比图表空白提示「暂无预测数据」

现象:接口 200 但 data 为空。

原因:该事件类型无历史事件,或对比实体无数据。

处理:先做时间范围查询确认有事件,再换有数据的事件类型/实体 ID。

问题 3:时间桶柱状图不刷新或报「聚合查询失败」

现象:切桶后柱子不变或红色 alert。

原因doAggregate 复用 rangeForm 起止为空时报错;或接口异常。

处理:先成功执行一次「查询」再切桶;查看 Network 中 /gotham-api/v1/timeline/aggregate 响应。

问题 4:新增事件后列表没立刻出现

现象:提示「事件创建成功(id=N)」但列表仍旧。

原因:创建成功后 doRange() 重查,若重查失败或事件时间超出查询范围则不显示。

处理:确认 event_time 在 start/end 范围内;或点「刷新查询」。

8. 已知缺陷与边界

说明
列表 limit 截断事件列表固定 limit=200;后端不支持 offset,暂无翻页方案
默认时间范围写死初始 start/end 固定 2026-07-01 ~ 2026-08-31
时区偏移风险datetime-local 本地时间转 ISO,跨时区查看有偏移
周期检测固定按日doPeriods 硬编码 bucket=day,无桶选择
聚合柱状图无缩放桶多时横向滚动,无数据缩放交互

注:事件编辑/删除 UI 已于 2026-09-06 修复(行内编辑/删除,调用后端 PUT/DELETE)。