arch-design-agent-skill-das.../backend/app/modules/scanner/domain/entities.py
2026-03-23 16:19:58 +00:00

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