You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(FR-2467): disable session commit button until session is Running (#6452)
Resolves#6443 (FR-2467)
- Disable commit button when session status is not RUNNING
- Previously only checked isActive() which allowed non-running states like PREPARING, PENDING, PULLING to enable the button
- [ ] Verify commit button is disabled when session is in PREPARING state
- [ ] Verify commit button is disabled when session is in PENDING state
- [ ] Verify commit button is enabled when session is in RUNNING state
- [ ] Verify commit button remains disabled for non-owners regardless of session status
🤖 Generated with [Claude Code](https://claude.com/claude-code)
| 범위 (minThreshold + maxThreshold) |`[minThreshold] < [metric_name] < [maxThreshold]`|
26
35
27
-
에디터 모달의 비교 연산자 드롭다운은 `<` (LESS_THAN)과 `>` (GREATER_THAN) 두 가지만 표시한다.
36
+
에디터 모달의 비교 연산자 드롭다운은 **Legacy 단일 모드에서만** 표시하며, `<` (LESS_THAN)과 `>` (GREATER_THAN) 두 가지만 제공한다. 스키마에는 `LESS_THAN_OR_EQUAL`, `GREATER_THAN_OR_EQUAL`도 존재하지만, UI에서는 사용하지 않는다.
28
37
29
38
#### 2. 조건 모드 선택 (단일/범위)
30
39
31
40
Auto Scaling Rule 에디터 모달에 Ant Design `Segmented` 컴포넌트를 추가하여 "단일" / "범위" 모드를 전환한다.
32
41
33
-
-**단일 모드** (기본): 비교 연산자(`<`, `>`) 하나와 threshold 값을 입력
34
-
-**범위 모드**: `[하한값]` ~ `[상한값]` 범위를 지정 (`minThreshold`/`maxThreshold` 사용)
42
+
-**단일 모드** (기본): "상한" 또는 "하한" 방향을 선택하고 threshold 값을 입력
-**범위 모드**: `[하한값]` ~ `[상한값]` 범위를 지정 (`minThreshold` + `maxThreshold` 동시 사용)
35
46
- 하한값 >= 상한값이면 validation 에러를 표시
36
47
48
+
> **참고**: Strawberry API (>=26.4.0) 전용. Legacy (<26.4.0)에서는 Graphene `comparator` + 단일 `threshold`를 그대로 사용하며, 범위 모드는 지원하지 않는다.
49
+
37
50
#### 3. Prometheus Preset 기반 메트릭 선택
38
51
39
52
-`baiClient.supports('prometheus-auto-scaling-rule')` (또는 >=26.4.0 대응 키)로 기능 게이팅
40
-
-**>=26.4.0**: 새로운 metric source가 추가될 예정. Condition 영역에서 `prometheusQueryPresets` 기반 Select로 metric name을 선택할 수 있도록 함. Preset 선택 시 `queryTemplate`과 `timeWindow`가 자동 적용
41
-
-**<26.4.0**: 기존 방식 유지 (metric source 선택 + metric name 수동 입력)
42
-
-**TODO(needs-backend)**: 새로운 metric source의 구체적인 enum 값과 동작은 백엔드 PR 머지 후 확정
53
+
-**>=26.4.0**: `AutoScalingMetricSource.PROMETHEUS`가 추가됨. Condition 영역에서 metric source로 `PROMETHEUS`를 선택하면, `prometheusQueryPresets` 기반 Select로 preset을 선택할 수 있도록 함. Preset 선택 시 `queryTemplate`과 `timeWindow`가 자동 적용되고, `prometheusQueryPresetId`가 Rule에 저장됨
54
+
-**<26.4.0**: 기존 방식 유지 (metric source `KERNEL`/`INFERENCE_FRAMEWORK` 선택 + metric name 수동 입력)
55
+
56
+
##### Metric Source별 UI 분기 (>=26.4.0 전용)
57
+
58
+
`<26.4.0`에서는 `KERNEL`/`INFERENCE_FRAMEWORK`만 표시되며, `PROMETHEUS`는 노출하지 않는다.
59
+
60
+
| metricSource | Preset 선택 UI | prometheusQueryPresetId | metric name |
61
+
|---|---|---|---|
62
+
|`KERNEL`| 숨김 |`null`| AutoComplete (자동완성 목록: `cpu_util`, `mem`, `net_rx`, `net_tx` + 자유 입력 가능) |
63
+
|`INFERENCE_FRAMEWORK`| 숨김 |`null`| AutoComplete (자동완성 목록 없음, 자유 입력) |
64
+
|`PROMETHEUS`| 표시 (필수) | 필수 | preset의 `metricName`에서 자동 채움 (입력 불필요) |
65
+
66
+
##### Preset 선택 UI 동작
67
+
68
+
1. metric source 드롭다운에서 `PROMETHEUS` 선택 시 Prometheus Query Preset Select가 추가로 노출
69
+
2. Preset 목록은 `prometheusQueryPresets` query로 로드하여 `name`을 드롭다운에 표시
70
+
3. Preset 선택 시:
71
+
-`prometheusQueryPresetId`에 선택된 preset의 UUID 저장 (Relay global ID를 디코딩한 raw UUID)
72
+
-`metricName`은 preset의 `metricName`에서 자동으로 채움 (사용자 입력 불필요)
73
+
-`queryTemplate`을 읽기 전용으로 표시하여 사용자가 쿼리 내용 확인 가능
74
+
-`timeWindow`가 자동 적용 (preset의 `timeWindow`가 null이면 사용자 입력)
75
+
76
+
##### Rule 목록에서 Prometheus preset 표시
77
+
78
+
`metricSource`가 `PROMETHEUS`인 rule은 목록에서 preset 이름을 표시한다. `prometheusQueryPresetId`로 `prometheusQueryPreset(id)` query를 호출하거나, preset 목록을 한 번 로드하여 클라이언트 사이드에서 매칭한다.
79
+
80
+
##### Rule 수정 시 주의사항
81
+
82
+
-`updateAutoScalingRule`은 partial update — 변경할 필드만 전달
83
+
-`prometheusQueryPresetId: null`은 "미변경"(UNSET) 의미이며, 명시적으로 null로 설정할 수 없음
84
+
-`metricSource`를 `KERNEL`로 변경해도 `prometheusQueryPresetId`가 자동 클리어되지 않음 — UI에서 `KERNEL`/`INFERENCE_FRAMEWORK`일 때 preset 필드를 숨기는 것으로 처리
43
85
44
86
### 선택 (Nice to Have)
45
87
@@ -49,52 +91,135 @@ Prometheus Preset 모드(>=26.4.0)에서 메트릭 설정 form item의 `extra`
49
91
50
92
- 로딩 스피너 → 결과값 텍스트 + 새로고침 아이콘 버튼
51
93
-`options` 파라미터(`ExecuteQueryDefinitionOptionsInput`)로 `filterLabels`/`groupLabels` 전달
94
+
-`groupLabels`는 빈 배열 `[]`이라도 반드시 전달해야 함 (생략 시 validation error)
95
+
-`filterLabels`의 `key`는 preset의 `options.filterLabels`에 정의된 것만 허용됨
96
+
-`timeRange` 없이 호출하면 instant query (현재 값 1개), `timeRange` 포함 시 range query (시계열 배열)
0 commit comments