---
ui_doc_type: view
view_id: pipelines
status: 구현됨
frame: null
source_evidence:
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_jobs_surface.dart
    notes: "OtoJobsSurface 구현"
  - type: code
    path: apps/client/lib/src/app/oto_client_app.dart
    notes: "job snapshot, create action, execution navigation 연결"
  - type: docs
    path: agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md
    notes: "create-job은 write action 감사 후보"
  - type: user
    path: null
    notes: "agent-ui 생성 요청"
regions:
  - pipelines.header
  - pipelines.create-job-form
  - pipelines.state-panel
  - pipelines.job-list
  - pipelines.execution-link
  - pipelines.action-feedback
---

# Pipelines

View ID: `pipelines`

Frame:
- 없음

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/oto_console/lib/src/oto_jobs_surface.dart` | `OtoJobsSurface` 구현 |
| code | `apps/client/lib/src/app/oto_client_app.dart` | job snapshot, create action, execution navigation 연결 |
| docs | `agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md` | create-job write action 경계 |
| user | 없음 | agent-ui 생성 요청 |

## Purpose

pipeline/job queue를 확인하고, 새 job을 만들며, 연결된 execution으로 이동한다.

## Primary Users

- operator/admin
- local developer

## Primary Tasks

- job 목록과 상태 확인
- job id/name 기반 create 요청
- execution id가 있는 job에서 executions view로 이동

## Information Priority

1. create job form 상태
2. job list와 상태 badge
3. execution link

## Jenkins Reference Alignment

- Jenkins Dashboard job list와 New Item 흐름을 OTO `pipelines` view의 러프 참조로 삼는다.
- `Pipelines / Jobs` 명명은 유지하되, row 구조는 Jenkins job page처럼 name/id/state와 최근 실행 링크를 먼저 스캔하게 한다.
- create form은 Jenkins New Item보다 훨씬 얇은 OTO job draft form으로 한정한다.
- Jenkins folder/multibranch/organization folder 같은 job taxonomy는 현재 OTO 범위에서 제외하고 후속 확장 후보로 둔다.

## Target Layout Delta

- header에는 Jenkins Dashboard/New Item처럼 job create entry point와 list context를 분리해서 배치한다.
- create form은 상단 고정 입력폼보다 primary action 또는 compact create panel로 정리하는 방향을 목표로 둔다.
- job list는 name/id/state/execution link를 Jenkins job row처럼 더 빠르게 비교할 수 있는 dense row layout으로 재정렬한다.
- 현재 코드는 compact create panel과 dense job row 반영이 완료되어 `구현됨` 상태다.

## Regions

| Region ID | Purpose | Component | Priority | Notes |
|-----------|---------|-----------|----------|-------|
| `pipelines.header` | 화면 제목 | 없음 | high | `Pipelines / Jobs` |
| `pipelines.create-job-form` | job create draft 입력 | `job-create-form` | high | job id/name 필수 |
| `pipelines.state-panel` | loading/empty/error 표현 | `state-panel` | high | snapshot state 기준 |
| `pipelines.job-list` | job row 목록 | `record-list` | high | name, id, state, created/updated |
| `pipelines.execution-link` | execution detail 이동 | 없음 | medium | execution id가 있을 때 표시 |
| `pipelines.action-feedback` | job create 결과 표시 | `action-feedback` | medium | success/failed |

## Actions

| Action ID | Trigger | Result | Guard |
|-----------|---------|--------|-------|
| `pipelines.create-job` | Create button | job create draft submit | job id/name 입력, not submitting |
| `pipelines.open-execution` | execution id chip | `executions` view로 이동 | job execution id 존재 |

## States

- loading: 중앙 progress indicator.
- empty: `No pipeline jobs` state panel.
- error: `Error loading jobs` state panel과 snapshot error message.
- permission-denied: 계획 `authorization-state` component에서 operator/admin 권한 실패를 display-safe message로 표현한다.

## Planned Extensions

- `authorization-state`: create job action의 허용/거부, disabled/error 상태.
- `audit-action-summary`: create job action의 actor/action/target/outcome/timestamp/reason metadata 요약.

## Open Questions

- 없음

## Decision History

- 2026-06-24: job create form과 job list를 주요 region으로 정의했다.
