#include "sensor_calibration_service/sensor_calibration_common.hpp"

namespace sensor_calibration_service
{

bool FrontCameraIntrinsicCalibrationAlgorithm::run(
  const SensorCalibrationInput & input,
  SensorCalibrationOutput & output,
  std::string & failure_reason) const
{
  (void)failure_reason;

  // 前视相机内参标定模板：
  // 【本文件负责什么】
  // - 负责前视相机内参标定算法实现。
  // - 后续算法工程师应主要修改本文件，不要改 node 层和模板分发层。
  //
  // 【建议优先读取的输入】
  // 1. input.camera_intrinsic_task / input.required_image_count / input.reference_board_id
  //    - 标定板类型、目标图像数、采集约束和超时信息。
  // 2. input.target_sensor_id / input.target_sensor_type
  //    - 当前需要求解内参的目标传感器。
  // 3. input.latest_sensor_telemetry / input.sensor_telemetry_history
  //    - 采样进度、检测状态、质量评分、时间同步质量等。
  // 4. input.capture_quality_diagnostics / input.storage_diagnostics
  //    - 图像模糊、角点不足、落盘失败、目录权限等诊断信息。
  // 5. input.external_localization_* / input.chassis_*
  //    - 如果采集过程需要车辆静止判断或真值辅助，可读取这些跨域反馈。
  fill_common_result(input, output);
  output.response.result.message = "front camera intrinsic calibration template executed.";
  output.response.result.recommended_parameter_version = "front_camera_intrinsic_template_v1";
  return true;
}

bool DownwardCameraIntrinsicCalibrationAlgorithm::run(
  const SensorCalibrationInput & input,
  SensorCalibrationOutput & output,
  std::string & failure_reason) const
{
  (void)failure_reason;

  // 下视相机内参标定模板：
  // 典型场景是地面标靶、货叉区域或工作面观测，相比前视更关注近距离畸变与俯视覆盖。
  fill_common_result(input, output);
  output.response.result.message = "downward camera intrinsic calibration template executed.";
  output.response.result.recommended_parameter_version = "downward_camera_intrinsic_template_v1";
  return true;
}

}  // namespace sensor_calibration_service
