# 标定系统架构对照图

```mermaid
flowchart LR
  subgraph NOW[当前实现]
    UI1[UI / 上层系统] --> ORCH1[workshop_orchestrator_v2\n总控编排器]
    ORCH1 --> PLAN1[PlanBuilder / PrecheckRunner / ReportBuilder]
    ORCH1 --> GW1[Gateway Clients]
    GW1 --> EXT1[external_localization_service\n最小 stub]
    GW1 --> CHA1[chassis_calibration_service\n最小 stub]
    GW1 --> CON1[control_calibration_service\n最小 stub]
    GW1 --> SEN1[sensor_calibration_service\n最小 stub]
    ORCH1 --> REP1[get_report]
  end

  subgraph FUTURE[未来算法接入]
    UI2[UI / 上层系统] --> ORCH2[workshop_orchestrator_v2\n总控编排器]
    ORCH2 --> PLAN2[PlanBuilder / PrecheckRunner / ReportBuilder]
    ORCH2 --> GW2[Gateway Clients]
    GW2 --> EXT2[external_localization_service\nROS 接口层]
    GW2 --> CHA2[chassis_calibration_service\nROS 接口层]
    GW2 --> CON2[control_calibration_service\nROS 接口层]
    GW2 --> SEN2[sensor_calibration_service\nROS 接口层]
    EXT2 --> EXTALG[外部真值校核算法]
    CHA2 --> CHAALG[底盘标定算法]
    CON2 --> CONALG[运控评估算法]
    SEN2 --> SENALG[传感器标定算法]
    EXTALG --> EXT2
    CHAALG --> CHA2
    CONALG --> CON2
    SENALG --> SEN2
    ORCH2 --> REP2[get_report]
  end

  classDef core fill:#dbeafe,stroke:#2563eb,color:#1e3a8a;
  classDef stub fill:#fef3c7,stroke:#d97706,color:#92400e;
  classDef algo fill:#d1fae5,stroke:#059669,color:#064e3b;

  class ORCH1,PLAN1,GW1,REP1,ORCH2,PLAN2,GW2,REP2 core;
  class EXT1,CHA1,CON1,SEN1 stub;
  class EXT2,CHA2,CON2,SEN2 algo;
  class EXTALG,CHAALG,CONALG,SENALG algo;
```

## 读图方式

- **左边当前实现**：专项包先用最小 stub 跑通流程。
- **右边未来接入**：专项包保留 ROS 接口，内部替换成真实算法。
- **总控不变**：orchestrator 始终只负责编排，不直接承载算法。
