태스크 할당, 반려 설정 및 어노테이터 유형별 추가 옵션을 구성하는 단계입니다.
## 기본 설정
| 항목 | 설명 | 기본값 |
|------|------|--------|
| **태스크당 최대 할당 수** | 하나의 태스크에 할당할 수 있는 최대 작업자 수 | 1 |
| **반려 가능 여부** | 라벨링 작업자가 태스크를 반려할 수 있는지 설정 | 비활성 |
## 어노테이터 유형별 추가 옵션
선택한 어노테이터 유형에 따라 추가 옵션이 표시됩니다.
### 비디오 어노테이터
| 항목 | 설명 |
|------|------|
| **프레임 간격** | 어노테이션 대상 프레임의 간격 설정 |
### 프롬프트 어노테이터
| 항목 | 설명 |
|------|------|
| **프롬프트 편집 허용** | 작업자가 프롬프트를 수정할 수 있는지 설정 |
| **답변 편집 허용** | 작업자가 LLM 답변을 수정할 수 있는지 설정 |
:::note[유형별 옵션]
이미지, 오디오, PCD, 텍스트 어노테이터에서는 추가 옵션이 표시되지 않습니다.
:::
## 스마트 도구(플러그인)
프로젝트에서 사용할 스마트 도구(플러그인)를 설정할 수 있습니다. 스마트 도구는 라벨링 작업을 보조하는 자동화 도구입니다.
| 항목 | 설명 |
|------|------|
| **플러그인** | 사용할 플러그인 선택 |
| **에이전트** | 플러그인에서 사용할 에이전트 설정 |
| **파라미터** | 플러그인 실행에 필요한 파라미터 설정 |
:::tip[스마트 도구]
스마트 도구는 사전에 등록된 플러그인이 있어야 설정할 수 있습니다. 등록된 플러그인이 없으면 이 섹션을 건너뛸 수 있습니다.
:::
## API 흐름
"다음 단계" 클릭 시 현재 Draft에서 3단계의 `configuration`을 가져와 4단계 데이터와 병합한 뒤 서버에 전송합니다.
### 1. Draft 조회 — `GET /drafts/CREATE/`
4단계 제출 전에 Draft를 조회하여 3단계에서 저장한 `configuration` 데이터를 가져옵니다.
**Request**
```
GET /drafts/CREATE/
```
**Response (200 OK)**
```json
{
"target": "CREATE",
"data": {
"phase": 3,
"category": "image",
"title": "자동차 객체 검출 프로젝트",
"access_level": "public",
"data_collection": 1,
"configuration": {
"schema_type": "dm_schema",
"classification": { ... }
}
}
}
```
### 2. 단계별 데이터 검증 — `POST /projects/`
기본 작업 설정과 3단계 `configuration`을 병합하여 `phase: 4`와 함께 전송합니다.
**Request (기본)**
```json
POST /projects/
{
"phase": 4,
"can_discard": false,
"count_max_assignments_per_task": 3,
"configuration": {
"schema_type": "dm_schema",
"classification": { ... }
},
"project_plugins": []
}
```
| 필드 | 타입 | 필수 | 설명 |
|------|------|------|------|
| `phase` | `integer` | 필수 | 현재 단계 번호 (`4`) |
| `can_discard` | `boolean` | 필수 | 반려(불량) 허용 여부 |
| `count_max_assignments_per_task` | `integer` | 필수 | 태스크당 최대 할당 수. `0`이면 무제한 |
| `configuration` | `object` | 필수 | 3단계 configuration에 4단계 옵션을 병합한 객체 |
| `project_plugins` | `array` | 선택 | 스마트 도구(플러그인) 설정 목록 |
#### 비디오 어노테이터 추가 필드
비디오 카테고리의 경우 `configuration`에 프레임 간격이 추가됩니다.
```json
{
"phase": 4,
"can_discard": false,
"count_max_assignments_per_task": 1,
"configuration": {
"schema_type": "dm_schema",
"classification": { ... },
"annotation_target_frame_interval": 5
},
"project_plugins": []
}
```
| 필드 | 타입 | 범위 | 설명 |
|------|------|------|------|
| `configuration.annotation_target_frame_interval` | `integer` | 1~120 | 어노테이션 대상 프레임 간격 |
#### 프롬프트 어노테이터 추가 필드
프롬프트 카테고리의 경우 `configuration.gptOptions`에 편집 허용 옵션이 추가됩니다.
```json
{
"phase": 4,
"can_discard": false,
"count_max_assignments_per_task": 1,
"configuration": {
"schema_type": "dm_schema",
"classification": { ... },
"gptOptions": ["useYn", "allowEditingOfPrompt", "allowEditingOfAnswers"]
},
"project_plugins": []
}
```
| gptOptions 값 | 설명 |
|----------------|------|
| `"useYn"` | LLM API 사용 활성화 |
| `"useTopicYn"` | 토픽 사용 활성화 |
| `"allowEditingOfPrompt"` | 질문 수정 허용 |
| `"allowEditingOfAnswers"` | 답변 수정 허용 |
| `"usePriorContextYn"` | 사전 맥락 프롬프트 사용 |
#### project_plugins 항목 구조
스마트 도구를 설정한 경우 `project_plugins` 배열에 포함됩니다.
```json
{
"project_plugins": [
{
"plugin": 1,
"agent": 5,
"params": {
"model": 3,
"plugin": "auto-labeling",
"version": "1.0.0"
}
}
]
}
```
| 필드 | 타입 | 설명 |
|------|------|------|
| `plugin` | `integer` | 플러그인 ID |
| `agent` | `integer` | 에이전트 ID |
| `params.model` | `integer` | 모델 ID |
| `params.plugin` | `string` | 플러그인 코드 |
| `params.version` | `string` | 플러그인 버전 |
**Response (201 Created)**
검증 성공 시 작업 설정 데이터가 반환됩니다.
**Error Response (400 Bad Request)**
```json
{
"count_max_assignments_per_task": ["이 값이 0보다 크거나 같은지 확인하십시오."]
}
```
### 3. 임시 저장 — `POST /drafts/`
검증 성공 후 이전 단계 데이터와 병합하여 저장합니다.
**Request**
```json
POST /drafts/
{
"target": "CREATE",
"data": {
"phase": 4,
"category": "image",
"title": "자동차 객체 검출 프로젝트",
"access_level": "public",
"data_collection": 1,
"configuration": { ... },
"can_discard": false,
"count_max_assignments_per_task": 3,
"project_plugins": [...]
}
}
```
:::note[configuration 병합]
4단계에서는 3단계에서 저장한 `configuration`(classification, schema_type)에 4단계 옵션(프레임 간격, gptOptions 등)을 병합하여 전송합니다. 기존 3단계 데이터를 덮어쓰지 않습니다.
:::
## 다음 단계로 이동
작업 설정을 완료한 후 **"다음 단계"** 버튼을 클릭하면 위 API 흐름을 거쳐 [사용자 및 역할 단계](./members-roles)로 이동합니다.