///|
/// Analyze several independently produced API errors without retaining their
/// original payloads in the aggregate report.
fn main {
let documents = [
"{\"title\":\"Not Found\",\"status\":404,\"request_id\":\"req-1\"}", "{\"type\":\"https://iana.org/assignments/http-problem-types#date\",\"title\":\"Date Not Acceptable\",\"status\":400}",
"{\"type\":\"https://example.com/problems/quota\",\"title\":\"Quota Exceeded\",\"status\":429,\"retry_after\":30}",
"{\"title\":12,\"status\":500,\"debug\":\"stack trace\"}",
]
let report = @problem.analyze_problem_batch(documents)
println(report.summary_json())
println("decision: " + report.decision().name())
println("quality score: \{report.quality_score()}")
println("parsed documents: \{report.parsed_count()}")
println("parse failures: \{report.parse_failure_count()}")
println("non-fatal diagnostics: \{report.diagnostic_count()}")
println("semantic issues: \{report.semantic_issue_count()}")
println("audit issues: \{report.audit_issue_count()}")
println("registered types: \{report.registered_type_count()}")
println("unregistered types: \{report.unregistered_type_count()}")
println("extension names:")
for frequency in report.extension_frequencies() {
println(" \{frequency.name()}: \{frequency.count()}")
}
println("findings:")
for finding in report.findings() {
println(
" document \{finding.document_index()}: \{finding.kind().name()} — \{finding.context()}",
)
}
}