#include "chassis_calibration_service/chassis_calibration_common.hpp"

namespace chassis_calibration_service
{

bool AckermannChassisAlgorithm::run(
  const ChassisCalibrationInput & input,
  ChassisCalibrationOutput & output,
  std::string & failure_reason) const
{
  (void)failure_reason;

  // 阿克曼底盘标定模板：
  // 【本文件负责什么】
  // - 负责阿克曼底盘相关的标定算法实现。
  // - 后续算法工程师应主要修改本文件，不要改 node 层和模板分发层。
  //
  // 【建议优先读取的输入】
  // 1. input.request
  //    - request_id、task_purpose、selected_primitive、straight_line / steering_sweep 等任务参数。
  // 2. input.vehicle_profile / input.chassis_type
  //    - 车辆静态画像、底盘类型、基础结构参数。
  // 3. input.applied_chassis_parameters
  //    - 当前已生效底盘参数，作为本轮优化的初始值或对照基线。
  // 4. input.latest_chassis_telemetry / input.chassis_telemetry_history
  //    - 轮速、舵角、角速度、里程计、电机状态、电流、温度、驱动诊断等。
  // 5. input.latest_external_localization_telemetry / input.external_localization_telemetry_history
  //    - 如果需要真值轨迹、真值航向、真值速度，可从这里读取。
  // 6. input.latest_control_telemetry / input.control_telemetry_history
  //    - 如果需要分析控制输出与底盘响应差异，可结合控制域反馈。
  //
  // 【必写输出】
  // 1. output.response.result.validation_summary
  //    - 写横向误差、航向误差、重复性、曲率误差、模块一致性等摘要指标。
  // 2. output.response.result.estimated_params
  //    - 写本轮求解出的阿克曼底盘参数。
  // 3. output.response.result.suitable_for_commit
  //    - 明确是否建议进入提交环节。
  //
  // 【可选输出】
  // - output.response.result.artifacts
  //   可挂轨迹图、拟合日志、误差统计 csv、调试报告等。
  //
  // 【常见失败原因】
  // - 真值源不可用、车辆未进入可移动状态、有效轨迹长度不足、舵角反馈异常、轮速反馈缺失。
  //
  // 【在这里添加真实算法】
  // - 请在 fill_common_result(...) 之前或之后补充真实求解逻辑。
  // - 当前文件仅提供交付模板，不包含真实标定算法。
  fill_common_result(input, output);
  output.response.result.message = "ackermann chassis template executed.";
  output.response.result.recommended_parameter_version = "ackermann_template_v1";
  return true;
}

}  // namespace chassis_calibration_service
