///|
pub type RobotQualityReportId = String
///|
pub(all) struct RobotQualityReport {
report_id : RobotQualityReportId
episode_id : RobotEpisodeId
status : @data_core.ValidationStatus
generated_at_ms : Int64
accepted_frame_count : Int
rejected_frame_count : Int
findings : Array[@data_core.ValidationFinding]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub fn robot_quality_report(
report_id : RobotQualityReportId,
episode_id : RobotEpisodeId,
status : @data_core.ValidationStatus,
generated_at_ms : Int64,
accepted_frame_count : Int,
rejected_frame_count : Int,
findings? : Array[@data_core.ValidationFinding] = [],
) -> RobotQualityReport {
{
report_id,
episode_id,
status,
generated_at_ms,
accepted_frame_count,
rejected_frame_count,
findings,
}
}
///|
pub fn robot_quality_validation_report(
root : String,
report : RobotQualityReport,
) -> @data_core.ValidationReport {
@data_core.validation_report(
report.report_id,
root,
report.generated_at_ms,
report.status,
findings=report.findings,
)
}
///|
pub fn robot_quality_report_ref(
report : RobotQualityReport,
payload : RobotPayloadRef,
) -> @data_core.ArtifactRef {
@data_core.artifact_ref(
"validation-report",
report.report_id,
payload.path,
status=match report.status {
@data_core.ValidationStatus::BlockedValidation =>
@data_core.DataStatus::Blocked
@data_core.ValidationStatus::Warning => @data_core.DataStatus::Raw
@data_core.ValidationStatus::Passed => @data_core.DataStatus::Verified
},
summary="robot episode quality report for \{report.episode_id}",
)
}