feat(scanner): add ScanResult, FileStatusEntry, ScanSummary domain entities
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
50db453ec9
commit
6903f6e814
|
|
@ -0,0 +1,102 @@
|
|||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
|
||||
from app.modules.design.domain.entities import (
|
||||
ADR,
|
||||
ApiContract,
|
||||
Capability,
|
||||
ChangeLogEntry,
|
||||
CodebaseAlignment,
|
||||
DataFlow,
|
||||
DataSecurity,
|
||||
DesignDocument,
|
||||
Domain,
|
||||
DomainEntity,
|
||||
DomainModule,
|
||||
Entity,
|
||||
Environment,
|
||||
ExternalSystem,
|
||||
Integration,
|
||||
Module,
|
||||
ModuleBoundaryRule,
|
||||
OperationalBaseline,
|
||||
ReleasePlan,
|
||||
RuntimeComponent,
|
||||
RuntimeTopology,
|
||||
Scenario,
|
||||
SharedTerm,
|
||||
ScopeAndGoals,
|
||||
SolutionLayer,
|
||||
SystemContext,
|
||||
TechSelection,
|
||||
TraceabilityLink,
|
||||
UbiquitousTerm,
|
||||
UserJourney,
|
||||
ValueFlow,
|
||||
)
|
||||
from app.modules.design.domain.value_objects import FileStatus
|
||||
|
||||
|
||||
@dataclass
|
||||
class FileStatusEntry:
|
||||
path: str
|
||||
status: FileStatus
|
||||
content_lines: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class ScanSummary:
|
||||
total_files: int
|
||||
ok: int
|
||||
sparse: int
|
||||
missing: int
|
||||
placeholder_heavy: int
|
||||
template_residue: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class ScanResult:
|
||||
"""Internal domain object carrying all parsed entities.
|
||||
|
||||
API response (ScanResultResponse) only includes project_id, scanned_at,
|
||||
file_statuses, summary. Entity data is exposed through separate
|
||||
/entities/* endpoints.
|
||||
"""
|
||||
|
||||
project_id: str
|
||||
scanned_at: datetime
|
||||
file_statuses: list[FileStatusEntry]
|
||||
summary: ScanSummary
|
||||
# All parsed Design entities
|
||||
capabilities: list[Capability] = field(default_factory=list)
|
||||
modules: list[Module] = field(default_factory=list)
|
||||
entities: list[Entity] = field(default_factory=list)
|
||||
value_flows: list[ValueFlow] = field(default_factory=list)
|
||||
user_journeys: list[UserJourney] = field(default_factory=list)
|
||||
integrations: list[Integration] = field(default_factory=list)
|
||||
data_flows: list[DataFlow] = field(default_factory=list)
|
||||
traceability_links: list[TraceabilityLink] = field(default_factory=list)
|
||||
external_systems: list[ExternalSystem] = field(default_factory=list)
|
||||
runtime_components: list[RuntimeComponent] = field(default_factory=list)
|
||||
tech_selections: list[TechSelection] = field(default_factory=list)
|
||||
environments: list[Environment] = field(default_factory=list)
|
||||
design_documents: list[DesignDocument] = field(default_factory=list)
|
||||
change_log_entries: list[ChangeLogEntry] = field(default_factory=list)
|
||||
adrs: list[ADR] = field(default_factory=list)
|
||||
shared_terms: list[SharedTerm] = field(default_factory=list)
|
||||
domains: list[Domain] = field(default_factory=list)
|
||||
ubiquitous_terms: list[UbiquitousTerm] = field(default_factory=list)
|
||||
scenarios: list[Scenario] = field(default_factory=list)
|
||||
domain_modules: list[DomainModule] = field(default_factory=list)
|
||||
domain_entities: list[DomainEntity] = field(default_factory=list)
|
||||
data_securities: list[DataSecurity] = field(default_factory=list)
|
||||
codebase_alignments: list[CodebaseAlignment] = field(default_factory=list)
|
||||
api_contracts: list[ApiContract] = field(default_factory=list)
|
||||
# MD file-specific (singleton or None)
|
||||
scope_and_goals: ScopeAndGoals | None = None
|
||||
system_context: SystemContext | None = None
|
||||
solution_layer: SolutionLayer | None = None
|
||||
module_boundary_rule: ModuleBoundaryRule | None = None
|
||||
runtime_topology: RuntimeTopology | None = None
|
||||
operational_baseline: OperationalBaseline | None = None
|
||||
release_plan: ReleasePlan | None = None
|
||||
Loading…
Reference in New Issue
Block a user