pub struct AuditFinding {Show 40 fields
pub finding_id: Uuid,
pub finding_ref: String,
pub engagement_id: Uuid,
pub finding_type: FindingType,
pub severity: FindingSeverity,
pub title: String,
pub condition: String,
pub criteria: String,
pub cause: String,
pub effect: String,
pub monetary_impact: Option<Decimal>,
pub is_misstatement: bool,
pub projected_misstatement: Option<Decimal>,
pub factual_misstatement: Option<Decimal>,
pub judgmental_misstatement: Option<Decimal>,
pub recommendation: String,
pub management_response: Option<String>,
pub management_response_date: Option<NaiveDate>,
pub management_agrees: Option<bool>,
pub remediation_plan: Option<RemediationPlan>,
pub status: FindingStatus,
pub assertions_affected: Vec<Assertion>,
pub accounts_affected: Vec<String>,
pub process_areas: Vec<String>,
pub related_control_ids: Vec<String>,
pub related_risk_id: Option<String>,
pub workpaper_id: Option<String>,
pub workpaper_refs: Vec<Uuid>,
pub evidence_refs: Vec<Uuid>,
pub related_findings: Vec<Uuid>,
pub prior_year_finding_id: Option<Uuid>,
pub include_in_management_letter: bool,
pub report_to_governance: bool,
pub communicated_date: Option<NaiveDate>,
pub identified_by: String,
pub identified_date: NaiveDate,
pub reviewed_by: Option<String>,
pub review_date: Option<NaiveDate>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Expand description
Audit finding representing an identified issue.
Fields§
§finding_id: UuidUnique finding ID
finding_ref: StringExternal reference (e.g., “FIND-2025-001”)
engagement_id: UuidEngagement ID
finding_type: FindingTypeFinding type/classification
severity: FindingSeveritySeverity level
title: StringFinding title
condition: StringCondition: What we found
criteria: StringCriteria: What it should be (standard/policy)
cause: StringCause: Why it happened
effect: StringEffect: Impact/consequence
monetary_impact: Option<Decimal>Monetary impact if quantifiable
is_misstatement: boolIs this a known misstatement?
projected_misstatement: Option<Decimal>Projected misstatement (for sampling)
factual_misstatement: Option<Decimal>Factual misstatement
judgmental_misstatement: Option<Decimal>Judgmental misstatement
recommendation: StringRecommendation for remediation
management_response: Option<String>Management response
management_response_date: Option<NaiveDate>Management response date
management_agrees: Option<bool>Does management agree?
remediation_plan: Option<RemediationPlan>Remediation plan
status: FindingStatusFinding status
assertions_affected: Vec<Assertion>Assertions affected
accounts_affected: Vec<String>Account IDs affected
process_areas: Vec<String>Process areas affected
Control IDs related to this finding (populated at generation time)
Risk ID this finding was raised against (populated at generation time)
workpaper_id: Option<String>Primary workpaper ID that documents this finding
workpaper_refs: Vec<Uuid>Supporting workpaper IDs
evidence_refs: Vec<Uuid>Supporting evidence IDs
Related finding IDs (if recurring)
prior_year_finding_id: Option<Uuid>Prior year finding ID if recurring
include_in_management_letter: boolInclude in management letter?
report_to_governance: boolReport to those charged with governance?
communicated_date: Option<NaiveDate>Communicated date
identified_by: StringIdentified by user ID
identified_date: NaiveDateDate identified
reviewed_by: Option<String>Reviewed by
review_date: Option<NaiveDate>Review date
created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Source§impl AuditFinding
impl AuditFinding
Sourcepub fn new(engagement_id: Uuid, finding_type: FindingType, title: &str) -> Self
pub fn new(engagement_id: Uuid, finding_type: FindingType, title: &str) -> Self
Create a new audit finding.
Sourcepub fn with_details(
self,
condition: &str,
criteria: &str,
cause: &str,
effect: &str,
) -> Self
pub fn with_details( self, condition: &str, criteria: &str, cause: &str, effect: &str, ) -> Self
Set the finding details (condition, criteria, cause, effect).
Sourcepub fn with_monetary_impact(self, impact: Decimal) -> Self
pub fn with_monetary_impact(self, impact: Decimal) -> Self
Set monetary impact.
Sourcepub fn with_misstatement(
self,
factual: Option<Decimal>,
projected: Option<Decimal>,
judgmental: Option<Decimal>,
) -> Self
pub fn with_misstatement( self, factual: Option<Decimal>, projected: Option<Decimal>, judgmental: Option<Decimal>, ) -> Self
Set misstatement details.
Sourcepub fn with_recommendation(self, recommendation: &str) -> Self
pub fn with_recommendation(self, recommendation: &str) -> Self
Set recommendation.
Sourcepub fn add_management_response(
&mut self,
response: &str,
agrees: bool,
date: NaiveDate,
)
pub fn add_management_response( &mut self, response: &str, agrees: bool, date: NaiveDate, )
Add management response.
Sourcepub fn with_remediation_plan(&mut self, plan: RemediationPlan)
pub fn with_remediation_plan(&mut self, plan: RemediationPlan)
Set remediation plan.
Sourcepub fn mark_for_reporting(&mut self, management_letter: bool, governance: bool)
pub fn mark_for_reporting(&mut self, management_letter: bool, governance: bool)
Mark for reporting.
Sourcepub fn total_misstatement(&self) -> Decimal
pub fn total_misstatement(&self) -> Decimal
Get total misstatement amount.
Sourcepub fn is_material_weakness(&self) -> bool
pub fn is_material_weakness(&self) -> bool
Check if this is a material weakness (for SOX).
Sourcepub fn requires_governance_communication(&self) -> bool
pub fn requires_governance_communication(&self) -> bool
Check if this requires governance communication per ISA 260.
Trait Implementations§
Source§impl Clone for AuditFinding
impl Clone for AuditFinding
Source§fn clone(&self) -> AuditFinding
fn clone(&self) -> AuditFinding
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AuditFinding
impl Debug for AuditFinding
Source§impl<'de> Deserialize<'de> for AuditFinding
impl<'de> Deserialize<'de> for AuditFinding
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AuditFinding
impl RefUnwindSafe for AuditFinding
impl Send for AuditFinding
impl Sync for AuditFinding
impl Unpin for AuditFinding
impl UnsafeUnpin for AuditFinding
impl UnwindSafe for AuditFinding
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.