103 lines
3.3 KiB
Python
103 lines
3.3 KiB
Python
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
|