first commit
This commit is contained in:
40
reporting/models.py
Normal file
40
reporting/models.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from core.schemas.manifest import ModuleManifest
|
||||
from core.schemas.results import AuditResults
|
||||
from core.schemas.status import AuditSeverity
|
||||
|
||||
|
||||
class PluginRuntimeError(BaseModel):
|
||||
plugin_kind: str
|
||||
plugin_name: str
|
||||
stage: str
|
||||
message: str
|
||||
|
||||
|
||||
class ModuleExecutionStats(BaseModel):
|
||||
duration_seconds: float = Field(ge=0)
|
||||
finding_counts: dict[AuditSeverity, int] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class ModuleAuditResult(BaseModel):
|
||||
module: ModuleManifest
|
||||
result: AuditResults
|
||||
stats: ModuleExecutionStats | None = None
|
||||
error: PluginRuntimeError | None = None
|
||||
|
||||
|
||||
class AuditReport(BaseModel):
|
||||
generated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
|
||||
results: list[ModuleAuditResult]
|
||||
exit_code: int
|
||||
plugin_errors: list[PluginRuntimeError] = Field(default_factory=list)
|
||||
|
||||
|
||||
class RenderedReport(BaseModel):
|
||||
format_name: str
|
||||
media_type: str
|
||||
file_extension: str
|
||||
content: str
|
||||
Reference in New Issue
Block a user