> For the complete documentation index, see [llms.txt](https://genos-docs.gitbook.io/default/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://genos-docs.gitbook.io/default/v1.9.5/admin-management/settings/bulk-control/code-serving.md).

# 일괄 제어 코드 서빙 유형

v1.9.4에서 워크플로우를 대상으로 만든 **일괄 제어**에 **코드 서빙** 유형이 추가됐습니다. 오랫동안 호출되지 않은 코드 서빙 **리비전**을 골라 결재 1건으로 한 번에 배포 중지합니다. 배포된 채 방치된 리비전이 GPU·메모리를 계속 점유하지 않도록 주기적으로 정리하는 용도입니다.

관리자는 **관리 > 일괄 제어**(`/admin/bulk-control?type=code_serving`)에서, 일반 사용자는 **마이페이지 > 일괄 제어** 탭에서 화면 왼쪽 유형 목록의 **코드 서빙**을 선택해 사용합니다. 처리 원칙은 워크플로우 일괄 중지와 같습니다. 중지를 막는 서비스 라우터 연결은 자동으로 해제하고, 카나리·트래픽 가중치·권한·진행 중인 신청이 있는 리비전만 막습니다.

<figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-a33d74fcd1d504a07818b84f0deddbb5bab405ca%2Fbulkctl_cs_01_code_serving_list.png?alt=media" alt=""><figcaption><p>관리 > 일괄 제어 > 코드 서빙</p></figcaption></figure>

> 일괄 제어의 공통 동작(미사용 기간 필터, 신청 단위, 결재·취소 흐름, 실행 결과)은 [v1.9.4 일괄 제어 매뉴얼](/default/v1.9.5/admin-management/settings/bulk-control.md)과 같습니다. 이 문서는 코드 서빙 유형에서 **달라지는 부분**을 중심으로 다룹니다.

### 주요 개념

| 개념          | 설명                                                                                                      |
| ----------- | ------------------------------------------------------------------------------------------------------- |
| 대상 단위 = 리비전 | 한 코드 서빙에 여러 리비전이 동시에 배포될 수 있어, 목록의 행 하나가 **배포 중인 리비전 하나**입니다. 같은 코드 서빙 이름이 여러 행에 나올 수 있으며 버전 ID로 구분합니다. |
| 미사용 리비전     | 판정 기간이 시작되기 전에 배포됐고, 그 기간 동안 호출이 0건인 배포 중 리비전입니다. 이 리비전에서 파생된 워크플로우가 기간 안에 호출됐다면 사용 중으로 봅니다.            |
| 해제          | 중지를 막는 연결을 중지 직전에 자동으로 끊는 것입니다. 코드 서빙에서는 **서비스 라우터 타깃**만 해제 대상입니다.                                      |
| 함께 중지       | 이 리비전을 바탕으로 만든 파생 워크플로우·MCP 서버·전처리기·A2A 카드는 막지 않고 리비전과 함께 꺼집니다.                                         |
| 영향 받는 리소스   | 파생 리소스를 쓰는 채팅·보고서·가드레일 등과, 이 코드 서빙을 호출하는 다른 코드 서빙입니다. 해제하지 않으므로 끊긴 채 남습니다. 연결된 리소스 건수에 포함되지 않습니다.       |
| 중지 승인 대기    | 일괄 중지 신청에 담긴 리비전은 실행이 끝날 때까지 코드 서빙 화면에 **중지 승인 대기**로 표시되고, 개별 중지·중지 취소·트래픽 가중치 변경이 막힙니다.                |

### 사용 권한과 진입 경로

| 화면                    | 경로                                      | 사용할 수 있는 사람                         | 보이는 범위                                    |
| --------------------- | --------------------------------------- | ----------------------------------- | ----------------------------------------- |
| 관리 > 일괄 제어 > 코드 서빙    | `/admin/bulk-control?type=code_serving` | 슈퍼 관리자 · 현재 워크스페이스 관리자(owner·admin) | 현재 워크스페이스에서 **수정 권한이 있는** 코드 서빙의 배포 중 리비전 |
| 마이페이지 > 일괄 제어 > 코드 서빙 | `/my-page` 의 '일괄 제어' 탭                  | 모든 사용자                              | **본인이 만든 리비전**                            |
| 운영 > 결재               | `/approval`                             | 일괄 제어 결재 권한 보유자                     | 결재 대기 중인 코드 서빙 일괄 중지 신청                   |

* 선택한 유형은 주소의 `?type=` 값으로 남아, 새로고침해도 코드 서빙 유형이 유지됩니다.
* 신청하려면 대상 코드 서빙의 **수정 권한**과, 해제할 **서비스 라우터의 수정 권한**이 모두 있어야 합니다.

### 중지 대상 찾기

화면에 들어오면 기본값인 **최근 30일** 기준으로 후보가 조회됩니다. 목록에는 아래 조건을 **모두** 만족하는 리비전만 나옵니다.

1. 현재 배포(온라인) 상태다.
2. 판정 기간이 시작되기 **전에** 배포됐다. 기준은 그 리비전의 가장 최근 배포 시각입니다.
3. 그 기간 동안 리비전 호출이 0건이다. 섀도(미러) 호출은 세지 않습니다.
4. 그 리비전에서 파생된 워크플로우도 기간 안에 호출되지 않았다.

필터 위 안내 문구가 현재 조회 기준을 알려 줍니다. 예: "배포한 지 30일이 지났지만 그동안 호출되지 않은 온라인 코드 서빙만 표시됩니다."

#### 필터

| 필터     | 설명                                                                                                          |
| ------ | ----------------------------------------------------------------------------------------------------------- |
| 관리 그룹  | 코드 서빙이 속한 관리 그룹으로 좁힙니다.                                                                                     |
| 생성자    | **리비전을 만든 사람**으로 좁힙니다. 마이페이지에서는 표시되지 않습니다.                                                                  |
| 미사용 기간 | 제한 없음 / 최근 7·14·30일 / 직접 선택(최대 90일). **제한 없음**이면 배포 중인 리비전 전체가 나오고 안내가 "연결 상태 온라인인 모든 코드 서빙이 표시됩니다."로 바뀝니다. |

#### 목록에서 볼 수 있는 정보

| 컬럼          | 설명                                                                          | 정렬 |
| ----------- | --------------------------------------------------------------------------- | -- |
| ID / 버전 ID  | 리비전 ID와 버전 번호입니다.                                                           | —  |
| 코드 서빙 이름    | 행을 더블클릭하면 **리비전 상세**(`/serving/code/detail/{id}/revision/{revId}`)로 이동합니다.  | ○  |
| 커밋 메시지      | 리비전을 만들 때 남긴 메시지입니다. 같은 코드 서빙의 여러 리비전을 구분할 때 씁니다.                           | —  |
| 연결 상태       | 배포 상태입니다. 목록에는 '온라인'만 표시됩니다.                                                | —  |
| 관리 그룹 / 생성자 | 코드 서빙의 관리 그룹과 리비전 생성자입니다.                                                   | —  |
| 배포자 / 배포일시  | 이 리비전을 마지막으로 배포한 사람과 시각입니다. **기본 정렬(최신순)** 입니다.                             | ○  |
| 최근 호출일시     | 게이트웨이를 거친 마지막 호출 시각입니다. 기록이 없으면 `-` 입니다.                                    | ○  |
| 연결된 리소스 (N) | 중지 시 해제되는 서비스 라우터 타깃 건수입니다. 눌러서 상세를 봅니다.                                    | —  |
| 배포 상태       | 리비전의 배포 상태(예: 배포 완료)입니다. 신청에 담기면 **승인 대기 중**·**중지 처리 중** 배지로 바뀝니다. (마이페이지만) | —  |
| 배포 중지 취소    | 본인 신청을 철회하는 버튼입니다. (마이페이지만)                                                 | —  |

> **최근 호출일시 참고** — 이 값은 게이트웨이가 리비전별로 기록합니다(리비전당 최대 60초에 1회 갱신). 미사용 **판정**은 이 값이 아니라 실시간 호출 집계로 하므로, 표시값과 판정이 몇 초 어긋나도 결과에는 영향이 없습니다.

#### 목록이 비어 있을 때

| 상황             | 화면                                                                                                 |
| -------------- | -------------------------------------------------------------------------------------------------- |
| 조건에 맞는 리비전이 없음 | "미사용 코드 서빙이 없습니다." (제한 없음이면 "코드 서빙이 없습니다.")                                                        |
| 이용 로그 조회 실패    | "이용 로그를 조회하지 못했습니다."                                                                               |
| 이용 로그 수집 중단 의심 | "이용 로그 수집이 중단된 것으로 보입니다." — 선택한 기간 동안 코드 서빙과 워크플로우 호출이 **모두** 0건이라 판정을 신뢰할 수 없는 경우입니다. 목록을 비워 둡니다. |

### 연결된 리소스 미리 확인하기

목록의 **연결된 리소스 (N)** 를 누르면 오른쪽에 리비전 단위 패널이 열립니다. 상단에 "코드 서빙 리비전 배포를 중지하면 아래 리소스도 함께 해제됩니다." 안내가 표시되고, 그 아래 **서비스 라우터** 섹션에 이 리비전을 타깃으로 쓰는 라우터가 나옵니다.

<figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-4ff6a939c4db4ae5bca87a5cbb27aac3abf8a123%2Fbulkctl_cs_02_connected_resources_panel.png?alt=media" alt=""><figcaption><p>연결된 리소스 패널</p></figcaption></figure>

* 각 라우터 행에는 엔드포인트, 가중치, 트래픽 흐름, 카나리 여부가 함께 표시됩니다. 라우터 이름을 누르면 해당 라우터 화면이 새 탭으로 열립니다.
* 리비전이 진행 중인 라우터 카나리의 대상이면 안내 문구는 숨겨집니다. 이때는 중지 자체가 막혀 있습니다.
* 패널 건수(N)는 **해제 대상(서비스 라우터 타깃) 건수**입니다. 함께 중지되는 파생 리소스와 영향 받는 리소스는 세지 않습니다.

중지할 때 리소스별 동작은 아래와 같습니다.

| 리소스                                                            | 중지 시 동작                                                                                                                                 | 패널 표시     |
| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------- |
| 서비스 라우터 가중치 타깃                                                 | 타깃 목록에서 제거(해제)된 뒤 리비전이 중지됩니다. **재배포해도 타깃은 자동으로 돌아오지 않습니다.** 해제는 **코드 서빙 라우터에서만** 일어나며, ID 숫자가 같은 워크플로우·모델 서빙이 걸린 다른 유형의 라우터는 건드리지 않습니다. | ○ (건수 포함) |
| 파생 워크플로우·MCP 서버·전처리기·A2A 카드                                    | 리비전과 함께 꺼집니다.                                                                                                                           | —         |
| 파생 리소스를 쓰는 채팅·보고서·데이터 분석·가드레일·워크플로우·자동 적재, 이 코드 서빙을 호출하는 코드 서빙 | 해제하지 않아 끊긴 채 남습니다.                                                                                                                      | —         |
| AI 회의록(화자 분리)                                                  | 해제하지 않습니다. AI 회의록은 가중치 추첨으로 리비전을 고르므로 가중치 0 리비전은 쓰지 않고, 가중치가 있는 리비전은 애초에 중지가 막힙니다.                                                      | —         |

### 배포 중지 신청하기

1. 중지할 리비전의 체크박스를 선택합니다. 상단에 "N개 중 M개 선택됨"이 표시되고 **배포 중지** 버튼이 활성화됩니다.
2. **배포 중지**를 누르면 확인 창이 뜹니다. 선택한 리비전에 연결된 리소스가 있으면 "연결된 리소스는 자동으로 배포 중지 및 연결 해제됩니다." 안내가 붙습니다. **확인**을 누릅니다.

   <figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-17e4a271fe9caed6693dae279672860b4dc48ac6%2Fbulkctl_cs_03_stop_confirm_modal.png?alt=media" alt=""><figcaption><p>배포 중지 확인</p></figcaption></figure>
3. 결과에 따라 메시지가 다릅니다.

| 상황              | 메시지               | 이후 흐름                        |
| --------------- | ----------------- | ---------------------------- |
| 관리 화면에서 관리자가 신청 | "배포 중지가 시작되었습니다." | 결재 없이 바로 실행 대기열에 오릅니다.       |
| 마이페이지에서 신청      | "배포 중지가 신청되었습니다." | 결재 대기 상태가 되고, 결재자에게 알림이 갑니다. |

신청한 리비전은 목록에 **승인 대기 중** 배지가 붙고 다시 선택할 수 없습니다. 코드 서빙 화면에서도 해당 리비전이 **중지 승인 대기**로 표시됩니다.

> **일괄 결재가 코드 서빙 자체 중지 결재를 대신합니다.** 리비전 상세에서 따로 중지를 신청할 필요가 없습니다. 실행이 끝나면 코드 서빙 운영 이력에 승인된 중지 결재 기록이 남고, 메모에 일괄 신청 번호가 적힙니다.

### 선택할 수 없는 리비전

지금 중지할 수 없는 리비전도 목록에 그대로 나오며, 체크박스가 비활성화됩니다. 체크박스에 마우스를 올리면 사유가 표시됩니다.

<figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-ee381b866c8a50d032f3422c38fb70234a45d1d0%2Fbulkctl_cs_04_blocked_tooltip.png?alt=media" alt=""><figcaption><p>차단 사유 툴팁</p></figcaption></figure>

| 사유               | 안내 문구                                                   | 해소 방법                                |
| ---------------- | ------------------------------------------------------- | ------------------------------------ |
| 트래픽 가중치 > 0      | "트래픽 가중치가 설정돼 있어 선택할 수 없습니다. 가중치를 0으로 바꾼 뒤 중지할 수 있습니다." | 코드 서빙 트래픽 분배에서 이 리비전의 가중치를 0으로 바꿉니다. |
| 서비스 라우터 카나리 진행 중 | "서비스 라우터 카나리가 진행 중입니다. 카나리 정리 후 중지할 수 있습니다."            | 라우터 카나리를 전면 전환 또는 원복으로 정리합니다.        |
| 서비스 라우터 해제 권한 없음 | "연결된 서비스 라우터를 해제할 권한이 없습니다."                            | 라우터 수정 권한이 있는 담당자가 신청합니다.            |
| 개별 중지 결재 대기      | "개별 중지 신청이 승인 대기 중이라 선택할 수 없습니다."                       | 리비전 상세에서 올린 중지 결재가 처리되거나 취소되면 풀립니다.  |
| 이미 일괄 신청됨        | "배포 중지 승인 대기 중으로 선택할 수 없습니다."                           | 결재가 처리되거나 신청을 취소하면 풀립니다.             |
| 일괄 중지 실행 중       | "배포 중지 처리 중으로 선택할 수 없습니다."                              | 실행이 끝나기를 기다립니다.                      |
| 그 외              | "지금은 중지를 신청할 수 없는 코드 서빙입니다."                            | —                                    |

> 트래픽 가중치와 카나리는 시스템이 자동으로 정리하지 않습니다. 사용자가 먼저 정리해야 선택할 수 있습니다.

### 결재 — 신청 검토하고 승인하기

마이페이지에서 올라온 신청은 **운영 > 결재**에서 처리합니다. 알림 토스트의 **검토**를 눌러도 같은 모달이 열립니다.

<figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-07ae37ec5699fcf860f4df7a32ed76bced9575b0%2Fbulkctl_cs_05_approval_review_modal.png?alt=media" alt=""><figcaption><p>결재 상세 모달</p></figcaption></figure>

| 영역       | 코드 서빙 신청에서 보이는 내용                                                                           |
| -------- | ------------------------------------------------------------------------------------------- |
| 신청 내용    | 신청자·신청일시, 결재 유형(배포), 상태(중지), **상세 유형(코드 서빙)**, 대상                                           |
| 신청 내용 상세 | 대상 리비전 목록. 이름을 누르면 **리비전 상세**가 새 탭으로 열리고, 같은 코드 서빙의 리비전은 버전으로 구분합니다. 변경 전(온라인) → 변경 후(오프라인) |
| 결재 결과    | 결재 상태·결재자·결재일시·반려 사유                                                                        |

각 리비전 행을 펼치면 **중지/연결 해제 예정인 연결된 리소스 (N)** 가 나옵니다. 사이드 패널과 같이 **해제되는 서비스 라우터만** 표시하고 건수도 해제 대상만 셉니다. 함께 꺼지는 파생 워크플로우·MCP 서버·전처리기·A2A는 표시하지 않습니다(실행 결과 기록에는 남습니다). 해제 대상이 없으면 펼침 버튼이 비활성화되고 "연결된 리소스가 없습니다." 툴팁이 나옵니다.

* 승인 목록에서 코드 서빙 일괄 중지 행을 **더블클릭**하면 신청이 올라온 화면의 코드 서빙 유형(`?type=code_serving`)으로 이동합니다.
* 승인·반려·신청 취소 결과는 신청자에게 알림으로 전달됩니다(결재자가 신청자 본인이면 생략).

| 알림           | 받는 사람                          | \[검토] 가능 |
| ------------ | ------------------------------ | -------- |
| 일괄 제어 신청     | 슈퍼 관리자, 신청 워크스페이스의 owner·admin | 같음       |
| 결과(승인·반려·취소) | 신청자                            | —        |

### 마이페이지에서 내 리비전 정리하기

마이페이지 **일괄 제어** 탭에서 유형을 **코드 서빙**으로 고르면, 관리 화면과 같은 목록을 **본인이 만든 리비전**으로만 좁혀 보여 줍니다. 생성자 필터는 없고, **배포 상태** 컬럼과(신청 중인 행에만 나오는) **배포 중지 취소** 버튼이 추가됩니다. 마이페이지에서 올린 신청은 신청자가 관리자여도 결재를 거칩니다.

<figure><img src="https://1442180325-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVa1tsb4kzRuGbCJsMdPX%2Fuploads%2Fgit-blob-6e2f1d0074dda13c1edb5e5c7d5824e91af2bb10%2Fbulkctl_cs_06_my_page_tab.png?alt=media" alt=""><figcaption><p>마이페이지 일괄 제어 > 코드 서빙</p></figcaption></figure>

### 신청 이후 코드 서빙 화면에서 달라지는 점

일괄 중지 신청에 담긴 리비전은 결재 대기·실행 대기·실행 중인 동안 다른 화면에서도 보호됩니다. 열어 둔 화면에서 실수로 바꿔 신청 내용과 어긋나지 않게 하기 위해서입니다.

| 화면                             | 동작                                                                                                                                                                                        |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 코드 서빙 리비전 상세 \[중지]             | "일괄 배포 중지로 신청된 리소스로, 개별로 중지할 수 없습니다." 안내 후 중단                                                                                                                                             |
| 코드 서빙 리비전 상세 \[중지 취소]          | "지금은 중지를 취소할 수 없습니다." 안내 후 중단                                                                                                                                                             |
| 코드 서빙 트래픽 분배                   | 이 리비전의 가중치를 **바꾸면** 저장이 거부됩니다. 다른 리비전만 바꾸거나 값을 그대로 다시 저장하는 것은 허용됩니다.                                                                                                                      |
| 서비스 라우터 \[라우터 정책] 탭(코드 서빙 라우터) | 타깃 표에 '배포 중지 대기 중' 배지가 붙고, 리비전 선택 목록에 '(중지 승인 대기)'가 붙은 채 선택할 수 없습니다. 카나리·Shadow 대상으로도 고를 수 없습니다. 이미 Shadow 모드에 걸려 있던 리비전은 Primary·Shadow 선택값에 다른 항목과 같은 형식으로 `리비전 ID (중지 승인 대기)` 로 표시됩니다. |
| 서비스 라우터 저장                     | 배포 중이 아니거나 일괄 중지 대기 중인 리비전을 **새로** 타깃·정책에 넣으면 저장이 거부됩니다. 이미 걸려 있던 타깃은 그대로 저장됩니다.                                                                                                          |

### 신청 취소와 실행 결과

신청 취소 방법·단위(행이 아니라 신청 전체)·가능 시점은 워크플로우와 같습니다. 취소 확인 창에는 "이 신청에 포함된 다른 코드 서빙도 함께 취소됩니다."가 표시됩니다.

승인된 신청은 리비전 1건마다 **재검증 → 서비스 라우터 타깃 해제 → 리비전 중지** 순으로 실행됩니다.

| 상황                         | 코드 서빙 상태                                                                              |
| -------------------------- | ------------------------------------------------------------------------------------- |
| 신청 직후                      | 중지 승인 대기                                                                              |
| 중지 성공                      | 중지 — 파생 워크플로우·MCP·전처리기·A2A도 함께 꺼집니다.                                                  |
| 반려 · 신청 취소 · 실행 시 건너뜀 · 실패 | '중지 승인 대기'가 풀리고, 리비전 상세에서 올린 개별 중지가 반려·취소됐을 때와 같은 상태로 돌아갑니다. 실패하면 해제했던 라우터 타깃도 되돌립니다. |

### 오류·예외 처리

| 발생 상황                                 | 화면 표시                                                    |
| ------------------------------------- | -------------------------------------------------------- |
| 연결된 리소스 조회 시 리비전이 그 코드 서빙의 것이 아님      | 오류 토스트                                                   |
| 일괄 중지에 담긴 리비전을 상세에서 개별 중지 시도          | "\[코드 서빙 리비전: N] 이/가 일괄 배포 중지로 신청되어 개별로 중지할 수 없습니다."     |
| 일괄 중지에 담긴 리비전의 트래픽 가중치 변경             | "\[코드 서빙 리비전: N] 이/가 일괄 배포 중지로 신청되어 트래픽 분배를 변경할 수 없습니다." |
| 코드 서빙 라우터에 미배포·일괄 중지 대기 리비전을 새로 넣어 저장 | 새로고침 후 다시 저장하라는 안내 토스트 1개                                |
| 일괄 제어 권한 없음                           | "관리자만 허용된 작업입니다."                                        |
| 이용 로그 조회 실패·수집 중단 의심                  | 목록 상단 안내 배너                                              |

### 사용자 시나리오

#### 시나리오 1 — 관리자가 미사용 리비전을 정리한다

관리자가 **관리 > 일괄 제어**에서 유형을 **코드 서빙**으로 바꿉니다. 최근 30일 기준 후보 중 같은 코드 서빙의 구버전 리비전 3건을 커밋 메시지로 확인하고, **연결된 리소스 (1)** 패널에서 해제될 서비스 라우터를 확인한 뒤 **배포 중지 → 확인**을 누릅니다. 결재 없이 실행되고, 라우터 타깃이 해제된 뒤 리비전이 중지됩니다.

#### 시나리오 2 — 가중치 때문에 선택되지 않는다

운영 중인 리비전의 체크박스가 회색입니다. 툴팁에 "트래픽 가중치가 설정돼 있어 선택할 수 없습니다."가 보입니다. 이 리비전은 아직 트래픽을 받고 있으므로, 정말 내릴 리비전이라면 코드 서빙 트래픽 분배에서 가중치를 0으로 옮긴 뒤 다시 일괄 제어로 돌아와 선택합니다.

#### 시나리오 3 — 개발자가 본인 리비전을 정리하고 결재를 받는다

개발자가 **마이페이지 > 일괄 제어 > 코드 서빙**에서 본인이 만든 리비전 2건을 신청합니다. 두 행에 **승인 대기 중** 배지가 붙고, 코드 서빙 화면에도 **중지 승인 대기**로 표시됩니다. 결재 전 리비전 상세에서 \[중지 취소]를 눌러 보지만 "지금은 중지를 취소할 수 없습니다." 안내가 뜹니다. 철회하려면 일괄 제어 탭의 **배포 중지 취소**를 씁니다.

#### 시나리오 4 — 열어 둔 라우터 화면에서 저장이 거부된다

다른 사용자가 코드 서빙 라우터 정책 탭을 열어 둔 사이, 그 라우터에 아직 없던 리비전 X가 일괄 중지 신청됐습니다. 새로고침 없이 X를 타깃으로 추가해 저장하자 새로고침 후 다시 저장하라는 안내가 뜹니다. 화면을 새로고침하면 X에 '(중지 승인 대기)'가 붙어 선택할 수 없게 표시됩니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://genos-docs.gitbook.io/default/v1.9.5/admin-management/settings/bulk-control/code-serving.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
