118 lines
4.8 KiB
Markdown
118 lines
4.8 KiB
Markdown
---
|
|
ui_doc_type: component
|
|
component_id: console-rail
|
|
status: 계획
|
|
source_evidence:
|
|
- type: code
|
|
path: packages/flutter/oto_console/lib/src/oto_console_shell.dart
|
|
notes: "_OtoConsoleRail, _RailButton 구현"
|
|
- type: docs
|
|
path: apps/client/README.md
|
|
notes: "oto_console embeddable UI surface"
|
|
- type: user
|
|
path: null
|
|
notes: "agent-ui 생성 요청"
|
|
---
|
|
|
|
# Console Rail
|
|
|
|
Component ID: `console-rail`
|
|
|
|
Status: `계획` (Jenkins IA gate 미충족: global/context menu 모델 분리가 후속 구현 대기)
|
|
|
|
## Source Evidence
|
|
|
|
| Type | Path | Notes |
|
|
|------|------|-------|
|
|
| code | `packages/flutter/oto_console/lib/src/oto_console_shell.dart` | `_OtoConsoleRail`, `_RailButton` 구현 |
|
|
| docs | `apps/client/README.md` | embeddable console surface |
|
|
| user | 없음 | agent-ui 생성 요청 |
|
|
|
|
## Purpose
|
|
|
|
콘솔 section 사이를 빠르게 이동하는 고정 rail navigation을 제공한다.
|
|
|
|
## Used By
|
|
|
|
- `overview`: shell navigation
|
|
- `runners`: shell navigation
|
|
- `pipelines`: shell navigation
|
|
- `executions`: shell navigation
|
|
- `artifacts`: shell navigation
|
|
- `agent`: shell navigation
|
|
- `settings`: shell navigation
|
|
|
|
## Anatomy
|
|
|
|
- icon button
|
|
- tooltip
|
|
- selected visual state
|
|
- top main section group
|
|
- bottom agent/settings group
|
|
|
|
## Jenkins Reference Alignment
|
|
|
|
- OTO rail은 Jenkins Dashboard-level left menu의 일부 destination만 전역 section으로 축약한다.
|
|
- Jenkins classic job/run page의 좌측 메뉴는 page-local task/action list이므로, 현재 OTO rail과 동일한 것으로 보지 않는다.
|
|
- Jenkins와 달리 breadcrumb stack과 contextual task menu는 현재 제공하지 않는다. 세부 route가 늘어나면 shell/header와 view-local left task menu로 분리한다.
|
|
- 사용자 결정(2026-07-03): OTO의 메뉴 구조는 Jenkins 메뉴 모델 중 OTO에 바로 적용 가능한 항목만 1차 적용한다. 현재 rail의 partial mapping은 최종 목표가 아니라 구현 전 상태다.
|
|
|
|
## Jenkins Left Menu Mapping
|
|
|
|
### 1차 적용 Global Menu
|
|
|
|
| Order | Jenkins menu model | OTO menu item | Target |
|
|
|-------|--------------------|---------------|--------|
|
|
| 1 | Dashboard / view root | `Overview` | Control Plane dashboard/home |
|
|
| 2 | `New Item` | `New Item` | Pipelines create flow |
|
|
| 3 | Jobs / item list | `Pipelines` | job list and selected job status |
|
|
| 4 | `Build History` | `Build History` | execution history |
|
|
| 5 | Nodes/Agents | `Runners` | runner/node list |
|
|
| 6 | `Artifacts` | `Artifacts` | artifact list |
|
|
| 7 | `Manage Jenkins` | `Manage OTO` / `Settings` | Jenkins-style management categories |
|
|
| 8 | OTO-specific Agent | `Agent` | OTO assistant surface |
|
|
|
|
### 1차 적용 Context Menus
|
|
|
|
| Context | Jenkins menu model | OTO menu item | Target |
|
|
|---------|--------------------|---------------|--------|
|
|
| Job | `Status` | `Status` | selected job status/detail |
|
|
| Job | `Build History` | `Build History` | selected job execution history |
|
|
| Job | `Stages` / `Full Stage View` | `Stages` | selected execution stage graph |
|
|
| Run | `Pipeline Overview` | `Pipeline Overview` | stage graph primary region |
|
|
| Run | `Console Output` | `Console Output` | selected execution log |
|
|
| Run | `Artifacts` | `Artifacts` | selected execution artifacts |
|
|
| Run | `Build History` | `Build History` | nearby execution history/context |
|
|
|
|
### 제외/후순위
|
|
|
|
`People`, `Changes`, existing job `Build Now`, `Configure`, `Replay`, `Pipeline Syntax`는 OTO Core/UI 계약이 생기기 전까지 1차 메뉴에 만들지 않는다.
|
|
|
|
## Target Layout Delta
|
|
|
|
- rail은 현재 60px icon-only 구조에서 Jenkins Dashboard-level left menu를 알아볼 수 있는 메뉴로 재정렬한다.
|
|
- Jenkins job/run left menu parity는 rail이 아니라 view-local contextual task menu로 정의하고 구현한다.
|
|
- selected state와 tooltip은 유지하고, section ordering은 overview, new item, pipelines, build history, runners, artifacts, manage, agent 순서를 기준으로 검토한다.
|
|
- 현재 rail 구현은 global destination 축약(current)만 존재하고, 위 1차 적용 Global/Context menu(target)는 Jenkins IA gate 미충족 상태다.
|
|
- 후속 구현(02/03)의 widget 테스트는 global menu label `New Item`, `Build History`, `Nodes`, `Artifacts`, `Manage OTO`와 job/run context menu(`Status`, `Stages`, `Pipeline Overview`, `Console Output`) 분리를 고정 label로 확인한다.
|
|
|
|
## Variants
|
|
|
|
- default: 60px rail width, 56x48 button hit area
|
|
- selected: primary color icon and tinted background
|
|
|
|
## States
|
|
|
|
- default
|
|
- selected
|
|
- hover/focus via Flutter button semantics
|
|
- disabled: 없음
|
|
|
|
## Rules
|
|
|
|
- navigation destination은 `OtoConsoleSection` enum과 일치해야 한다.
|
|
- section 추가 시 rail button, enum, view definition을 함께 갱신하고, visual source가 있으면 frame-view definition도 함께 갱신한다.
|
|
|
|
## Decision History
|
|
|
|
- 2026-06-24: shell rail을 `console-rail` component로 정의했다.
|