feat(ui): Data Flow tab — live lineage graph + PII overlay + movement triggers
New DataFlowView (topology-style): nodes positioned from /api/dataflow with measured-anchor SVG edges and animated particles (active CDC + running movements). PII overlay shows shield badges + per-column detail inspector. Bottom strip triggers ETL movements and toggles the ETL agent. Wired into SideNav (Data Flow) and App routing; added types + api helpers.
This commit is contained in:
@@ -70,6 +70,77 @@ export type CdcStats = {
|
||||
consumed: number
|
||||
}
|
||||
|
||||
export type PiiColumn = { name: string; category: string; masked: boolean }
|
||||
|
||||
export type DataflowNode = {
|
||||
id: string
|
||||
label: string
|
||||
sub: string
|
||||
kind: string
|
||||
x: number
|
||||
y: number
|
||||
level: string
|
||||
metric: string | null
|
||||
pii?: {
|
||||
has_pii: boolean
|
||||
pii_count: number
|
||||
all_masked: boolean
|
||||
masked_layer: boolean
|
||||
categories: string[]
|
||||
columns: PiiColumn[]
|
||||
}
|
||||
}
|
||||
|
||||
export type DataflowEdge = {
|
||||
from: string
|
||||
to: string
|
||||
kind: string
|
||||
movement_id?: string
|
||||
state?: string
|
||||
last_rows?: number | null
|
||||
last_duration_s?: number | null
|
||||
active?: boolean
|
||||
}
|
||||
|
||||
export type DataflowGraph = {
|
||||
ok: boolean
|
||||
nodes: DataflowNode[]
|
||||
edges: DataflowEdge[]
|
||||
pii_summary: { datasets?: number; pii_columns?: number; masked_columns?: number; unmasked_columns?: number }
|
||||
cdc: { connected?: boolean; consumed?: number; window_total?: number }
|
||||
ts: number
|
||||
}
|
||||
|
||||
export type Movement = {
|
||||
id: string
|
||||
label: string
|
||||
kind: string
|
||||
dag_id: string
|
||||
agent: string
|
||||
from: string
|
||||
to: string
|
||||
last_run?: {
|
||||
state?: string
|
||||
rows?: number | null
|
||||
duration_s?: number | null
|
||||
ended_at?: string
|
||||
started_at?: string
|
||||
} | null
|
||||
}
|
||||
|
||||
export type PiiDataset = {
|
||||
key: string
|
||||
node_id: string
|
||||
label: string
|
||||
table: string
|
||||
exists: boolean
|
||||
masked_layer: boolean
|
||||
pii_columns: PiiColumn[]
|
||||
pii_count: number
|
||||
has_pii: boolean
|
||||
all_masked: boolean
|
||||
}
|
||||
|
||||
export type DomainStatus = {
|
||||
level: 'ok' | 'warn' | 'down' | 'unknown'
|
||||
label: string
|
||||
|
||||
Reference in New Issue
Block a user