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

## 자동화 룰

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

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

***

### 1. 접속 경로

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

***

### 2. 목록 페이지

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

| 컬럼       | 의미                      |
| -------- | ----------------------- |
| **이름**   | 룰 이름. 클릭 시 편집 페이지로 이동   |
| **설명**   | 룰에 대한 설명(선택 입력)         |
| **우선순위** | 낮을수록 먼저 평가됨 (1\~9999)   |
| **조건**   | `N개 조건` 형태로 count만 표시   |
| **액션**   | `승인` / `거절` / `무시` 중 하나 |
| **상태**   | `활성` / `비활성`            |
| **생성일**  | 룰 생성 시각                 |

행 메뉴(`⋯`): **수정** / **활성↔비활성 토글** / **삭제(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: 이 외의 문제

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


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.smply.one/software_management/automation-rules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
