#include "control_calibration_service/control_calibration_common.hpp"

namespace control_calibration_service
{

bool MpcControlCalibrationAlgorithm::run(
  const ControlCalibrationInput & input,
  ControlCalibrationOutput & output,
  std::string & failure_reason) const
{
  (void)failure_reason;

  // MPC 控制标定模板：
  // 适合轨迹跟踪、联合横纵向预测控制参数整定。
  // 推荐算法工程师重点看：
  // 1. 参考输入：
  //    - input.reference_trajectory：参考轨迹点序列
  //    - input.trajectory_tracking_task：轨迹跟踪任务原始配置
  //    - input.reference_timeout_sec / input.reference_stop_at_end：执行约束
  // 2. 当前控制状态：
  //    - input.active_controller_parameters：当前已生效 MPC 参数
  //    - input.control_internal_diagnostics：后续可接预测窗口代价、约束激活情况等
  // 3. 反馈数据：
  //    - input.control_telemetry_history：横向误差、航向误差、速度误差、控制输出、饱和比
  //    - input.chassis_telemetry_history：执行器与整车运动学反馈
  //    - input.external_localization_telemetry_history：真值轨迹与同步质量
  // 4. 输出位置：
  //    - output.response.result.validation_summary：写跟踪误差、超调、收敛时间、饱和占比
  //    - output.response.result.estimated_parameter_set：写新的 MPC 参数
  //    - output.response.result.recommended_parameter_version：写本轮推荐参数版本号
  fill_common_result(input, output);
  output.response.result.message = "mpc control calibration template executed.";
  output.response.result.recommended_parameter_version = "mpc_template_v1";
  return true;
}

}  // namespace control_calibration_service
