# 路径时标系统实现计划

## 方案概述
以事件为核心的路径时间标签系统，独立于路径数据结构，支持多套时标配置。

## 核心原则
1. **独立体系** - 时标系统不修改 PathRoute 数据结构，通过 RouteId 关联
2. **多对一** - 一条路径可有多套时标配置（不同车辆/策略）
3. **事件驱动** - 以事件节点为锚点，路段时间只是事件之间的填充
4. **简化计算** - 匀速模型 + 转弯降速

---

## 数据模型

### TimeTagProfile（时标配置）
```csharp
- Id: string (GUID)
- RouteId: string (关联路径ID)
- Name: string (配置名称，如：叉车满载)
- DefaultSpeed: double (默认速度 m/s)
- TurnSpeedRatio: double (转弯速度比例，0.5=半速)
- Events: List<TimeTagEvent> (事件节点列表)
```

### TimeTagEvent（时间事件节点）
```csharp
- Id: string
- ProfileId: string
- PointId: string (关联路径点ID，可选)
- Distance: double (距起点距离，米)
- Type: EventType (事件类型)
- Name: string
- WaitTime: double (等待时间，秒)
- ActionTime: double (动作时间，秒)
- CumulativeTime: double (累计时间，自动计算)
- ArriveSpeed: double? (到达速度限制，可选)
- LeaveSpeed: double? (离开速度限制，可选)
```

### EventType 枚举
- Start: 起点
- Pass: 途经点
- Turn: 转弯（自动识别）
- Wait: 等待
- Load: 装货
- Unload: 卸货
- End: 终点

---

## 数据库表结构

### TimeTagProfiles 表
```sql
CREATE TABLE TimeTagProfiles (
    Id TEXT PRIMARY KEY,
    RouteId TEXT NOT NULL,
    Name TEXT NOT NULL,
    DefaultSpeed REAL DEFAULT 1.0,
    TurnSpeedRatio REAL DEFAULT 0.5,
    CreatedAt TEXT DEFAULT CURRENT_TIMESTAMP
);
```

### TimeTagEvents 表
```sql
CREATE TABLE TimeTagEvents (
    Id TEXT PRIMARY KEY,
    ProfileId TEXT NOT NULL,
    PointId TEXT,
    Distance REAL NOT NULL,
    Type TEXT NOT NULL,
    Name TEXT NOT NULL,
    WaitTime REAL DEFAULT 0,
    ActionTime REAL DEFAULT 0,
    CumulativeTime REAL DEFAULT 0,
    ArriveSpeed REAL,
    LeaveSpeed REAL,
    SortOrder INTEGER NOT NULL,
    
    FOREIGN KEY (ProfileId) REFERENCES TimeTagProfiles(Id) ON DELETE CASCADE
);
```

---

## 实现阶段

### Phase 1: 数据库和基础模型
- [ ] 创建数据库表（TimeTagProfiles, TimeTagEvents）
- [ ] 创建数据模型类（TimeTagProfile, TimeTagEvent, EventType）
- [ ] 添加到 PathDatabase 类
- [ ] 编译验证

### Phase 2: 核心服务
- [ ] 创建 TimeTagCalculator 计算类
- [ ] 创建 TimeTagService 服务类（CRUD + 计算）
- [ ] 集成到 PathPlanningManager
- [ ] 实现自动识别转折点为 Turn 事件
- [ ] 编译验证

### Phase 3: UI
- [ ] 路径列表添加"时标"按钮
- [ ] 创建 TimeTagDialog 对话框
- [ ] 创建 TimeTagViewModel 视图模型
- [ ] 时间轴可视化（简化版）
- [ ] 编译验证

### Phase 4: 导出功能
- [ ] 实现 JSON 导出功能
- [ ] 测试导出数据格式
- [ ] 编译验证

---

## 导出 JSON 格式示例

```json
{
  "routeId": "route_A1",
  "routeName": "主通道运输路线",
  "profileName": "叉车-满载",
  "defaultSpeed": 1.5,
  "turnSpeedRatio": 0.5,
  "totalTime": 145.5,
  "totalDistance": 180.0,
  "events": [
    {
      "index": 0,
      "name": "起点",
      "type": "Start",
      "distance": 0,
      "cumulativeTime": 0,
      "waitTime": 0,
      "actionTime": 5
    },
    {
      "index": 1,
      "name": "走廊转角",
      "type": "Turn",
      "distance": 45.0,
      "cumulativeTime": 35.0,
      "waitTime": 0,
      "actionTime": 3
    },
    {
      "index": 2,
      "name": "装卸点",
      "type": "Load",
      "distance": 120.0,
      "cumulativeTime": 88.0,
      "waitTime": 120,
      "actionTime": 10
    },
    {
      "index": 3,
      "name": "终点",
      "type": "End",
      "distance": 180.0,
      "cumulativeTime": 145.5
    }
  ]
}
```
