first commit

This commit is contained in:
2026-07-11 23:54:36 +07:00
commit b07562921b
40 changed files with 3813 additions and 0 deletions

40
reporting/models.py Normal file
View 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