--- ui_doc_type: component component_id: console-shell status: 계획 source_evidence: - type: code path: packages/flutter/oto_console/lib/src/oto_console_shell.dart notes: "OtoConsoleShell Scaffold, rail, selected section content 구현" - type: code path: apps/client/lib/src/app/oto_client_app.dart notes: "OtoClientApp이 OtoConsoleShell을 host MaterialApp home으로 mount" - type: docs path: apps/client/README.md notes: "oto_console package의 embeddable shell 기준" --- # Console Shell Component ID: `console-shell` Status: `계획` ## Source Evidence | Type | Path | Notes | |------|------|-------| | code | `packages/flutter/oto_console/lib/src/oto_console_shell.dart` | `OtoConsoleShell` Scaffold, rail, selected section content 구현 | | code | `apps/client/lib/src/app/oto_client_app.dart` | host `MaterialApp`이 `OtoConsoleShell`을 mount | | docs | `apps/client/README.md` | embeddable shell 기준 | ## Purpose Control Plane 콘솔의 전체 layout shell을 제공하고, rail navigation과 선택된 section content를 연결한다. ## Used By - `overview`: shell content area - `runners`: shell content area - `pipelines`: shell content area - `executions`: shell content area - `artifacts`: shell content area - `agent`: shell content area - `settings`: shell content area ## Anatomy - `Scaffold` - `SafeArea` - `console-rail` - selected section content area - optional fallback `section-surface` ## Jenkins Reference Alignment - Jenkins `2.516+`의 통합 header/breadcrumb/action 모델은 future shell header 후보로 둔다. - 현재 구현은 rail 중심 shell이므로 Jenkins classic side task list와 Blue Ocean common navigation을 절충한 OTO 운영 콘솔 shell로 본다. - view header와 action은 각 surface 내부에 있고, shell은 navigation과 content mounting 책임만 가진다. - global search, command palette, account/theme picker는 이번 정의 범위에서 제외한다. ## Target Layout Delta - shell은 rail + content만이 아니라 page header/action slot을 담을 수 있는 구조를 목표로 둔다. - breadcrumb는 이번 범위에서 제외하지만, Jenkins refreshed header처럼 current view context와 primary action을 같은 상단 영역에 둘 수 있어야 한다. - 현재 `OtoConsoleShell` 구현은 목표 shell layout 전 단계이므로 코드 반영 전 상태는 `계획`이다. ## Variants - default: host가 전용 surface를 모두 넘긴 상태 - fallback: 특정 section widget이 없으면 `section-surface`를 표시 ## States - default - selected-section - fallback-section - navigation-callback ## Rules - section enum, rail button, view definition은 같은 section 집합을 말해야 한다. - shell은 view source of truth가 아니라 view를 담는 container component다. ## Decision History - 2026-06-24: 구현 후보 재검토 중 `OtoConsoleShell`을 별도 shell component로 보강했다.