generated from coulomb/repo-seed
Implement financial Fabric vNext read model
This commit is contained in:
@@ -7,14 +7,139 @@ from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
MappingFit = Literal["direct", "partial", "conflict", "gap", "unknown"]
|
||||
EvidenceState = Literal["observed", "declared", "inferred", "proposed", "gap"]
|
||||
FabricGraphApiVersion = Literal["railiance.fabric/v1alpha1", "railiance.fabric/v1alpha2"]
|
||||
ActorRole = Literal["king", "lord", "tenant", "operator", "steward"]
|
||||
OwnershipResolution = Literal["explicit", "inherited", "unresolved", "ambiguous"]
|
||||
EvidenceReviewState = Literal["accepted", "candidate", "needs_review", "rejected"]
|
||||
RelationshipCategory = Literal[
|
||||
"containment",
|
||||
"ownership",
|
||||
"technical",
|
||||
"utility",
|
||||
"accounting",
|
||||
"evidence",
|
||||
]
|
||||
|
||||
|
||||
class FabricGraphSource(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
repo: str | None = None
|
||||
producer: str | None = None
|
||||
registry: str | None = None
|
||||
commit: str | None = None
|
||||
path: str | None = None
|
||||
generation_reason: str | None = None
|
||||
|
||||
|
||||
class FabricGraphNetkingdomPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
id: str
|
||||
name: str
|
||||
king_actor_id: str
|
||||
|
||||
|
||||
class FabricGraphActorPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
id: str
|
||||
kind: Literal["FabricActor"]
|
||||
role: ActorRole
|
||||
name: str
|
||||
|
||||
|
||||
class FabricGraphFabricPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
id: str
|
||||
kind: Literal["Fabric", "Subfabric"]
|
||||
name: str
|
||||
netkingdom_id: str
|
||||
parent_fabric_id: str | None = None
|
||||
lord_actor_id: str | None = None
|
||||
tenant_actor_id: str | None = None
|
||||
status: str
|
||||
boundary: dict[str, Any] = Field(default_factory=dict)
|
||||
evidence_refs: list[dict[str, Any]] = Field(default_factory=list)
|
||||
|
||||
|
||||
class FabricGraphContainmentPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
netkingdom_id: str
|
||||
fabric_id: str
|
||||
subfabric_id: str | None = None
|
||||
environment: str | None = None
|
||||
deployment_scenario_id: str | None = None
|
||||
|
||||
|
||||
class FabricGraphOwnershipPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
owner_actor_id: str
|
||||
owner_role: ActorRole
|
||||
resolution: OwnershipResolution
|
||||
inherited_from: str | None = None
|
||||
supporting_actor_ids: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class FabricGraphAccountingPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
cost_center_id: str | None = None
|
||||
profit_center_id: str | None = None
|
||||
provider_profit_center_id: str | None = None
|
||||
consumer_cost_center_id: str | None = None
|
||||
allocation_model: str | None = None
|
||||
payment_schema_id: str | None = None
|
||||
metering_basis: str | None = None
|
||||
valid_from: str | None = None
|
||||
valid_until: str | None = None
|
||||
|
||||
|
||||
class FabricGraphEvidencePayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
state: EvidenceState
|
||||
review_state: EvidenceReviewState
|
||||
confidence: float | None = Field(default=None, ge=0, le=1)
|
||||
refs: list[dict[str, Any]] = Field(default_factory=list)
|
||||
|
||||
|
||||
class FabricGraphUtilitySidePayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
owner_actor_id: str
|
||||
fabric_id: str
|
||||
subfabric_id: str | None = None
|
||||
|
||||
|
||||
class FabricGraphBoundaryPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
crosses_fabric_boundary: bool
|
||||
crosses_subfabric_boundary: bool
|
||||
|
||||
|
||||
class FabricGraphUtilityPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
utility_type: str
|
||||
contract_id: str | None = None
|
||||
payment_schema_id: str | None = None
|
||||
metering_basis: str | None = None
|
||||
business_model: str | None = None
|
||||
|
||||
|
||||
class FabricGraphUnresolvedPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
target_id: str
|
||||
kind: str
|
||||
severity: str | None = None
|
||||
message: str
|
||||
evidence_refs: list[dict[str, Any]] = Field(default_factory=list)
|
||||
|
||||
|
||||
class FabricGraphNodePayload(BaseModel):
|
||||
@@ -23,9 +148,13 @@ class FabricGraphNodePayload(BaseModel):
|
||||
id: str
|
||||
kind: str
|
||||
name: str
|
||||
repo: str
|
||||
domain: str
|
||||
lifecycle: str
|
||||
repo: str | None = None
|
||||
domain: str | None = None
|
||||
lifecycle: str | None = None
|
||||
containment: FabricGraphContainmentPayload | None = None
|
||||
ownership: FabricGraphOwnershipPayload | None = None
|
||||
accounting: FabricGraphAccountingPayload | None = None
|
||||
evidence: FabricGraphEvidencePayload | None = None
|
||||
canon_category: str | None = None
|
||||
canon_anchor: str | None = None
|
||||
mapping_fit: MappingFit | None = None
|
||||
@@ -39,23 +168,37 @@ class FabricGraphEdgePayload(BaseModel):
|
||||
from_graph_id: str = Field(alias="from")
|
||||
to_graph_id: str = Field(alias="to")
|
||||
edge_type: str = Field(alias="type")
|
||||
id: str | None = None
|
||||
relationship_category: RelationshipCategory | None = None
|
||||
canonical_type: str | None = None
|
||||
canon_anchor: str | None = None
|
||||
mapping_fit: MappingFit | None = None
|
||||
display_only: bool | None = None
|
||||
evidence_state: EvidenceState | None = None
|
||||
provider: FabricGraphUtilitySidePayload | None = None
|
||||
consumer: FabricGraphUtilitySidePayload | None = None
|
||||
boundary: FabricGraphBoundaryPayload | None = None
|
||||
utility: FabricGraphUtilityPayload | None = None
|
||||
accounting: FabricGraphAccountingPayload | None = None
|
||||
evidence: FabricGraphEvidencePayload | None = None
|
||||
attributes: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class FabricGraphExportPayload(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid", populate_by_name=True)
|
||||
|
||||
api_version: Literal["railiance.fabric/v1alpha1"] = Field(alias="apiVersion")
|
||||
api_version: FabricGraphApiVersion = Field(alias="apiVersion")
|
||||
kind: Literal["FabricGraphExport"]
|
||||
schema_version: Literal["financial-fabric-v1"] | None = None
|
||||
generated_at: datetime | None = None
|
||||
source: FabricGraphSource | None = None
|
||||
compatibility: dict[str, Any] = Field(default_factory=dict)
|
||||
netkingdom: FabricGraphNetkingdomPayload | None = None
|
||||
actors: list[FabricGraphActorPayload] = Field(default_factory=list)
|
||||
fabrics: list[FabricGraphFabricPayload] = Field(default_factory=list)
|
||||
nodes: list[FabricGraphNodePayload]
|
||||
edges: list[FabricGraphEdgePayload]
|
||||
unresolved: list[FabricGraphUnresolvedPayload] = Field(default_factory=list)
|
||||
|
||||
|
||||
class FabricGraphPullRequest(BaseModel):
|
||||
@@ -73,8 +216,15 @@ class FabricGraphImportRead(BaseModel):
|
||||
source_commit: str | None = None
|
||||
source_path: str | None = None
|
||||
api_version: str | None = None
|
||||
schema_version: str | None = None
|
||||
export_kind: str | None = None
|
||||
exported_at: datetime | None = None
|
||||
netkingdom_id: str | None = None
|
||||
king_actor_id: str | None = None
|
||||
actor_count: int
|
||||
fabric_count: int
|
||||
unresolved_count: int
|
||||
compatibility: dict
|
||||
content_hash: str
|
||||
node_count: int
|
||||
edge_count: int
|
||||
@@ -111,6 +261,18 @@ class FabricGraphNodeRead(BaseModel):
|
||||
canon_anchor: str | None = None
|
||||
mapping_fit: str | None = None
|
||||
evidence_state: str | None = None
|
||||
evidence_review_state: str | None = None
|
||||
evidence_confidence: float | None = None
|
||||
netkingdom_id: str | None = None
|
||||
fabric_id: str | None = None
|
||||
subfabric_id: str | None = None
|
||||
environment: str | None = None
|
||||
deployment_scenario_id: str | None = None
|
||||
owner_actor_id: str | None = None
|
||||
owner_role: str | None = None
|
||||
ownership_resolution: str | None = None
|
||||
cost_center_id: str | None = None
|
||||
profit_center_id: str | None = None
|
||||
display_only: bool
|
||||
attributes: dict
|
||||
raw_json: dict
|
||||
@@ -130,6 +292,26 @@ class FabricGraphEdgeRead(BaseModel):
|
||||
canon_anchor: str | None = None
|
||||
mapping_fit: str | None = None
|
||||
evidence_state: str | None = None
|
||||
evidence_review_state: str | None = None
|
||||
evidence_confidence: float | None = None
|
||||
relationship_category: str | None = None
|
||||
provider_owner_actor_id: str | None = None
|
||||
provider_fabric_id: str | None = None
|
||||
provider_subfabric_id: str | None = None
|
||||
consumer_owner_actor_id: str | None = None
|
||||
consumer_fabric_id: str | None = None
|
||||
consumer_subfabric_id: str | None = None
|
||||
crosses_fabric_boundary: bool | None = None
|
||||
crosses_subfabric_boundary: bool | None = None
|
||||
utility_type: str | None = None
|
||||
utility_contract_id: str | None = None
|
||||
utility_payment_schema_id: str | None = None
|
||||
utility_metering_basis: str | None = None
|
||||
utility_business_model: str | None = None
|
||||
cost_center_id: str | None = None
|
||||
profit_center_id: str | None = None
|
||||
provider_profit_center_id: str | None = None
|
||||
consumer_cost_center_id: str | None = None
|
||||
display_only: bool
|
||||
attributes: dict
|
||||
raw_json: dict
|
||||
@@ -140,13 +322,31 @@ class FabricGraphSummary(BaseModel):
|
||||
latest_import: FabricGraphImportRead | None = None
|
||||
node_count: int
|
||||
edge_count: int
|
||||
schema_version: str | None = None
|
||||
netkingdom_id: str | None = None
|
||||
actor_count: int
|
||||
fabric_count: int
|
||||
unresolved_count: int
|
||||
nodes_by_domain: dict[str, int]
|
||||
nodes_by_repo: dict[str, int]
|
||||
nodes_by_canon_category: dict[str, int]
|
||||
nodes_by_fabric: dict[str, int]
|
||||
nodes_by_subfabric: dict[str, int]
|
||||
nodes_by_owner_actor: dict[str, int]
|
||||
nodes_by_owner_role: dict[str, int]
|
||||
nodes_by_ownership_resolution: dict[str, int]
|
||||
edges_by_canonical_type: dict[str, int]
|
||||
edges_by_relationship_category: dict[str, int]
|
||||
utility_edges_by_provider_owner: dict[str, int]
|
||||
utility_edges_by_consumer_owner: dict[str, int]
|
||||
utility_edges_by_business_model: dict[str, int]
|
||||
nodes_by_evidence_state: dict[str, int]
|
||||
edges_by_evidence_state: dict[str, int]
|
||||
nodes_by_mapping_fit: dict[str, int]
|
||||
edges_by_mapping_fit: dict[str, int]
|
||||
tenant_utilities_without_payment_schema: int
|
||||
nodes_without_accounting_attribution: int
|
||||
unresolved_ownership_count: int
|
||||
unresolved_accounting_count: int
|
||||
example_nodes: list[FabricGraphNodeRead]
|
||||
example_edges: list[FabricGraphEdgeRead]
|
||||
|
||||
Reference in New Issue
Block a user