--- ui_doc_type: view view_id: execution-logs status: 구현됨 frame: null source_evidence: - type: code path: apps/client/lib/widgets/execution_logs_panel.dart notes: ExecutionLogsPanel renders edge filter, refresh action, and lifecycle event list. - type: code path: apps/client/lib/client_home_page.dart notes: ClientHomePage injects ExecutionLogsPanel into the shell executionLogs section. - type: docs path: README.md notes: Edge aggregates execution history and lifecycle events for operational visibility. - type: user path: null notes: Initial scaffold requested by user. regions: - execution-logs.header - execution-logs.edge-selector - execution-logs.event-list - execution-logs.event-entry --- # Execution Logs View ID: `execution-logs` Frame: - 없음 Status: `구현됨` ## Source Evidence | Type | Path | Notes | |------|------|-------| | code | `apps/client/lib/widgets/execution_logs_panel.dart` | `ExecutionLogsPanel`이 Edge filter, loading/error/empty state, event list를 렌더링한다. | | code | `apps/client/lib/client_home_page.dart` | shell execution logs section에 `ExecutionLogsPanel`을 주입한다. | | docs | `README.md` | Edge는 execution history aggregation과 event aggregation을 담당한다. | | user | 없음 | 초기 agent-ui 생성을 요청했다. | ## Purpose 선택 Edge의 lifecycle event와 execution log timeline을 시간순으로 확인한다. ## Primary Users - IOP operator - lifecycle event를 추적하는 engineer ## Primary Tasks - Edge별 event filtering - event type, reason, node/source, timestamp 확인 - event list refresh ## Information Priority 1. event type과 severity color 2. event reason 3. node/source와 timestamp ## Regions | Region ID | Purpose | Component | Priority | Notes | |-----------|---------|-----------|----------|-------| | `execution-logs.header` | title, filter Edge selector, refresh 표시 | `edge-selector` | high | `Lifecycle Events & Logs` heading을 포함한다. | | `execution-logs.edge-selector` | event filter Edge 선택 | `edge-selector` | high | 선택 Edge의 events를 대상으로 한다. | | `execution-logs.event-list` | event timeline 목록 표시 | `event-log-entry` | high | ListView로 event entry를 반복한다. | | `execution-logs.event-entry` | 단일 event의 type, reason, source 표시 | `event-log-entry` | high | severity별 color/icon 기준을 사용한다. | ## Actions | Action ID | Trigger | Result | Guard | |-----------|---------|--------|-------| | `execution-logs.select-edge` | Filter Edge dropdown change | 선택 Edge events로 전환한다. | Edge 목록이 있어야 한다. | | `execution-logs.refresh` | Refresh icon button | 선택 Edge events를 다시 fetch한다. | 선택 Edge가 있어야 한다. | ## States - loading: event fetch 중 spinner를 표시한다. - empty: event가 없으면 `No Events Captured` 메시지를 표시한다. - error: event fetch 실패 메시지를 표시한다. - permission-denied: 현재 구현 근거 없음 ## Open Questions - 없음 ## Decision History - 2026-06-25: `ExecutionLogsPanel` 구현을 기준으로 execution-logs view를 정의했다.