-
Notifications
You must be signed in to change notification settings - Fork 23
Flow page [YTFONT-5241] #1392
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Flow page [YTFONT-5241] #1392
Conversation
Reviewer's GuideIntroduces a dedicated Flow page with routing, URL mapping, and navigation integration; refactors Flow graph/layout components into the new page; extends Flow API types and endpoints; adds computations listing and monitoring integration; improves flow messages rendering and graph canvas highlighting for high resource consumption. Sequence diagram for navigation FlowRedirect to new Flow pagesequenceDiagram
actor User
participant Navigation as NavigationContent
participant FlowRedirect
participant History as AppBrowserHistory
participant Router as ReactRouter
participant FlowPage as FlowPage
participant Flow as Flow
User->>Navigation: click pipeline node row
Navigation->>FlowRedirect: render Tab.FLOW component
FlowRedirect->>Navigation: select path from navigation store
FlowRedirect->>History: replace(makeFlowLink(path))
FlowRedirect->>History: push(makeFlowLink(path))
History->>Router: update location to /:cluster/flow/...?
Router->>FlowPage: match route /:cluster/flow
FlowPage->>Flow: render Flow
Flow->>Flow: read pipelinePath from flow.filters
Flow-->>User: show Flow tabs and content for pipeline
Sequence diagram for Flow messages loading on Flow pagesequenceDiagram
actor User
participant Flow as Flow
participant FlowMessagesLoaded
participant useFlowExecuteQuery
participant flowExecuteEndpoint as flowExecute
participant ytApiV4Id
participant Backend as FlowService
User->>Flow: open Flow page
Flow->>FlowMessagesLoaded: render in header
FlowMessagesLoaded->>useFlowExecuteQuery: call<'describe-pipeline'>(status_only=true)
useFlowExecuteQuery->>flowExecuteEndpoint: invoke with ParamsType and BodyType
flowExecuteEndpoint->>ytApiV4Id: ytApiV4Id.flowExecute(flowExecuteDescribePipeline)
ytApiV4Id->>Backend: HTTP describe-pipeline(status_only)
Backend-->>ytApiV4Id: FlowDescribePipelineData(messages)
ytApiV4Id-->>flowExecuteEndpoint: data
flowExecuteEndpoint-->>useFlowExecuteQuery: {data}
useFlowExecuteQuery-->>FlowMessagesLoaded: hook result
alt error
FlowMessagesLoaded-->>Flow: render YTErrorInline
else success
FlowMessagesLoaded-->>Flow: render FlowMessages(messages)
end
Flow-->>User: messages dialog available
Class diagram for updated Flow types and filtersclassDiagram
class FlowExecuteTypes {
}
class FlowDescribeComputationsData {
+Array~FlowComputation~ computations
}
class FlowDescribePipelineData {
... existing fields ...
}
class FlowExecuteCommand {
<<type alias>>
}
class FlowMessage {
+FlowNodeStatus level
+string text
+unknown yson
+YTError error
+string markdown_text
}
class FlowComputationMetrics {
+number cpu_usage_current
+number cpu_usage_30s
+number cpu_usage_10m
+number memory_usage_current
+number memory_usage_30s
+number memory_usage_10m
}
class FlowPartitionsStats {
+number count
+number healthy
+number degraded
+number failed
}
class FlowComputation {
+string id
+string name
+string class_name
+boolean highlight_cpu_usage
+boolean hightlight_memory_usage
+FlowComputationMetrics metrics
+FlowPartitionsStats partitions_stats
+FlowComputationstatus status
}
class FlowNodeBase {
+string id
+string name
+FlowNodeStatus status
}
class FlowNodeStatus {
<<union>>
idle
running
warning
error
fatal
maximum
}
class FlowComputationstatus {
<<union>>
info
warning
error
}
class FlowFiltersState {
+string pipelinePath
+string computationsNameFilter
}
class FlowTab {
<<const object>>
+GRAPH
+GRAPH_DATA
+COMPUTATIONS
+WORKERS
+MONITORING
+STATIC_SPEC
+DYNAMIC_SPEC
}
class FlowTabType {
<<type alias>>
}
class FiltersSlice {
+updateFlowFilters(payload Partial~FlowFiltersState~)
}
class useFlowComputationsNameFilter {
+string computationsNameFilter
+setComputationsNameFilter(value string)
}
FlowExecuteCommand --> FlowExecuteTypes : keyof
FlowExecuteTypes --> FlowDescribePipelineData : ResponseType
FlowExecuteTypes --> FlowDescribeComputationsData : ResponseType
FlowComputation --> FlowNodeBase : extends
FlowComputation --> FlowComputationMetrics : has
FlowComputation --> FlowPartitionsStats : has
FlowComputation --> FlowComputationstatus : status
FlowMessage --> FlowNodeStatus : level
FlowTabType --> FlowTab : keyof
FlowFiltersState --> FlowTab : used in routing
FiltersSlice --> FlowFiltersState : manages
useFlowComputationsNameFilter --> FlowFiltersState : reads/updates
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Storybook is ready. |
|
Playwright components report is ready. |
|
Statoscope report is ready. |
|
E2E-local report is ready. |
eb7d606 to
aa333b3
Compare
aa333b3 to
9ff2290
Compare
…eparate file [YTFRONT-5241]
96328a0 to
89dd20b
Compare
https://nda.ya.ru/t/69XuJhd37Pivkp
## Summary by SourceryIntroduce a dedicated Flow page with its own routing, navigation entry, and top row, refactor existing Flow navigation tab components into this new page, and extend Flow-related APIs and types to support computations listing and monitoring integrations.
New Features:
Bug Fixes:
Enhancements: