> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 컨피규레이터

> 하나의 부품 번호 아래 부품 변형 제품군을 모델링합니다. 주문 시점의 파라미터가 규칙에 전달되어 각 라인의 자재 명세서, 라우팅, 원가를 확정합니다.

컨피규레이터를 사용하면 하나의 부품 번호가 변형 제품군 전체를 대표할 수 있습니다. 엔지니어는 변형이 의존하는 **파라미터**와 그 답을 제조방법으로 바꾸는 **규칙**을 정의합니다. 영업 및 계획 담당자는 각 견적 라인, 수주 라인 또는 작업에서 파라미터에 답하고, Alforse는 해당 주문 전용의 제조방법을 만듭니다.

## 동작 방식

구성된 부품은 세 개의 계층으로 이루어집니다.

| 계층 | 설정하는 사람 | 보관하는 내용 |
| - | - | - |
| **템플릿 제조방법** | 설계 | 시작점 역할을 하는 부품의 저장된 [자재 명세서 및 공정 목록](https://docs.alforse.com/ko/docs/reference/methods.md). |
| **파라미터** | 설계 | 길이, 마감, 자재처럼 주문 시점에 묻는 질문. |
| **규칙** | 설계 | 파라미터 답을 읽어 제조방법 필드를 설정하거나 제조방법의 라인을 필터링하는 코드. |

구성된 부품을 주문에 추가하면 사용자가 파라미터에 답하고 규칙이 실행되며, 라인은 템플릿이 아니라 제품군의 구체적인 인스턴스인 자체 확정 제조방법을 받습니다.

## 부품의 구성 켜기

부품의 제조 설정을 열어 **설정됨**("제조용으로 설정된 품목입니다")을 켭니다. 그때부터 부품의 저장된 제조방법은 템플릿으로 취급되며, 해당 부품을 사용하는 모든 작업 또는 견적 라인이 규칙을 실행하여 자체 확정 제조방법을 만듭니다.

## 파라미터 정의

파라미터는 컨피규레이터가 요청하는 하나의 입력입니다. 각 파라미터에는 **라벨**(사용자에게 보이는 이름), 기계용 **키**(규칙이 참조하는 이름), **데이터 유형**이 있습니다.

### 파라미터 키

키는 영문자와 숫자로 구성되며 세그먼트 사이에 밑줄 하나를 둡니다. 예: `length`, `wall_thickness`. 규칙 코드가 키로 각 값을 읽기 때문에 공백, 하이픈, 앞뒤 또는 연속된 밑줄은 거부됩니다. 오류 메시지가 요구하는 관례는 소문자 키입니다.

### 데이터 유형

FieldType

<details>
  <summary>**text**`string`</summary>

  자유 텍스트 값입니다.
</details>

<details>
  <summary>**numeric**`number`</summary>

  길이, 개수, 보어 크기 같은 숫자입니다.
</details>

<details>
  <summary>**boolean**`true / false`</summary>

  예/아니요 토글입니다.
</details>

<details>
  <summary>**list**`enum`</summary>

  사용자가 제공한 고정된 선택지 중 하나입니다. 이 유형에는 선택지(`listOptions`)가 필수입니다.
</details>

<details>
  <summary>**material**`material`</summary>

  실제 자재 품목에 대한 참조이며, 필요하면 하나의 자재 형태로 필터링할 수 있습니다.
</details>

<details>
  <summary>**date**`date`</summary>

  달력상의 날짜입니다.
</details>

### 파라미터 그룹화

주문 양식이 하나의 긴 목록이 아니라 섹션(예: 치수, 마감, 공차)으로 읽히도록 파라미터를 **그룹**으로 분류합니다. 그룹은 정렬 순서가 있는 이름 붙은 제목입니다. 새 파라미터는 이동하기 전까지 자동으로 생성되는 **"그룹 없음"**(Ungrouped) 그룹에 들어갑니다. 그룹과 파라미터 모두 드래그 앤 드롭으로 순서를 바꿀 수 있습니다.

## 규칙 작성

**규칙**은 하나의 제조방법 필드를 파라미터로 그 필드의 값을 계산하는 코드에 연결합니다.

### 규칙을 연결하는 위치

내장된 [제조방법](https://docs.alforse.com/ko/docs/reference/methods.md) 편집기 안에서 필드별로 규칙을 연결합니다.

* **자재 명세서:** 각 구성품은 `itemId`(구성품 교체), `quantity`, `unitOfMeasureCode`, `methodType`을 노출합니다.
* **공정 목록:** 작업장, 프로세스, 준비·노무·기계 시간 등의 공정 필드.

규칙이 있는 필드에는 고정 값 대신 "설정됨" 표시가 나타납니다.

### 규칙 작성

규칙은 파라미터에서 함수 골격과 타입 정의를 생성해 주는 코드 편집기에서 작성합니다. 코드는 `configure(params)` 함수의 본문입니다. `params`에는 키별 답이 들어 있고, 필드의 값을 `return`합니다.

```typescript theme={null}
function configure(params: Params): number {
  // one thread every 2mm of engagement, minimum 4
  return Math.max(4, Math.ceil(params.engagement_length / 2));
}
```

저장하기 전에 **테스트 실행**을 선택하여 출력을 확인합니다.

### 전체 라인 필터링

규칙은 전체 라인을 유지하거나 제거할 수도 있습니다. `billOfMaterial` 또는 `billOfProcess` 규칙은 유지할 구성품 또는 공정 이름의 목록을 반환합니다. 예를 들어 boolean 파라미터로 서브어셈블리 전체나 외주 가공 단계를 제거할 수 있습니다.

### 샌드박스 제한

NOTE

**규칙은 샌드박스에서 실행되므로 순수하게 유지하십시오**

규칙 코드는 제조방법이 생성될 때와 편집기에서 규칙을 테스트할 때 모두 격리된 JavaScript 샌드박스에서 실행됩니다. 입력은 파라미터뿐이고 출력은 반환 값뿐입니다. 규칙에는 네트워크 접근, 타이머, 페이지 또는 서버 접근이 없으며 실행마다 시간과 메모리가 제한됩니다.

규칙이 컴파일에 실패하거나 예외를 던지거나 제한을 초과하면 Alforse는 해당 규칙을 무시합니다. 필드는 기본값을 유지하고 자재 명세서 또는 공정 목록은 모든 라인을 유지합니다.

## 주문에서 품목 구성

구성된 부품을 [견적](https://docs.alforse.com/ko/docs/reference/quotes.md) 라인, [수주](https://docs.alforse.com/ko/docs/reference/sales-orders.md) 라인 또는 [작업](https://docs.alforse.com/ko/docs/reference/jobs.md)에 추가하면 구성이 실행됩니다.

1. 라인 또는 작업 양식에서 구성된 부품을 선택합니다. 양식에 **설정**이 표시되고 **저장**은 비활성 상태로 유지됩니다.
2. **설정**을 선택하고 파라미터에 답합니다.
3. 제출합니다. Alforse는 답을 라인에 저장하고 이를 사용하여 [방법 가져오기](https://docs.alforse.com/ko/docs/reference/methods.md) 엔진을 실행합니다.
4. 규칙이 실행되고 라인은 자체 자재 명세서, 라우팅, 원가를 받습니다. 이제 **저장**이 활성화됩니다.

나중에 라인을 다시 구성하면 가격이 지워지고 새로운 답을 바탕으로 제조방법이 다시 도출됩니다.

HEADS UP

**구성된 품목에는 제조방법을 직접 선택할 수 없습니다**

제조방법은 규칙에서 나오므로 구성된 품목에 대해 작업이나 라인을 다른 제조방법으로 지정할 수 없습니다. 방법 가져오기 엔진은 이를 "Cannot override method of configured item"(구성된 품목의 제조방법은 재정의할 수 없습니다)이라며 거부합니다. 다른 결과를 얻으려면 파라미터를 변경하십시오.

## 문제 해결

| 증상 | 원인 | 해결 방법 |
| - | - | - |
| "Key must be lowercase and underscore separated"(키는 소문자이며 밑줄로 구분되어야 합니다) | 파라미터 키에 공백, 하이픈 또는 잘못된 위치의 밑줄이 있습니다. | `wall_thickness` 같은 키를 사용하십시오. |
| "List options are required"(목록 옵션이 필요합니다) | 데이터 유형이 **list**인데 옵션이 입력되지 않았습니다. | 옵션을 추가하거나 다른 유형을 선택하십시오. |
| "Cannot override method of configured item" | 구성된 품목에 다른 제조방법을 지정하려 했습니다. | 대신 파라미터를 변경하십시오. |
| 규칙이 효과가 없는 것처럼 보임 | 규칙이 샌드박스에서 실패하여 필드가 기본값을 유지했습니다. | 규칙을 열고 **테스트 실행**을 선택하여 오류를 수정하십시오. |
| **저장**이 비활성 상태로 유지됨 | 구성된 라인이 아직 구성되지 않았습니다. | **설정**을 선택하고 파라미터에 답한 뒤 제출하십시오. |

## 관련 문서

**품목**

품목 마스터와 "설정됨"을 포함한 유형별 설정입니다.

[Open](https://docs.alforse.com/ko/docs/reference/items.md)

**제조방법 및 조달**

컨피규레이터가 주문마다 확정하는 자재 명세서와 라우팅입니다.

[Open](https://docs.alforse.com/ko/docs/reference/methods.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.