use serde::Serialize;
#[derive(Debug, Clone, Serialize, PartialEq)]
#[serde(tag = "status", content = "evidence")]
#[serde(rename_all = "snake_case")]
pub enum AuditStatus {
Pass,
Warn(String),
Fail(String),
OptOut(String),
NotApplicable(String),
Skip(String),
Error(String),
}
#[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq, Default)]
#[serde(rename_all = "snake_case")]
pub enum Confidence {
#[default]
High,
Medium,
#[allow(dead_code)] Low,
}
#[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq)]
#[allow(dead_code)]
pub enum AuditGroup {
P1,
P2,
P3,
P4,
P5,
P6,
P7,
P8,
CodeQuality,
ProjectStructure,
}
#[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
#[allow(dead_code)]
pub enum AuditLayer {
Behavioral,
Source,
Project,
}
#[derive(Debug, Clone, Serialize)]
pub struct AuditResult {
pub id: String,
pub label: String,
pub group: AuditGroup,
pub layer: AuditLayer,
pub status: AuditStatus,
#[serde(default)]
pub confidence: Confidence,
}
#[derive(Debug, Clone, Serialize)]
pub struct SourceLocation {
pub file: String,
pub line: usize,
pub column: usize,
pub text: String,
}