## 2026-03-31 日志

### 用户问题解答
- 解释了 `isChange_flag_firstBackDate` 字段的作用：这是一个时间轴和 WebSocket 数据流同步的状态标志
  - 字段含义：首次返回数据变化标志
  - 用途：协调用户时间选择和数据更新的时序，防止竞态条件
  - 工作机制：拖动时间轴时设为 false，WebSocket 返回数据时设为 true，只有当为 true 时才允许根据时间变化更新子系统数据

- 解释了 `selectedEndTime` 监听的作用：
  - 时间驱动的数据分发中心，连接用户操作、WebSocket 数据流、UE 场景和子系统图表
  - 主要功能：更新子系统数据、通知 UE 场景、控制自动播放、同步全局状态

- 分析了 `callBackCycleTimePointFn` 一秒发两次的问题：
  - 原因：`selectedEndTime` 在短时间内被更新两次，可能是自动播放逻辑中的双重更新
  - 解决方案：添加防抖/节流控制，确保一秒内只发送一次

- 查找了 `gridInfoList` 的更新位置：
  - 主要更新位置：`header/index.vue` 中的 `getGridInfoListData()` 函数
  - 触发时机：页面加载时 (`onMounted`) 获取一次
  - 数据用途：热力图组件中合并和显示卫星格网数据

- 查找了 `satelliteData` 通过 WS 赋值的流程：
  - 数据流：WebSocket → footer/timers.vue → Pinia Store → lefts/index.vue 监听器 → satelliteData
  - 关键赋值位置：lefts/index.vue 第858行（历史模式）和第914行（实时模式）
  - 转换函数：`wssTransformSatelliteData()` 将后端数据转换为前端表格格式

- 查找了设置开始时间和结束时间的代码位置：
  - 主要设置函数：`handleDateRangeChange()`（用户选择日期范围）
  - 核心计算函数：`updateSelectedTimes()`（根据滑块百分比计算选中时间）
  - 时间变量：`startDateTime`/`endDateTime`（总范围），`selectedStartTime`/`selectedEndTime`（选中范围）
  - 数据流向：用户选择 → 更新 store → 计算选中时间 → 触发监听更新界面

### 之前的 CSS 修复
- 修复了 `screenConfigeDialog.vue` 中的背景图语法错误
- 修正了 `index.vue` 中 el-dialog 的背景色和宽度设置
- 解决了 WebUI 页面透明问题（UE 地球场景透出）

- 修复了时间轴固定时间被覆盖的 Bug：
  - 根本原因：`footer/component/timers.vue` 第756行有一个 `setInterval`（每1秒执行），启动时立刻调用 `autoHandleDateRangeChange`，强制将时间重置为"当前时间往前推24小时"
  - 修复方案：注释掉该初始 `setInterval`（保留 `watch` 里受 `isDateRangeNotEmpty` 控制的部分）
  - 同时修复了 `updateTimeline()` 中 `endHandlePercent.value = 0` 的 Bug，改为 `100`

- 修复了时间轴刻度标签多显示1天的 Bug：
  - 根本原因：`timeMarkers` 计算中每个 label 都多加了 `.add(1, 'day')`
  - 修复方案：去掉 label 生成时的 `.add(1, 'day')`

### 关键发现
- 项目时间轴组件使用 WebSocket 与后端通信，数据流同步机制较为复杂
- `isChange_flag_firstBackDate` 是实现数据时序控制的核心标志之一
- 项目有复杂的 UE 和 WebUI 集成机制，涉及时间同步和数据分发
- 左侧卫星数据表格通过 WebSocket 实时更新，数据流经过多个组件传递
- **时间轴有自动实时滚动机制**：通过 `autoUpdateDateRange` setInterval 每秒更新一次，正常模式下应注释掉初始定时器，用 `isDateRangeNotEmpty` watch 控制实时/历史模式切换