Files
hydrogen/reporting/models.py
2026-07-11 23:54:36 +07:00

41 lines
1.0 KiB
Python

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