> For the complete documentation index, see [llms.txt](https://docs.smply.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.smply.one/software_management/automation-rules.md).

# 소프트웨어 발견 자동화 정책

## 자동화 룰

SMPLY가 새롭게 발견한 소프트웨어를 **조건에 따라 자동으로 승인·거절·무시**하도록 설정하는 기능입니다. 반복적인 발견 항목을 일일이 검토할 필요 없이 미리 정한 규칙으로 일괄 처리할 수 있습니다.

{% hint style="info" %}
**자동화 룰이란** 소프트웨어 발견(Discovery)에서 새로 나타난 항목 중 미리 정한 조건에 해당하는 건들을 **우선순위가 낮은(먼저 평가) 룰부터** 순차 평가하여 자동 처리합니다.
{% endhint %}

***

### 1. 접속 경로

**사이드바**: `소프트웨어` > `발견` > **`자동화 룰`** **URL**: `/software/discovery/automation-rules`

자동화 룰 화면 상단에는 **`소프트웨어 룰`** / **`사용자 룰`** 두 개의 탭이 있습니다. 이 문서는 첫 번째 **`소프트웨어 룰`** 탭(발견된 소프트웨어 자동 처리)을 기준으로 안내합니다.

{% hint style="info" %}
**`사용자 룰` 탭** 두 번째 **`사용자 룰`** 탭은 발견된 **사용자**를 조건에 따라 자동으로 승인·거절·무시하는 별도 룰입니다(URL: `/software/discovery/user-discovery-automation-rules`). 룰을 만드는 폼·조건 설정·AI 조건 생성 방식은 소프트웨어 룰과 동일하며, 대상이 소프트웨어가 아니라 사용자라는 점만 다릅니다. 탭을 클릭하면 해당 화면으로 이동합니다.
{% endhint %}

***

### 2. 목록 페이지

목록 페이지에서는 등록된 룰을 한눈에 볼 수 있습니다.

| 컬럼       | 의미                                                                                         |
| -------- | ------------------------------------------------------------------------------------------ |
| **이름**   | 룰 이름. 행에 마우스를 올리면 나타나는 **`열기`** 버튼으로 편집 페이지로 이동. 시스템이 제공하는 기본 룰에는 이름 앞에 **`기본`** 배지가 표시됩니다 |
| **설명**   | 룰에 대한 설명(선택 입력)                                                                            |
| **우선순위** | 낮을수록 먼저 평가됨 (1\~9999)                                                                      |
| **조건**   | 룰의 조건을 요약해서 표시(필드·연산자·값)                                                                   |
| **액션**   | `승인` / `거절` / `무시` 중 하나                                                                    |
| **상태**   | `활성` / `비활성`                                                                               |
| **생성일**  | 룰 생성 시각                                                                                    |

{% hint style="info" %}
**`기본` 배지** **`기본`** 배지가 붙은 룰은 시스템이 기본 제공하는 룰입니다. 직접 만든 룰과 구분하기 위한 표식이며, 다른 룰과 동일하게 수정·비활성화할 수 있습니다.
{% endhint %}

행 메뉴(`⋯`): **수정** / **활성↔비활성 토글** / **삭제(destructive)**

#### 헤더 버튼

* **`룰 추가`** → 생성 페이지로 이동
* **`지금 실행`** → 대기 중인 발견 항목에 활성 룰을 즉시 적용

#### 빈 상태

```
등록된 자동화 룰이 없습니다.
룰을 추가하면 발견된 소프트웨어가 자동으로 처리됩니다.
```

***

### 3. 룰 실행 흐름

#### "지금 실행" 버튼

1. **`지금 실행`** 클릭 → 확인 다이얼로그 *"자동화 룰 실행"* 이 열립니다.
2. 설명: *"활성화된 모든 룰을 대기 중인 발견 항목에 대해 즉시 실행합니다. 계속하시겠습니까?"*
3. 확인하면 백엔드가 모든 활성 룰을 우선순위 순으로 평가해 매칭된 항목을 처리합니다.
4. 완료 후 토스트:
   * 처리된 항목 있음: `"N건이 자동 처리되었습니다."`
   * 처리된 항목 없음: `"처리할 항목이 없습니다."`

{% hint style="info" %}
**자동 스케줄 여부** 현재 자동화 룰은 **수동 실행 전용**입니다. 자동 주기 실행은 지원되지 않으므로 일정 주기로 담당자가 `지금 실행`을 눌러주세요. 추후 스케줄 실행 기능이 추가될 수 있습니다.
{% endhint %}

***

### 4. 룰 생성하기

**단계 1: 룰 추가 페이지 열기**

1. 목록에서 **`룰 추가`** 버튼을 클릭합니다.
2. 페이지 제목: *"자동화 룰 추가"*

**단계 2: 기본 정보 입력**

| 필드       | 필수 | 설명                            |
| -------- | -- | ----------------------------- |
| **이름**   | ✅  | 최대 255자. 예: *"에이전트 발견 자동 승인"* |
| **설명**   |    | 최대 1024자. 선택 입력               |
| **우선순위** | ✅  | 1\~9999. 낮을수록 먼저 평가됩니다        |

**단계 3: 조건(Condition) 설정**

* 조건 그룹 타입: **`모두 충족할 때`** (AND) 또는 **`하나라도 충족할 때`** (OR)
* 각 조건 행은 **필드 → 연산자 → 값** 세 셀렉터로 구성되며 `조건 추가` 버튼으로 여러 개 추가할 수 있습니다.

**지원 필드:**

| 필드        | 의미                                              | 타입     |
| --------- | ----------------------------------------------- | ------ |
| **발견 소스** | 어디서 발견되었는가 (`카드` / `은행` / `구글 워크스페이스` / `에이전트`) | enum   |
| **발견 수**  | 이 소프트웨어가 몇 번 발견되었는가                             | 숫자     |
| **소프트웨어** | 특정 SaaS 제품 지정                                   | ID(검색) |
| **카테고리**  | 소프트웨어 카테고리                                      | 문자열    |

**연산자** (필드 타입별):

| 필드 타입 | 가능한 연산자                                 |
| ----- | --------------------------------------- |
| enum  | `=`, `≠`, `포함`, `미포함`                   |
| 숫자    | `=`, `≠`, `>`, `≥`, `<`, `≤`            |
| 문자열   | `=`, `≠`, `포함(텍스트)`, `정규식`, `포함`, `미포함` |
| ID    | `=`, `≠`, `포함`, `미포함`                   |

**단계 4: 액션(Action) 설정**

| 액션        | 의미                | 추가 입력                         |
| --------- | ----------------- | ----------------------------- |
| **자동 승인** | 발견 항목을 자동으로 승인 처리 | **소프트웨어 상태**: `사용 중` 또는 `미확인` |
| **자동 거절** | 발견 항목을 자동으로 거절    | —                             |
| **자동 무시** | 발견 항목을 자동으로 무시    | —                             |

**단계 5: 저장**

* **`저장`** 클릭 → 토스트 *"자동화 룰이 생성되었습니다."*
* 자동으로 목록 페이지로 복귀합니다.

***

### 5. 🪄 AI로 조건 생성하기

조건을 직접 만드는 대신, 자연어로 설명만 하면 AI가 **이름, 조건, 액션**을 자동으로 채워주는 기능이 생성 페이지에 포함되어 있습니다.

{% hint style="info" %}
**AI 조건 생성 위치** 생성 페이지 상단의 **🪄 AI 조건 생성** 섹션을 펼치세요(기본 접힘). 편집 페이지에는 없습니다.
{% endhint %}

**단계 1: 자연어로 룰 설명**

1. 입력창에 원하는 룰을 자연어로 입력합니다. 예: *"에이전트에서 발견된 생산성 도구는 사용중으로 승인하고 시뮬레이션 돌려봐"*
2. **`조건 생성`** 클릭 → *"조건을 분석하고 있어요..."* 로딩
3. AI가 제안 카드를 출력합니다.

**예시 칩(클릭 한 번으로 입력됨):**

* *"에이전트에서 발견된 소프트웨어는 사용중으로 승인"*
* *"카드 결제로 발견된 건은 무시"*
* *"생산성 카테고리 소프트웨어는 자동 승인"*
* *"발견 수 5건 이상이면 승인"*

**단계 2: AI 제안 확인 및 적용**

AI 제안 카드에는 이름·조건·액션이 요약되어 표시됩니다. 두 가지 선택이 가능합니다.

* **`적용`** — 폼 필드(이름·설명·조건·액션·소프트웨어 상태)에 자동으로 채워집니다. 요청 문구에 *"시뮬레이션 돌려봐"* 등이 포함됐다면 적용 직후 자동으로 시뮬레이션까지 실행됩니다.
* **`다시 생성`** — 입력을 유지한 채 다른 제안을 받습니다.

**AI가 조건을 만들지 못한 경우:**

| 상황              | 메시지                                          |
| --------------- | -------------------------------------------- |
| 언급한 소프트웨어를 못 찾음 | *"입력한 소프트웨어를 찾을 수 없습니다. 빌더에서 직접 선택해주세요."*    |
| 지원하지 않는 조건 포함   | *"사용할 수 없는 조건이 포함됐습니다. 빌더에서 직접 조건을 선택해주세요."* |
| 그 외 실패          | *"분석에 실패했습니다. 다시 시도하거나 빌더에서 직접 만들어주세요."*     |

***

### 6. 🧪 미리보기(Dry Run)

저장 전에 이 룰이 **실제로 어떤 항목에 적용되는지** 테스트할 수 있습니다.

**단계 1: 기간 선택**

폼 하단 **`미리보기`** 섹션에서 기간을 고릅니다: `7일` / `14일` / `30일`(기본) / `90일`.

**단계 2: 시뮬레이션 실행**

1. **`시뮬레이션 실행`** 클릭 → *"시뮬레이션 중..."*
2. 결과가 표로 출력됩니다.

**결과 표:**

* 요약: *"평가 대상: N건 · 매칭: N건"*
* 컬럼: `소프트웨어` / `(조건 사용 필드)` / `결과(승인/거절/무시/이미 처리됨)`
* 20행까지 표시 후 `...+N건 더`

**대상 없음 / 매칭 없음:**

* *"평가 대상이 없습니다."*
* *"조건에 매칭되는 발견 항목이 없습니다."*

***

### 7. 룰 편집 / 비활성화 / 삭제

목록 행의 `⋯` 메뉴에서 다음 작업을 수행할 수 있습니다.

* **수정** — 생성과 동일한 폼. AI 조건 생성 섹션은 편집 시 노출되지 않습니다.
* **활성 / 비활성** 토글 — 룰을 즉시 비활성화(삭제 없이 일시 중단).
* **삭제** — 확인 다이얼로그 후 영구 삭제.

수정 후 저장 시 토스트: *"자동화 룰이 수정되었습니다."*

***

### 8. 권한 안내

| 작업                             | 필요 권한                             |
| ------------------------------ | --------------------------------- |
| 목록 조회                          | 로그인된 워크스페이스 세션                    |
| 룰 추가 / 수정 / 삭제 / 상태 토글 / 지금 실행 | **`software-edit`** 권한 (소프트웨어 편집) |

권한이 없으면 `룰 추가`·`지금 실행` 버튼이 비활성화되고 툴팁으로 *"수정 권한이 없습니다."* 가 표시됩니다.

***

### 9. 활용 팁

* **우선순위 설계**: 범위가 좁은 조건(특정 소프트웨어)을 낮은 숫자로, 포괄적 조건(카테고리)은 큰 숫자로 배치하면 예측 가능한 흐름이 됩니다.
* **`무시` vs `거절`**: 거절은 해당 소프트웨어를 명시적으로 거부한 기록이 남고, 무시는 단순히 목록에서 감춥니다. 재검토 가능성이 있다면 `무시`를 추천합니다.
* **AI 생성 후 반드시 검토**: AI가 만든 조건은 편집 가능한 폼 상태로 적용되므로, 우선순위·소프트웨어 상태 등을 마지막에 직접 점검하고 저장하세요.

***

### 10. 문제 해결

#### Q: "지금 실행"을 눌러도 아무 것도 처리되지 않아요

**원인**: 매칭되는 발견 항목이 없거나 모든 룰이 비활성 상태입니다.

**해결 방법**:

1. 먼저 편집 페이지에서 \*\*`미리보기`\*\*로 기간을 `30일` 또는 `90일`로 넓혀 시뮬레이션을 돌려보세요.
2. 룰 상태가 **`활성`** 인지 확인합니다.
3. 여전히 처리되지 않으면 조건을 완화한 뒤 재시도합니다.

#### Q: 룰 추가 버튼이 비활성화되어 있어요

**원인**: 소프트웨어 편집(`software-edit`) 권한이 없습니다.

**해결 방법**: 워크스페이스 관리자에게 역할 변경을 요청하세요.

#### Q: AI로 만든 조건이 이상해요

**원인**: 자연어 문장이 중의적이거나 지원하지 않는 필드를 언급한 경우입니다.

**해결 방법**:

1. \*\*`다시 생성`\*\*으로 다른 결과를 받아보거나, 예시 칩을 참고해 문장을 더 구체적으로 다시 씁니다.
2. 그래도 원하는 결과가 안 나오면 `적용`을 눌러 반영한 뒤 빌더에서 직접 수정해 저장하세요.

#### Q: 삭제한 룰을 복구할 수 있나요

아니요. 삭제는 되돌릴 수 없습니다. 일시적으로 중단하고 싶다면 **비활성화** 토글을 사용하세요.

#### Q: 이 외의 문제

채널톡으로 문의해 주세요.
