snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
---
title: AI 에이전트
description: 자동화 워크플로우에 AI 기능을 직접 통합합니다.
---
## 개요
지능형 데이터 처리와 의사결정을 위해 자동화 워크플로우에 AI 기능을 직접 통합합니다.
## 기능
| 기능 | 설명 |
| --------------- | ---------------------------- |
| **AI 작업** | 모든 워크플로우에 AI 기반 단계를 추가합니다. |
| **데이터 강화** | 외부 데이터를 사용해 레코드를 자동으로 강화합니다. |
| **분류** | 콘텐츠 분석을 기반으로 레코드를 분류합니다. |
| **요약** | 텍스트 필드에서 요약을 생성합니다. |
| **사용자 지정 프롬프트** | AI가 데이터를 처리하는 방식을 정확히 정의합니다. |
## 사용 사례
* **리드 스코어링**: 유입 리드에 자동으로 점수를 매기고 우선순위를 지정합니다.
* **데이터 정리**: 회사명과 연락처 정보를 표준화합니다.
* **이메일 초안**: 회의 메모를 기반으로 후속 이메일을 생성합니다.
* **레코드 라우팅**: 콘텐츠를 기반으로 적합한 팀 구성원에게 레코드를 할당합니다.
## 관련 항목
* [워크플로우 개요](/l/ko/user-guide/workflows/overview) — 자동화 기본 사항
* [AI 권한](/l/ko/user-guide/ai/capabilities/permissions-access-control) — AI 에이전트에 대한 액세스 제어

View File

@@ -0,0 +1,37 @@
---
title: AI 챗봇
description: 자연어로 CRM 데이터와 상호작용할 수 있도록 도와주는 지능형 어시스턴트입니다.
---
## 개요
자연어로 질문하면 어시스턴트가 CRM 데이터를 찾아 설명해 줍니다.
## 기능
| 기능 | 설명 |
| ------------- | ------------------------------------------------------------- |
| **자연어 질의** | 필터를 만들 필요 없이 쉬운 영어로 질문할 수 있습니다. |
| **전체 데이터 접근** | 워크스페이스 전반의 레코드, 관계, 지표를 조회합니다. |
| **페이지 컨텍스트** | 현재 보고 있는 화면을 기준으로 "this company" 또는 "this opportunity"를 참조합니다 |
| **대화형** | 후속 질문도 이전 질의의 컨텍스트를 유지합니다. |
## 상호작용 예시
### 레코드 찾기
* "$50,000 이상인 모든 영업 기회를 보여줘"
* "지난 2주 동안 내가 이메일을 보내지 않은 연락처를 찾아줘"
* "헬스케어 산업의 회사를 목록으로 보여줘"
### 인사이트 얻기
* "내 전체 파이프라인 가치는 얼마야?"
* "지난달에 성사된 거래는 몇 건이야?"
* "어느 단계에서 정체된 영업 기회가 가장 많아?"
### 페이지 컨텍스트 사용
* "이 사람과의 상호작용을 요약해 줘" (연락처 페이지에서)
* "이 회사와 연결된 영업 기회는 무엇이야?" (회사 페이지에서)
* "이 거래는 마지막으로 언제 업데이트됐어?" (영업 기회 페이지에서)

View File

@@ -0,0 +1,137 @@
---
title: MCP 서버
description: Model Context Protocol을 사용하여 AI 어시스턴트를 Twenty 워크스페이스에 연결하세요.
---
Twenty는 Claude Desktop, Claude Code, Cursor, ChatGPT 등 AI 어시스턴트가 자연어로 CRM 데이터를 읽고 쓸 수 있도록 [MCP](https://modelcontextprotocol.io/) 서버를 제공합니다.
MCP 엔드포인트로 **워크스페이스 URL**(Twenty에 접속할 때 사용하는 URL)을 사용하세요. Twenty Cloud에서는 워크스페이스 URL이 `https://{mycompany}.twenty.com` 또는 커스텀 도메인일 수 있습니다. 서버는 다음 위치에서 사용할 수 있습니다:
| 환경 | MCP 엔드포인트 |
| ---------- | -------------------------------------------------------------------------- |
| **클라우드** | `https://{your-workspace-url}/mcp` (예: `https://mycompany.twenty.com/mcp`) |
| **셀프 호스팅** | `https://{your-domain}/mcp` |
## 인증 방법
MCP 클라이언트를 인증하는 방법은 두 가지입니다: **OAuth**(권장) 또는 **API Key**.
### 옵션 A — OAuth(권장)
OAuth를 사용하면 MCP 클라이언트가 로그인할 수 있도록 브라우저 창을 엽니다. 비밀 값이 구성 파일에 저장되지 않으며, 토큰은 자동으로 갱신됩니다.
<Note>
OAuth를 사용하려면 [MCP Authorization 사양](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization)을 지원하는 MCP 클라이언트가 필요합니다. Claude Desktop, Claude Code, Cursor, ChatGPT가 이를 지원합니다.
</Note>
다음을 MCP 클라이언트 구성에 추가하고 `{your-workspace-url}`를 워크스페이스 호스트로 바꾸세요(예: `mycompany.twenty.com`):
```json
{
"mcpServers": {
"twenty": {
"type": "streamable-http",
"url": "https://{your-workspace-url}/mcp"
}
}
}
```
이것으로 완료입니다 — API 키는 필요하지 않습니다. 클라이언트가 처음 연결되면 다음을 수행합니다:
1. `/.well-known/oauth-protected-resource` 및 `/.well-known/oauth-authorization-server`를 통해 Twenty의 OAuth 메타데이터를 발견합니다
2. 동적 클라이언트 등록(RFC 7591)을 통해 OAuth 클라이언트로 등록합니다
3. 액세스 권한 부여를 위해 브라우저를 엽니다
4. 토큰을 수신하고 MCP 서버에 연결합니다
이후 연결에서는 저장된 토큰을 재사용하고 자동으로 갱신합니다.
### 옵션 B — API Key
MCP 클라이언트가 OAuth를 지원하지 않거나 정적 자격 증명을 선호하는 경우, `Authorization` 헤더에 API 키를 전달하세요:
```json
{
"mcpServers": {
"twenty": {
"type": "streamable-http",
"url": "https://{your-workspace-url}/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
```
<Warning>
API 키는 워크스페이스 데이터에 대한 액세스를 부여합니다. 버전 관리와 공유 도트파일에 포함하지 마세요.
</Warning>
API 키를 생성하려면 **Settings → MCP & APIs → API → + Create key**로 이동하세요. 자세한 내용은 [API](/l/ko/developers/extend/api#create-an-api-key)를 참조하세요.
## 빠른 시작
### 1. 구성 복사
Twenty에서 **Settings → MCP & APIs → MCP**로 이동하세요. 인증 방법(OAuth 또는 API Key)을 선택하고, JSON 스니펫(이미 워크스페이스 URL이 포함되어 있습니다)을 복사하여 MCP 클라이언트의 구성 파일에 붙여넣으세요.
| 클라이언트 | 구성 파일 위치 |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Claude Desktop** | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) 또는 `%APPDATA%\Claude\claude_desktop_config.json` (Windows) |
| **Claude Code** | `~/.claude.json` (사용자) 또는 `.mcp.json` (프로젝트) |
| **Cursor** | 프로젝트의 `.cursor/mcp.json`, 또는 전역 `~/.cursor/mcp.json` |
| **ChatGPT** | **Settings → Apps & Connectors → Advanced settings**에서 Developer Mode를 켠 다음, **Settings → Apps & Connectors**의 **Create**를 사용해 MCP 서버를 추가하세요 |
### 2. 연결
MCP 클라이언트를 다시 시작하세요(또는 구성을 다시 로드하세요). OAuth를 사용 중이라면 액세스 권한 부여를 위해 Twenty로 리디렉션됩니다. API 키를 사용하는 경우 즉시 연결됩니다.
### 3. 사용 시작하기
AI 어시스턴트에게 CRM과 상호작용하도록 요청하세요:
* *"가장 최근에 생성된 회사 5개를 보여줘"*
* *"Acme Corp에 Jane Doe라는 새 사람을 생성해줘"*
* *"1만 달러를 초과하는 열려 있는 모든 영업 기회를 찾아줘"*
## 사용 가능한 도구
연결되면 MCP 서버는 Twenty API를 미러링하는 도구들을 제공합니다. 권장 워크플로는 다음과 같습니다:
1. **`learn_tools`** — 특정 도구의 입력 스키마를 가져오기
2. **`execute_tool`** — 도구 실행
도구 이름을 기억할 필요가 없습니다. AI 어시스턴트에게 무엇을 할 수 있는지 물어보면 `learn_tools`를 자동으로 호출합니다.
## 권한
MCP 연결은 인증된 사용자(OAuth)의 권한 또는 API 키에 할당된 역할을 상속합니다. MCP 서버가 수행할 수 있는 작업을 제한하려면:
* **OAuth**: 사용자의 워크스페이스 역할이 적용됩니다.
* **API Key**: **Settings → Members → Roles**에서 API 키에 역할을 할당하세요. 자세한 내용은 [권한](/l/ko/user-guide/permissions-access/capabilities/permissions)을 참조하세요.
## 자가 호스팅 구성
자가 호스팅 인스턴스의 경우 `{your-workspace-url}`을 서버 URL로 바꾸세요. 환경의 `SERVER_URL`이 Twenty 인스턴스의 공개 URL과 일치하는지 확인하세요 — 이는 OAuth 디스커버리 메타데이터를 생성하는 데 사용됩니다.
```bash
SERVER_URL=https://twenty.yourcompany.com
```
MCP 엔드포인트, OAuth 엔드포인트, 디스커버리 메타데이터는 모두 이 값을 기반으로 생성됩니다.
## 문제 해결
**"Unauthorized" 또는 401 오류**
* OAuth: MCP 클라이언트에 저장된 토큰을 삭제하고 다시 연결하여 재승인하세요.
* API Key: 키가 유효하며 만료되지 않았는지 확인하세요. 필요하다면 다시 생성하세요.
**OAuth 플로우에서 브라우저가 열리지 않음**
* MCP 클라이언트가 MCP Authorization을 지원하는지 확인하세요. 지원하지 않는 경우 API Key 방식으로 대체하세요.
**연결 시간 초과**
* 로컬 머신에서 MCP 엔드포인트 URL에 접근 가능한지 확인하세요. 자가 호스팅 인스턴스의 경우, 서버가 실행 중인지와 `SERVER_URL`이 올바르게 설정되어 있는지 확인하세요.

View File

@@ -0,0 +1,35 @@
---
title: 권한 및 액세스 제어
description: 워크스페이스에서 AI 에이전트가 액세스하고 수정할 수 있는 범위를 제어하세요.
---
## 개요
AI 에이전트는 기존 권한 구조를 준수합니다. 이는 워크스페이스에서 자동화된 AI 프로세스가 액세스하거나 수정할 수 있는 대상을 정확히 통제하려는 팀에게 특히 중요합니다.
## AI 에이전트에 역할 할당
1. **설정 → 구성원 → 역할**로 이동하세요
2. 할당할 역할 클릭
3. **배정** 탭 열기
4. **AI Agents**에서 **+ Assign to AI agent**를 클릭합니다
5. 목록에서 AI 에이전트를 선택합니다
6. 할당 확인
## 왜 AI 에이전트에 역할을 할당하나요?
| 이점 | 설명 |
| ---------- | ----------------------------------- |
| **보안** | AI 에이전트가 액세스하거나 수정할 수 있는 데이터를 제한합니다 |
| **규정 준수** | AI가 필요한 데이터만 처리하도록 보장합니다 |
| **제어** | AI 자동화의 의도하지 않은 동작을 방지합니다 |
| **감사 가능성** | 어떤 에이전트가 어떤 작업을 수행했는지 추적합니다 |
<Note>
워크플로 내에서 실행되는 AI 에이전트의 경우, 역할 할당은 워크플로에 더 광범위한 권한이 있더라도 해당 에이전트가 의도된 범위를 벗어난 데이터에 액세스하거나 수정하지 못하도록 보장합니다.
</Note>
## 관련
* [권한](/l/ko/user-guide/permissions-access/capabilities/permissions) — 역할 생성 및 관리에 대한 자세한 정보
* [AI 에이전트](/l/ko/user-guide/ai/capabilities/ai-agents) — 워크플로에서의 AI 기능

View File

@@ -0,0 +1,31 @@
---
title: AI 자주 묻는 질문
description: Twenty의 AI 기능에 관한 자주 묻는 질문입니다.
---
<AccordionGroup>
<Accordion title="어떤 AI 기능을 사용할 수 있나요?">
AI의 두 가지 주요 기능은 다음과 같습니다:
1. **AI Chatbot**: 사용자의 Twenty 데이터에 액세스하고 질문을 도와주는 컨텍스트 인식형 도우미
2. **AI Agents in Workflows**: 사용자의 워크플로 내에서 데이터를 처리하고 의사 결정을 내리며 작업을 실행할 수 있는 지능형 자동화
</Accordion>
<Accordion title="AI 에이전트가 내 모든 데이터에 액세스할 수 있나요?">
AI 에이전트는 권한 시스템 하에서 작동합니다. **Settings → Members → Roles**에서 AI 에이전트에 특정 역할을 할당하여, 액세스할 수 있는 데이터와 수행할 수 있는 작업을 완전히 제어할 수 있습니다.
</Accordion>
<Accordion title="AI 크레딧은 어떻게 작동하나요?">
AI 작업은 작업의 복잡도와 사용된 AI 모델에 따라 워크플로 크레딧을 소모합니다.
</Accordion>
<Accordion title="내 AI 모델을 사용할 수 있나요?">
클라우드에서는 Twenty에서 제공하는 AI 모델만 사용할 수 있습니다. 셀프 호스팅 인스턴스에서는 Organization 라이선스를 취득한 후에 자체 AI 모델을 사용할 수 있습니다.
</Accordion>
<Accordion title="AI 에이전트에게 할당한 역할이 보이지 않습니다. 어디에 있나요?">
기본적으로 역할 목록은 워크스페이스 멤버에게 할당 가능한 역할만 보이도록 필터링됩니다. 역할이 AI 에이전트에게만 할당 가능하다면, 필터를 변경하여 AI 에이전트용 역할을 포함해야 합니다.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,58 @@
---
title: AI
description: Twenty의 AI 기반 기능.
---
<Frame>
<img src="/images/user-guide/workflows/robot.png" alt="AI" />
</Frame>
## 기능
현재 Twenty에서는 다음을 제공합니다:
### 1. AI 챗봇
사용자의 맥락을 이해하고 사용자의 Twenty 데이터 전체에 액세스할 수 있는 대화형 어시스턴트입니다.
**주요 기능:**
* **전체 데이터 액세스**: 워크스페이스의 모든 레코드, 관계, 지표를 쿼리합니다
* **페이지 맥락 인식**: Twenty에서 현재 위치에 따라 "this company" 또는 "this opportunity"를 참조합니다
* **자연어**: 메뉴를 탐색하지 않고 질문하고 답변을 받아보세요
**프롬프트 예시:**
* "이번 달에 성사될 기회는 무엇인가요?"
* "30일 이상 협상 단계에 머무른 거래는 무엇인가요?"
* "이 사람과의 상호작용을 요약해 주세요"
### 2. 워크플로우의 AI 에이전트
AI 기반 액션과 자율 에이전트로 워크플로우를 확장하세요.
**주요 기능:**
* **AI 액션**: AI로 데이터를 보강하고, 레코드를 분류하며, 요약을 생성하는 등 다양한 작업을 수행합니다
* **자율 에이전트**: 워크플로우 내에서 에이전트가 다단계 작업을 수행하도록 합니다
* **맞춤 프롬프트**: AI가 데이터를 어떻게 처리해야 하는지 정확히 정의합니다
**사용 사례:**
* 유입 리드를 자동으로 분류
* 공개 소스의 정보로 회사 데이터를 보강
* 회의 메모를 기반으로 후속 이메일 초안을 생성
* 참여 패턴을 기반으로 기회 점수를 산정
## 권한 및 액세스 제어
AI 에이전트는 기존 권한 시스템을 통해 관리됩니다:
1. **설정 → 구성원 → 역할**로 이동하세요
2. 각 AI 에이전트가 액세스할 수 있는 데이터를 설정
3. 객체별 읽기/쓰기 권한을 설정
이를 통해 AI 에이전트가 데이터 거버넌스 정책을 준수하고 필요한 항목에만 액세스하도록 보장합니다.
* 개발 업데이트를 받아보려면 저희 [GitHub](https://github.com/twentyhq/twenty)를 팔로우하세요
* 피드백과 기능 요청을 공유하려면 저희 [Discord](https://discord.gg/UfGNZJfAG6)에 참여하세요

View File

@@ -0,0 +1,74 @@
---
title: 크레딧
description: 워크플로, AI 에이전트, AI 채팅을 모두 구동하는 하나의 단일 잔액 — 크레딧의 가치, 어느 정도까지 사용할 수 있는지, 그리고 관리 방법.
---
## 크레딧이란 무엇인가요?
크레딧은 실제 비용이 드는, 여러분을 대신해 우리가 실행하는 모든 것 — **워크플로 자동화**, **AI 에이전트**, **AI 채팅** — 을 구동하는 단일 잔액입니다. "automation runs"와 "AI tokens"에 대한 개별 할당량을 따로 관리하는 대신, 모니터링하기 쉬운 하나의 단순한 잔액만 살펴보면 됩니다.
**크레딧 1개 = $1 사용량.** 크레딧은 말 그대로 1달러어치의 작업이므로, 추상적인 단위를 따로 환산할 필요 없이 잔액을 직관적으로 이해할 수 있습니다.
## 크레딧 하나로 어느 정도까지 사용할 수 있나요?
비용은 작업량에 비례해 증가합니다. 일상적인 자동화와 짧은 AI 메시지는 크레딧의 아주 일부분만 사용하지만, 크고 여러 단계를 거치는 AI 에이전트 작업은 더 많은 크레딧을 사용합니다. 대략적인 개요는 다음과 같습니다:
| 하는 일 | 대략적인 비용 | 의미 |
| ----------------------------------------------------------- | ------------------------------- | ---------------------- |
| 표준 워크플로 단계(검색, 레코드 생성 또는 레코드 업데이트)를 실행하거나 앱의 로직 함수를 트리거합니다. | $0.0001 | **크레딧 1개당 10,000회 실행** |
| 외부 API를 호출하거나 코드 노드를 실행 | 크레딧의 작은 일부 | 크레딧 1개당 수천 회 |
| 빠른 AI 채팅 메시지를 보내거나 단순한 AI 단계를 실행 | 1센트의 일부 | 크레딧 1개당 수백 회 |
| 대형 AI 에이전트 작업 실행(예: "워크스페이스 객체 10개 구성") | 비용이 **약 $1 또는 그 이상**까지 올라갈 수 있음 | 크레딧 1개당 몇 회 |
| AI 웹 검색 실행 | 검색 1회당 고정 비용 | 크레딧 1개당 수백 회 검색 |
<Note>
대부분의 팀에게 표준 자동화는 사실상 무료에 가깝고, 눈에 띄게 잔액이 줄어드는 것은 AI 기능에 많이 의존하거나 무거운 코드 노드를 실행할 때뿐입니다. 이는 의도된 설계로, 포함된 크레딧은 사용량 계측기를 신경 쓰지 않고도 자유롭게 구축할 수 있도록 제공됩니다.
</Note>
<Note>
모든 앱이 실행에 대해 요금을 청구하는 것은 아닙니다. Call Recorder와 Last Contact는 워크스페이스로 가져온 모든 이메일과 캘린더 이벤트에 반응하므로, 이들의 로직 함수 실행에는 요금이 부과되지 않습니다. 녹음된 통화 시간과 같은 계량된 작업에 대해서는 여전히 요금이 청구됩니다.
</Note>
## AI 사용량은 어떻게 계측되나요
액션이 AI 모델을 호출하면, 사용된 토큰 수를 정확히 측정하고 **모델 제공자가 공개한 요금**을 기준으로 가격을 산정한 뒤, 그 달러 금액을 그대로 크레딧으로 환산합니다. 즉, 실제 작업 비용에 맞춰 사용량이 청구되며, 내부 마진이 붙은 요율로 과금되지 않습니다. 짧은 채팅 메시지는 1센트의 일부만 비용이 듭니다. 큰 에이전트 작업(예: 워크스페이스 객체 10개 구성)은 점점 커지는 컨텍스트에서 여러 번 모델을 호출하므로, 비용이 1달러 이상까지 쌓일 수 있습니다. 실제로 사용한 양, 토큰 단위까지 정확히 과금됩니다.
비용은 모델에 따라 달라지며, 가벼운 모델은 최고급 추론 모델에 비해 메시지당 비용이 훨씬 저렴합니다. **설정 → 결제**에서 각 액션별 사용 내역과 사용된 모델을 확인할 수 있습니다.
## 포함 내용
모든 구독에는 크레딧이 포함되며, 크레딧 양은 요금제가 아니라 **결제 주기**에 따라 달라집니다:
| 청구 주기 | 포함 크레딧 | 상응하는 사용량 |
| ----- | ------ | ---------------- |
| 월간 | 월 5 | 매월 약 $5 상당의 사용량 |
| 연간 | 연 50 | 매년 약 $50 상당의 사용량 |
이 크레딧은 일상적인 자동화를 넉넉하게 처리할 수 있도록 설계되었습니다. 크레딧 5개면 수만 번의 표준 자동화 단계나 수백 건의 빠른 AI 메시지를 처리할 수 있지만, 일부 대형 다단계 에이전트 작업은 크레딧을 더 빨리 소진시킬 수 있습니다. 언제든지 크레딧을 추가 충전할 수 있습니다(아래 참조).
## 크레딧 이월
사용하지 않은 크레딧은 다음 결제 기간으로 자동 이월됩니다.
* **한도**: 이월은 한 기간의 전체 할당량으로 제한되므로, 각 청구 주기에서 기간당 제공되는 크레딧보다 더 많이 이월할 수 없습니다.
* **표시**: 이월 크레딧이 있으면 **설정 → 결제**에서 별도의 **이월 크레딧** 항목으로 표시되며, 그 옆에 **총 사용 가능** 잔액이 함께 표시됩니다.
## 사용량 모니터링
잔액과 사용처를 계속 파악하세요:
1. **설정 → 결제**로 이동
2. **남은 크레딧**과 **현재 기간의 사용량**을 확인
3. 세부 내역을 확인해 어떤 워크플로와 AI 액션이 크레딧을 사용하고 있는지, 또한 AI 액션이 어떤 모델을 사용했는지 파악하세요
이를 정기적으로 검토하면 무거운 워크플로를 일찍 발견해 최적화할지, 아니면 크레딧을 추가 충전할지 쉽게 결정할 수 있습니다.
## 크레딧이 더 필요하신가요?
크레딧을 모두 사용했거나, 대규모 자동화를 진행하기 전에 여유분을 확보하고 싶다면 언제든지 추가 크레딧 팩을 구매할 수 있습니다:
1. **설정 → 결제**로 이동
2. **Increase** 버튼을 클릭합니다.
3. 필요한 수량을 선택하고 변경 사항을 적용합니다.
구매한 크레딧은 즉시 사용 가능 잔액에 추가됩니다.

View File

@@ -0,0 +1,100 @@
---
title: "요금제 "
description: Twenty의 요금제와 전환 방법을 알아보세요.
---
## 개요
Twenty는 클라우드 호스팅이든 셀프 호스팅이든, 모든 규모의 팀에 맞는 유연한 요금제를 제공합니다.
## 클라우드 요금제
### Pro(클라우드)
확장을 준비한 팀을 위한:
* 모든 핵심 CRM 기능
* 이메일 및 캘린더 동기화
* 워크플로와 자동화
* 표준 지원
<Note>
프리미엄 기능(SSO, 행 수준 권한, AI 사용 데이터 등)은 Pro 플랜에 포함되지 않습니다.
</Note>
### 조직(클라우드)
고급 기능이 필요한 대규모 팀용:
* Pro의 모든 기능
* **프리미엄 기능**: SSO 통합, 행 수준 권한, AI 사용 데이터 등
* 우선 지원
## 셀프 호스팅 요금제
### 무료(셀프 호스팅)
자체 인프라에 Twenty를 무료로 호스팅하세요:
* Pro의 모든 기능 포함
* Discord를 통한 커뮤니티 지원
* 데이터에 대한 완전한 제어
### 조직(셀프 호스팅)
셀프 호스팅하면서 프리미엄 기능이 필요한 팀용:
* Pro의 모든 기능
* **프리미엄 기능**: SSO 통합, 행 수준 권한, AI 사용 데이터 등
* Twenty 팀의 지원
* 배포 전에 커스텀 코드를 오픈 소스로 공개할 필요 없음
## 프리미엄 기능
프리미엄 기능은 조직 요금제(클라우드 또는 셀프 호스팅)에서만 제공됩니다:
* **SSO 통합**: ID 공급자와의 싱글 사인온
* **행 수준 권한**: 레코드 수준의 세밀한 액세스 제어
* **AI 사용 데이터**: 워크스페이스 전반의 AI 사용량을 추적하세요
* **감사 로그**: 각 워크스페이스 구성원이 무엇을 했는지 확인할 수 있습니다
* **이메일 캠페인**: 어떤 이메일을 발송할지 계획합니다(곧 제공 예정)
* **무제한 워크스페이스**: 원하는 만큼 워크스페이스를 생성할 수 있습니다(셀프 호스팅 전용)
* **비공개 소스 코드**: 변경 사항을 공개 저장소에 게시할 필요가 없습니다(셀프 호스팅 전용)
## 요금제 전환
### 조직으로 업그레이드
1. **설정 → 결제 → 요금제**로 이동
2. **조직으로 전환**을 클릭
3. 업그레이드를 확인하세요
### Pro로 다운그레이드
1. **설정 → 결제 → 요금제**로 이동
2. **Pro로 전환**을 클릭
3. 다운그레이드를 확인하세요
### 연간 결제로 전환
1. **설정 → 결제**로 이동
2. **연간 요금제로 업그레이드**를 클릭
3. 연간 결제로 절약하세요
### 월간 결제로 전환
1. **설정 → 결제**로 이동
2. **월간 요금제로 다운그레이드**를 클릭
3. 월간 결제로 저장
## Organization(셀프 호스팅)용 엔터프라이즈 키 받기
Organization(셀프 호스팅) 플랜을 사용하려면 엔터프라이즈 키를 받아야 합니다:
1. **설정 → 관리자 패널 → 엔터프라이즈**로 이동하세요
<img src="/images/user-guide/billing/enterprise-key.png" alt="엔터프라이즈 키" />
2. **엔터프라이즈 키 받기**를 클릭하세요
3. Stripe로 리디렉션되면 결제 정보를 입력하고 확인하세요
4. 엔터프라이즈 키가 표시되면 이를 엔터프라이즈 설정 페이지에 붙여넣고 Organization 라이선스를 활성화하세요

View File

@@ -0,0 +1,105 @@
---
title: 청구 FAQ
description: Twenty 요금 및 결제에 관한 자주 묻는 질문입니다.
---
## 가격
<AccordionGroup>
<Accordion title="자기 호스팅 시 Twenty를 무료로 사용할 수 있나요?">
네, 자기 호스팅할 때 Twenty를 무료로 사용할 수 있습니다. 당사 코어 팀의 지원을 제외하고 Pro (Cloud) 플랜에 포함된 모든 기능을 이용할 수 있습니다. 지원은 Discord 커뮤니티를 통해 제공됩니다.
자가 호스팅을 원하고 Premium 기능(SSO, 행 수준 권한 등)이 필요하다면, 유료 Organization (Self-Hosted) 라이선스를 선택할 수 있습니다. 여기에는 Twenty 팀의 지원도 포함되며, 배포 전에 커스텀 코드를 오픈 소스로 공개해야 하는 요구 사항이 제거됩니다.
</Accordion>
<Accordion title="Premium 기능에는 무엇이 있나요?">
Premium 기능은 Organization 플랜(Cloud 또는 Self-Hosted)에서만 제공됩니다:
* **SSO 통합**: 아이덴티티 공급자와의 단일 로그인
* **행 수준 권한**: 레코드 수준에서의 세밀한 액세스 제어
* **AI 사용 데이터**: 워크스페이스 전반의 AI 사용량을 추적하세요
* **감사 로그**: 각 워크스페이스 구성원이 무엇을 했는지 확인할 수 있습니다
* **이메일 캠페인**: 어떤 이메일을 발송할지 계획합니다(곧 제공 예정)
* **무제한 워크스페이스**: 원하는 만큼 워크스페이스를 생성할 수 있습니다(셀프 호스팅 전용)
* **비공개 소스 코드**: 변경 사항을 공개 저장소에 게시할 필요가 없습니다(셀프 호스팅 전용)
</Accordion>
<Accordion title="Cloud 요금제와 Self-Hosted Organization 요금제는 동일한가요?">
동일한 프리미엄 기능을 제공합니다. 클라우드 구독은 셀프 호스티드 배포에 사용할 수 없습니다. 셀프 호스티드는 Enterprise 키가 필요합니다.
</Accordion>
<Accordion title="보기 전용 사용자에게 무료 좌석을 제공하나요?">
무료 좌석은 제공되지 않습니다. 가격은 사용자당 책정되며, 각 사용자는 Twenty에 액세스하기 위한 라이선스가 필요합니다.
</Accordion>
<Accordion title="내 구독을 Organization 플랜으로 어디에서 전환할 수 있나요?">
`설정 → 청구 → 요금제`에서 가능합니다. 그 다음, `조직으로 전환`을 클릭하십시오.
</Accordion>
<Accordion title="내 구독을 Pro 플랜으로 어디에서 전환할 수 있나요?">
`설정 → 청구 → 요금제`에서 가능합니다. 그 다음, `Pro로 전환`을 클릭하십시오.
</Accordion>
<Accordion title="내 구독을 연간 요금제로 어디에서 전환할 수 있나요?">
`설정 → 청구`에서 가능합니다. 그 다음, `연간 요금제로 업그레이드`를 클릭하십시오.
</Accordion>
<Accordion title="내 구독을 월간 요금제로 어디에서 전환할 수 있나요?">
`설정 → 청구`에서 가능합니다. 그 다음, `월간 요금제로 다운그레이드`를 클릭하십시오.
</Accordion>
<Accordion title="크레딧 사용량은 어디에서 확인할 수 있나요?">
`설정 → 청구`에서 확인할 수 있습니다.
</Accordion>
<Accordion title="워크플로 크레딧은 얼마나 있나요?">
크레딧 수는 플랜이 아니라 청구 주기에 따라 달라집니다:
* **월간 구독**: 월 5 크레딧
* **연간 구독**: 연 50 크레딧
</Accordion>
<Accordion title="워크플로 크레딧 소모는 어떻게 이루어지나요?">
각 워크플로우 동작은 그 복잡성에 따라 크레딧을 소모합니다:
* **기본 내부 작업**(예: 검색, 업데이트 또는 레코드 생성)은 아주 적은 크레딧을 소모합니다
* **더 복잡한 작업**(코드 노드 및 외부 서비스에 대한 요청 등)은 더 많은 크레딧을 소모합니다
* **AI 프롬프트**도 사용량에 따라 더 많은 크레딧을 소비하게 됩니다
* **앱**도 Code 노드와 유사하게 더 많은 크레딧을 소비합니다
워크플로우 또는 앱이 실행될 때 크레딧은 실시간으로 차감됩니다. 소비 및 남은 크레딧을 추적하기 위해 **설정 → 청구**에서 사용 내용을 모니터링할 수 있습니다.
</Accordion>
<Accordion title="워크플로 크레딧을 더 구매할 수 있나요?">
`설정 → 청구`에서 추가 크레딧을 구매할 수 있습니다.
</Accordion>
<Accordion title="워크플로우 크레딧을 1개월만 더 구매할 수 있나요?">
네, `Settings → Billing`으로 이동하여 `Increase` 버튼을 클릭하고, 원하는 크레딧 수를 선택한 뒤 확인하세요. 해당 크레딧은 현재 청구 기간에 적용됩니다. 그 다음 다시 `Increase` 버튼을 클릭하여 값을 원래대로 되돌린 뒤 확인하면, 다운그레이드는 다음 청구 기간부터 적용됩니다.
</Accordion>
</AccordionGroup>
## 청구
<AccordionGroup>
<Accordion title="청구 세부 정보는 어디에서 관리할 수 있나요?">
`설정 → 청구`에서 가능합니다.
</Accordion>
<Accordion title="결제 수단은 어디에서 업데이트할 수 있나요?">
`설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 새 지불 방법을 추가할 수 있습니다.
</Accordion>
<Accordion title="청구 정보는 어디에서 업데이트할 수 있나요?">
`설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 청구 정보를 편집할 수 있습니다.
</Accordion>
<Accordion title="청구서는 어디에서 확인할 수 있나요?">
`설정 → 청구`에서 가능합니다. 그 다음, `청구 세부 정보 보기`를 클릭하십시오. 화면 하단에서 모든 인보이스를 볼 수 있습니다.
</Accordion>
<Accordion title="내 좌석 수가 워크스페이스의 사용자 수와 다른 이유는 무엇인가요?">
워크스페이스 좌석 수는 6시간마다 결제 시스템과 동기화되며, 차이에 따라 청구서가 조정됩니다.
</Accordion>
<Accordion title="새 워크스페이스 구성원에 대한 청구서를 받은 이유는 무엇인가요?">
새 워크스페이스 구성원이 워크스페이스에 추가되면, 차액을 정산하기 위한 청구서가 발행됩니다. 워크스페이스 구성원이 제거되면, 해당 변경 사항은 다음 정기 월간/연간 청구서에 반영됩니다.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,39 @@
---
title: 청구
description: Twenty의 요금제를 이해하고 구독을 관리하세요.
---
Twenty는 팀의 요구에 맞는 유연한 요금제를 제공합니다. **설정 → 결제**에서 구독을 관리하고 워크플로 크레딧을 확인하며 청구서를 확인할 수 있습니다.
## 이 섹션의 내용
<CardGroup cols={2}>
<Card title="요금제" icon="tags" href="/l/ko/user-guide/billing/capabilities/pricing-plans">
Twenty의 요금제와 포함된 내용을 알아보세요.
</Card>
<Card title="FAQ" icon="circle-question" href="/l/ko/user-guide/billing/how-tos/billing-faq">
요금 및 결제에 관한 자주 묻는 질문입니다.
</Card>
</CardGroup>
## 한눈에 보기
| 플랜 | 핵심 기능 |
| -------------- | ----------------------------------------------------------------------------------- |
| **무료(자가 호스팅)** | 모든 Pro 기능, 커뮤니티 지원 |
| **Pro(클라우드)** | 프리미엄 기능(SSO, 행 단위 권한 등)을 제외한 모든 기능, 표준 지원 |
| **조직(클라우드)** | Pro의 모든 것 + 프리미엄 기능(SSO, 행 단위 권한 등), 우선 지원 |
| **조직(자가 호스팅)** | Pro의 모든 것 + 프리미엄 기능(SSO, 행 단위 권한 등), Twenty 팀 지원, 배포 전에 사용자 지정 코드를 오픈 소스로 공개할 필요 없음 |
## 빠른 답변
**결제 관리는 어디에서 하나요?**
요금제를 확인하고 결제 수단을 업데이트하며 청구서를 확인하려면 **설정 → 결제**로 이동하세요.
**Twenty를 무료로 사용할 수 있나요?**
네! Twenty를 자가 호스팅하면 모든 Pro 기능을 무료로 사용할 수 있습니다.
**업그레이드는 어떻게 하나요?**
**설정 → 결제**로 이동하여 **조직으로 전환** 또는 **연간 요금으로 전환**을 클릭하세요.
추가 질문은 [결제 FAQ](/l/ko/user-guide/billing/how-tos/billing-faq)를 참조하세요.

View File

@@ -0,0 +1,43 @@
---
title: 캘린더
description: Twenty의 캘린더 통합 기능 이해하기.
---
**참고**: 캘린더를 연결하고 동기화 설정을 구성하려면 [이메일 및 일정 설정](/l/ko/user-guide/calendar-emails/overview)을 방문하세요.
## 캘린더 통합 작동 방식
Twenty는 캘린더 이벤트를 자동으로 동기화하고 관련 CRM 레코드에 연결하여 연락처 및 회사와의 미팅 이력을 완벽하게 파악할 수 있도록 합니다.
## 캘린더 탭
레코드의 이메일 탭 옆에 `캘린더` 탭이 있으며, 해당 레코드와 예정된 미팅의 이력을 확인할 수 있습니다.
### 사용 가능 대상
* **사람들**: 특정 연락처와 예정된 모든 미팅 보기
* **회사**: 회사 및 직원과 관련된 모든 미팅 보기
* **기회**: 이 기회와 연결된 회사의 미팅 기록에 접근
### 미팅 기록 보기
1. **기록으로 이동**: 특정 사람, 회사 또는 기회 기록으로 이동
2. **캘린더 탭 선택**: 이메일 탭 옆에 있는 `캘린더` 탭을 클릭합니다
3. **미팅 기록 탐색**: 예정된 모든 미팅과 그 세부정보 보기
4. **미팅 컨텍스트 접근**: 미팅 참가자, 시간 및 관련 정보 보기
## 가시성 설정
캘린더 데이터는 이메일과 동일한 가시성 설정을 따르며, 두 커뮤니케이션 채널 전반에서 일관된 개인정보 보호를 보장합니다.
## 동기화되는 내용
* **외부 미팅**: 조직 외부 연락처와의 모든 미팅
* **자동 연결**: 참석자의 이메일 주소를 기준으로 미팅이 기존 사람 및 회사 레코드에 연결됩니다
* **미팅 세부정보**: 제목, 시간, 기간, 참가자
* **업데이트**: 새로운 캘린더 이벤트가 자동으로 동기화됩니다
## 동기화되지 않는 항목
* **내부 미팅**: 동료끼리만의 미팅(동일 도메인)은 비공개로 유지됩니다
* **비공개 이벤트**: 캘린더에서 비공개로 표시된 이벤트

View File

@@ -0,0 +1,102 @@
---
title: 메일함
description: Twenty의 이메일 통합 기능 이해하기.
---
**참고**: 이메일 계정을 연결하고 동기화 설정을 구성하려면 [이메일 및 일정 설정](/l/ko/user-guide/calendar-emails/overview)을 방문하세요.
## 이메일 통합 작동 방식
Twenty는 연결된 메일함에서 메일을 자동으로 해당 CRM 기록에 연결하여 모든 커뮤니케이션 이력을 한 곳에 유지합니다.
### 이메일을 확인할 수 있는 객체
이메일 대화는 세 가지 주요 객체에 나타납니다:
* **사람들**: 특정 연락처와 교환한 모든 이메일 보기
* **회사**: 회사 및 직원과 관련된 모든 이메일 보기
* **기회**: 기회와 연결된 회사와 관련된 이메일 스레드에 접근합니다. 기회에 있는 개별 사람의 이메일 스레드는 아직 표시되지 않습니다.
### 이메일 스레드 보기
1. **기록으로 이동**: 특정 사람, 회사 또는 기회 기록으로 이동
2. **이메일 탭 선택**: 동기화된 이메일을 보려고 `이메일` 탭을 클릭하세요
3. **이메일 스레드 열기**: 전체 대화를 열고 읽으려면 이메일을 클릭하세요
4. **히스토리 탐색**: 해당 연락처와의 완전한 이메일 기록을 스크롤하여 확인하세요
<img src="/images/user-guide/emails/show-inbox.png" style={{width:'100%'}} />
## 볼 수 있는 내용
### 이메일 스레드 보기
이메일 스레드를 열면 다음을 할 수 있습니다:
* **전체 대화 읽기**: 전체 이메일 교환 보기
* **참여자 보기**: 이메일 스레드에 참여한 모든 사람 보기
* **타임스탬프 확인**: 각 이메일이 발송된 정확한 시간을 알기
* **컨텍스트 접근**: 전체 커뮤니케이션 이력 이해하기
### 이메일 가시성
메일함 설정에 따라 다음을 볼 수 있습니다:
* **전체 내용**: 이메일 텍스트 및 세부 내용 표시
* **제목 + 메타데이터**: 제목, 발신자, 수신자 및 타임스탬프
* **메타데이터만**: 이메일 내용 없이 기본 정보
## 이메일 동기화 행동
### 동기화 속도
Twenty는 분당 약 **400건의 메시지**를 가져옵니다. 이 속도는 현재 Gmail API의 속도 제한에 의해 제한됩니다(다른 제공업체에도 유사하게 적용됩니다).
참고:
* 이메일 1,000개 → ~2.5분
* 이메일 10,000개 → ~25분
* 이메일 50,000개 → ~2시간
### 동기화되는 내용
* **외부 이메일**: 조직 외부 연락처와의 모든 이메일
* **자동 연결**: 이메일이 기존 사람 및 회사 기록에 연결됩니다
* **다중 주소**: 모든 주소의 이메일이 동일한 연락처 기록에 연결됩니다
* **업데이트**: 새로운 이메일이 즉시 표시됩니다
### 동기화되지 않는 항목
* **내부 이메일**: 기본적으로 동료(동일 도메인) 간의 이메일은 비공개로 유지됩니다(설정 → 일반 → 보안에서 설정할 수 있습니다)
* **그룹 이메일**: 배포 목록 및 그룹 이메일은 제외됩니다
* **제외된 폴더**: 동기화하지 않도록 선택한 폴더 (설정 → 계정 → 이메일에서 구성됨)
### 내부 이메일
Twenty에서 내부 이메일을 동기화할지 선택하세요:
1. **설정 → 일반 → 보안**으로 이동하세요
2. **내부 이메일 동기화**를 켜거나 끄세요
### 선택적 폴더 동기화
Twenty와 동기화할 이메일 폴더 제어:
1. **설정 → 계정**으로 이동하여 연결된 이메일 계정을 선택하세요.
2. 이메일 섹션에서 폴더를 구성하세요.
3. 특정 폴더를 포함하거나 제외하기 선택 (받은 편지함, 보낸 편지함, 보관함, 사용자 지정 폴더)
## 이메일 동기화 문제 해결
### 일반 동기화 문제
* **동기화 지연**: 이메일은 즉시 표시되지만, 초기 가져오기는 더 오래 걸립니다
* **누락된 이메일**: 확인할 사항:
* 메시지 폴더 설정에서 폴더가 제외되어 있음
* 연락처 자동 생성이 비활성화됨(이메일에는 기존 Twenty 레코드가 필요함)
* 이메일은 동료 (같은 도메인) 또는 그룹 목록에서 검토 중이 아님
* 메일함이 초기 동기화를 완료하고 있음
### 이메일 제한 사항
* **시스템 폴더**: 일부 이메일 폴더는 동기화 가능하지 않을 수 있습니다
* **별칭**: 실제 메일함만 연결할 수 있습니다 (이메일 별칭은 안됨)

View File

@@ -0,0 +1,25 @@
---
title: Twenty에서 미팅을 예약할 수 있나요?
description: Twenty에서 직접 미팅을 예약하는 것에 대한 정보.
---
## 현재 상태
Twenty의 캘린더 통합은 기존 캘린더 이벤트를 **동기화하고 표시**하도록 설계되었습니다.
## 워크플로우를 통해 미팅 예약하기
미팅을 수동으로 예약할 수는 없지만, Twenty에서는 워크플로우를 사용해 예약할 수 있습니다.
1. 새 워크플로우 만들기
2. 필요에 따라 트리거를 선택하세요.
3. **Create Calendar Event** 노드를 추가하세요.
4. 필요한 모든 데이터를 설정하세요.
5. 워크플로우를 활성화합니다
## 가능한 작업
* 사람, 회사 및 기회 레코드에서 **미팅 기록 보기**
* CRM의 연락처와의 **예정된 미팅 보기**
* 이메일 커뮤니케이션과 함께 **미팅 맥락 추적**
* 미팅 참가자를 기반으로 **연락처 자동 생성**

View File

@@ -0,0 +1,53 @@
---
title: Twenty에서 이메일을 보낼 수 있나요?
description: Twenty에서 직접 이메일을 보내는 것에 대한 정보.
---
## 현재 상태
Twenty의 이메일 통합은 이메일 기록을 **동기화하고 표시**할 뿐만 아니라 이메일을 작성하고 전송할 수 있도록 설계되었습니다.
레코드 페이지에서 이메일 스레드를 보고 **Reply**를 클릭하면, 화면에서 바로 이메일을 작성하고 전송할 수 있습니다.
## Twenty에서 메시지를 보내는 방법
사전 조건: 이메일 발송이 가능한 연결된 메일 계정
1. **Ctrl+K** 또는 **Cmd+K** 단축키로 Command 메뉴를 엽니다
2. "Compose email" 옵션을 클릭합니다
3. 수신자를 선택하고, 이메일에 제목, 본문 및 첨부파일을 추가합니다
4. 이메일을 보내려면 "Send" 버튼을 클릭합니다
## 현재 가능한 작업
* 사람, 회사 및 기회 레코드에서 **이메일 기록 보기**
* CRM의 연락처와 주고받은 **전체 이메일 스레드 읽기**
* 캘린더 이벤트와 함께 **커뮤니케이션 맥락 추적**
* 이메일 상호작용에서 **연락처 자동 생성**
* **리디렉션을 통한 답장** — Reply를 클릭하여 사서함으로 이동
## 워크플로우를 통해 이메일 보내기
워크플로우를 사용하면 이메일을 **자동으로 전송할 수 있습니다**. 다음에 유용합니다:
* 자동 후속 조치
* 연락처에 대한 알림
* 레코드 변경을 기반으로 트리거되는 커뮤니케이션
워크플로우를 통해 전송된 이메일은 연결된 사서함 계정을 통해 발송됩니다.
→ [Send Email 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions#send-email)에 대해 알아보기
## 이메일 시퀀스 및 뉴스레터
이메일 시퀀스와 뉴스레터의 경우, Twenty를 전용 이메일 마케팅 도구와 연결하기 위해 워크플로우를 사용할 것을 권장합니다.
<Warning>
도메인 평판을 보호하기 위해 대량 이메일은 사서함에서 직접 보내지 말아야 합니다. 대량 커뮤니케이션에는 전용 도구를 사용하세요.
</Warning>
→ 설정 방법은 [워크플로우에서 이메일을 보내는 방법](/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows)을 참조하세요
## 향후 계획
Twenty 내에서의 네이티브 이메일 작성 기능은 로드맵에 포함되어 있습니다. 사용 사례를 공유하고 이 기능의 우선순위를 정하는 데 도움을 주기 위해 우리 [GitHub 토론](https://github.com/twentyhq/twenty/discussions)에 참여하세요.

View File

@@ -0,0 +1,35 @@
---
title: 모든 객체에서 이메일 활동을 추적할 수 있나요?
description: 다양한 객체 전반에서 이메일 활동이 어떻게 추적되는지 이해하기.
---
## 지원되는 객체
이메일 활동은 현재 **세 가지 표준 객체**에서 사용할 수 있습니다:
| 객체 | 볼 수 있는 내용 |
| ------- | ---------------------------------- |
| **사람들** | 해당 특정 연락처와 주고받은 모든 이메일 |
| **회사** | 해당 회사의 누구와 주고받은 모든 이메일(이메일 도메인 기준) |
| **기회** | 해당 기회에 연결된 회사와 관련된 이메일 |
## 왜 이러한 객체만 지원하나요?
사람들, 회사, 기회는 이메일 맥락이 가장 큰 가치를 더하는 핵심 관계 객체입니다. 이메일 스레드는 다음을 기준으로 자동 연결됩니다:
* **이메일 주소** → 사람 레코드와 매칭
* **이메일 도메인** → 회사 레코드와 매칭
* **회사 관계** → 기회와 연결
## 사용자 지정 개체
현재 **사용자 지정 객체에서는 이메일 추적을 사용할 수 없습니다**.
사용자 지정 객체에서 이메일 맥락이 필요하다면 다음을 고려하세요:
* 관계 필드를 사용하여 사용자 지정 객체를 사람 또는 회사에 연결
* 연결된 사람/회사 레코드에서 이메일 내역 보기
## 향후 계획
이메일 가시성을 사용자 지정 객체로 확장하는 방안을 검토 중입니다. 이 기능의 우선순위 결정을 돕기 위해 사용 사례를 [GitHub 토론](https://github.com/twentyhq/twenty/discussions)에 공유해 주세요.

View File

@@ -0,0 +1,42 @@
---
title: 사용자당 다중 메일박스 연결
description: 단일 사용자에 대해 여러 이메일 계정을 연결합니다.
---
## 개요
Twenty는 **사용자당 무제한 이메일 계정**을 지원합니다. 다음과 같이 여러 받은편지함을 관리하는 경우 유용합니다:
* 개인 업무용 이메일 + 팀 공유 받은편지함
* 고객 대응용 이메일 주소 여러 개
* 역할별로 서로 다른 이메일 계정
## 여러 메일박스를 추가하는 방법
1. **설정 → 계정**으로 이동
2. **계정 추가**를 클릭
3. Google 또는 Microsoft 계정을 추가로 연결하거나, IMAP/SMTP 프로토콜을 지원하는 다른 메일 제공업체의 계정을 연결하세요
4. 이 메일박스의 동기화 설정을 구성하세요
5. 연결하려는 각 메일박스에 대해 반복하세요
## 여러 계정 관리
연결된 각 메일박스에는 고유한 설정이 있습니다:
* **이메일 가시성**: 팀원이 볼 수 있는 범위 선택
* **연락처 자동 생성**: 메일박스별 사용/사용 안 함
* **폴더 선택**: 동기화할 폴더 선택
## 이메일 표시 방식
연결된 모든 메일박스의 이메일이 Twenty와 동기화되어 다음 위치에 표시됩니다:
* **사람 레코드**: 연락처의 이메일 주소 기준
* **회사 레코드**: 이메일 도메인 기준
* **기회**: 연결된 회사 기준
<Note>각 이메일에는 어떤 메일박스에서 발송되었는지 또는 어떤 메일박스로 수신되었는지가 표시되므로, 각 커뮤니케이션에 어떤 계정이 사용되었는지 추적할 수 있습니다.</Note>
## 중요 참고 사항
<Warning>실제 메일박스만 연결할 수 있습니다. 다른 메일박스로 전달되는 이메일 별칭은 별도로 연결할 수 없습니다 — 기본 메일박스를 통해 동기화됩니다.</Warning>

View File

@@ -0,0 +1,53 @@
---
title: 레코드에서 이메일이 보이지 않음
description: 레코드에서 누락된 이메일 문제 해결.
---
## 일반적인 원인
### 1. 초기 동기화가 아직 진행 중
이메일 동기화에는 시간이 걸리며, 특히 메일함이 큰 경우 더 오래 걸립니다. Twenty는 분당 약 **400건의 메시지**를 가져옵니다(이것은 Gmail API의 속도 제한에 의해 제한됩니다).
* **캘린더 동기화**: 몇 분 안에 완료됨
* **이메일 동기화**: 메일함 크기에 따라 달라짐 (예: 이메일 10,000개 ≈ 25분, 50,000개 ≈ 2시간)
**해결 방법**: 초기 가져오기가 완료될 때까지 기다리세요. 메일함 크기를 기준으로 소요 시간을 추정할 수 있습니다.
### 2. Twenty에 연락처가 존재하지 않음
이메일은 기존 사람 레코드에만 표시됩니다. 연락처가 아직 생성되지 않았다면:
* 메일함 설정에서 **연락처 자동 생성**을 활성화하세요
* 또는 먼저 사람 레코드를 수동으로 생성하세요
**해결 방법**: **Settings → Accounts**로 이동하여 메일함을 선택하고 연락처 자동 생성을 활성화하세요.
### 3. 내부 이메일은 제외됨
동료 간 이메일(같은 이메일 도메인)은 개인 정보 보호를 위해 절대 동기화되지 않습니다.
**해결 방법**: 이는 의도된 동작입니다. 외부 이메일만 동기화됩니다.
### 4. 그룹 또는 배포 목록에서 온 이메일
그룹 이메일과 배포 목록은 동기화에서 제외됩니다.
**해결 방법**: 이는 의도된 동작입니다.
### 5. 동기화 대상으로 폴더가 선택되지 않음
Message Folder 기능을 사용하는 경우 일부 폴더가 제외되어 있을 수 있습니다.
**해결 방법**: **Settings → Accounts**로 이동하여 메일함을 선택하고 폴더 동기화 설정을 확인하세요.
### 6. 레코드의 이메일 주소가 잘못됨
사람 레코드에 이메일에서 사용된 주소와 다른 이메일 주소가 등록되어 있을 수 있습니다.
**해결 방법**: 올바른 이메일 주소를 사람 레코드에 추가하세요.
## 아직도 작동하지 않나요?
1. 메일함 연결을 끊었다가 다시 연결해 보세요
2. 문제가 지속되면 지원팀에 문의하세요

View File

@@ -0,0 +1,58 @@
---
title: 가져오는 이메일 제한
description: 어떤 이메일을 Twenty로 가져올지 제어하세요.
---
## 개요
기본적으로 Twenty는 연결된 메일박스의 모든 외부 이메일을 동기화합니다. **폴더 선택**과 **표시 설정**을 사용하여 가져올 항목을 제한할 수 있습니다.
## 방법 1: 폴더 선택(권장)
Twenty와 동기화할 이메일 폴더 제어:
1. **설정 → 계정**으로 이동
2. 연결된 이메일 계정을 선택하세요.
3. 동기화할 폴더를 선택하세요:
| 폴더 | 설명 |
| ------------- | --------- |
| **받은 편지함** | 주요 수신 이메일 |
| **보낸 편지함** | 발송한 이메일 |
| **보관함** | 보관된 메시지 |
| **사용자 지정 폴더** | 원하는 특정 폴더 |
4. 동기화하지 않을 폴더를 제외하세요(스팸, 휴지통, 개인 폴더).
<Note>모든 이메일을 전부 동기화하지 않고도 CRM에 표시되는 이메일을 정확하게 제어할 수 있습니다.</Note>
## 방법 2: 연락처 자동 생성 설정
이메일에서 연락처를 생성할 시점을 제어하세요:
1. **설정 → 계정**으로 이동
2. 연결된 메일박스를 선택하세요.
3. 옵션을 선택하세요:
* **비활성화**: 연락처는 생성되지 않지만, 이메일은 기존 연락처와 계속 동기화됩니다
* **발신 및 수신**: 모든 외부 이메일에서 연락처를 생성합니다
* **발신만**: 사용자가 보낸 이메일에서만 연락처를 생성합니다
## 내부 이메일
동료 간 메시지(같은 도메인)는 Twenty에서 동기화할 수 있습니다:
1. **설정 → 일반 → 보안**으로 이동하세요.
2. **내부 이메일 동기화**를 켜거나 끄세요.
<Note>기본적으로 이 옵션은 꺼져 있습니다.</Note>
## 항상 제외되는 항목
설정과 관계없이 다음 이메일은 동기화되지 않습니다:
* **그룹 이메일**: 배포 목록 및 그룹 메시지
* **스팸/휴지통**: 시스템 폴더는 일반적으로 제외됩니다
## 중요 참고 사항
<Note>아직 선택적 동기화를 위한 CC 이메일 주소를 제공하지 않습니다. 위의 폴더 선택 기능을 사용하여 동일한 수준의 제어를 구현하세요.</Note>

View File

@@ -0,0 +1,144 @@
---
title: 캘린더 및 이메일
description: Twenty에 이메일과 캘린더 계정을 연결하세요.
---
## 연결 옵션
### Google 계정 (Gmail 및 Google 캘린더)
1. **설정 → 계정**으로 이동
2. **계정 추가**를 클릭
3. **Google로 계속**을 선택
4. Twenty에게 Gmail 및 Google 캘린더에 대한 접근 권한을 부여
5. 이메일 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **다음**을 클릭
6. 캘린더 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **계정 추가**를 클릭
7. 이메일과 캘린더 이벤트가 자동으로 동기화되기 시작합니다.
### Microsoft 계정 (Outlook 및 Microsoft 캘린더)
1. **설정 → 계정**으로 이동
2. **계정 추가**를 클릭
3. **Microsoft로 계속**을 선택
4. Twenty에게 Outlook과 Microsoft 캘린더에 대한 접근 권한을 부여
5. 이메일 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **다음**을 클릭
6. 캘린더 동기화 설정(가시성, 자동 생성)을 구성한 뒤 → **계정 추가**를 클릭
7. 이메일과 캘린더 이벤트가 자동으로 동기화되기 시작합니다.
### IMAP/SMTP/CalDAV 설정 (다른 공급자)
다른 이메일 및 캘린더 공급자의 경우:
1. **설정 → 계정**으로 이동
2. 수신 이메일을 동기화하려면 IMAP 설정을 구성하고, 이메일을 보내려면 SMTP 설정을 구성하세요.
3. 캘린더를 위한 CalDAV 설정을 구성합니다.
4. 연결을 테스트하세요.
<Note>
**에어갭 또는 내부 네트워크에서의 셀프 호스팅**: 기본적으로 Twenty는 사설/내부 IP 주소로의 아웃바운드 연결을 거부합니다(SSRF 보호). 메일 또는 캘린더 서버가 로컬/사설 IP(예: LAN의 온프레미스 서버)에서 실행 중인 경우, 해당 서버로의 연결은 차단됩니다. 이를 허용하려면 서버에서 다음 환경 변수를 설정하세요:
```
OUTBOUND_HTTP_SAFE_MODE_ENABLED=false
```
이 설정은 **모든** 아웃바운드 요청(HTTP 워크플로 작업, 웹훅, IMAP/SMTP/CalDAV 연결)에 대해 안전 모드를 비활성화하므로, SSRF 보호가 필요하지 않은 신뢰할 수 있고 격리된 네트워크에서만 설정해야 합니다.
</Note>
### 다중 메일박스
* **무제한 계정**: 사용자당 여러 이메일 계정 연결
* **계정 관리**: 다양한 메일박스 간 전환
* **동기화 설정**: 메일박스 별 다른 설정 구성
<Warning>
실제 메일박스만 연결할 수 있습니다 (예: 자신의 인박스를 가진 support@domain.com). 다른 메일박스로 전달되는 이메일 별칭은 Twenty에 연결할 수 없습니다.
</Warning>
## 이메일 구성
### 메시지 가시성
이메일에 대한 가시성 수준 선택:
* **메타데이터만**: 기본 정보만 공유 (발신자, 수신자, 날짜, 시간)
* **제목 및 메타데이터**: 메타데이터와 제목 줄 공유
* **모든 이메일 내용**: 첨부 파일을 포함한 전체 이메일 내용 공유
### 연락처 자동 생성
* **비활성화됨**: 자동 연락처 생성 없음
* **발송 및 수신 메시지용**: 모든 외부 이메일 상호작용에 대해 연락처 생성
* **발송 메시지용**: 발송하는 이메일에 대해서만 연락처 생성
* **참고**: 기본적으로 내부 이메일(모든 참여자가 동일한 도메인을 사용하는 이메일)은 프라이버시 보호를 위해 동기화되지 않습니다.
<Note>활성화하면 연락처는 이메일 도메인을 기준으로 해당 회사 레코드에 자동으로 연결됩니다. 아직 회사가 존재하지 않으면 Twenty가 생성합니다.</Note>
<Note>
**내부 이메일 동기화**: "내부 이메일이 동기화되지 않음" 동작이 기본값이지만, 이를 해제할 수 있습니다. 해당 토글은 고급 설정에 있습니다:
1. **설정**을 열고 설정 페이지 하단에서 **고급** 토글을 활성화하세요.
2. **일반 → 보안**으로 이동하세요.
3. 모든 참여자가 동일한 도메인을 사용하는 이메일을 포함하려면 **내부 이메일 동기화** 토글을 활성화하세요.
이 설정은 워크스페이스 전체에 적용됩니다(대학이나 공유 도메인 조직에 유용).
</Note>
### 메시지 폴더 선택으로 동기화할 이메일 제어
Twenty와 동기화할 이메일 폴더 제어:
1. **설정 → 계정**으로 이동하여 연결된 이메일 계정을 선택하세요.
2. 동기화할 폴더를 선택하세요:
* **받은 편지함**: 주요 수신 이메일
* **보낸 편지함**: 발송한 이메일
* **사용자 지정 폴더**: 포함하고 싶은 특정 폴더
* **폴더 제외**: 스팸, 휴지통 또는 개인 폴더 건너뛰기
모든 이메일을 동기화하지 않고 CRM에 나타나는 이메일을 정확하게 제어할 수 있습니다.
**동기화되는 항목:**
* **외부 이메일**: 선택한 폴더에서 외부 연락처와의 모든 이메일
* **내부 이메일**: 기본적으로 동기화되지 않음(같은 도메인 이메일은 비공개로 유지). 워크스페이스 전체에 포함하려면 **설정** 하단에서 **고급** 토글을 활성화한 후, **일반 → 보안**에서 **내부 이메일 동기화**를 켜세요.
* **첨부 파일**: 2026년 상반기 제공 예정
**참고**: 선택적 동기화를 위한 CC 이메일 주소를 제공하지 않습니다. 대신에 위의 메시지 폴더 기능을 사용하여 Twenty와 동기화할 이메일을 동일한 수준으로 제어할 수 있습니다.
## 캘린더 구성
### 이벤트 가시성
작업 공간의 다른 사용자에게 보이는 내용을 선택하세요:
* **모든 것**: 팀과 이벤트의 모든 세부사항 공유
* **메타데이터**: 날짜 및 참가자만 팀과 공유됨
### 회의를 위한 연락처 자동 생성
* **예**: CRM에 없는 회의 참가자를 위해 연락처 자동 생성
* **아니오**: 기존 연락처에만 회의 연결
<Note>활성화하면 연락처는 이메일 도메인을 기준으로 해당 회사 레코드에 자동으로 연결됩니다. 아직 회사가 존재하지 않으면 Twenty가 생성합니다.</Note>
### 동기화할 이벤트 제어
* **회의 가져오기**: 자동으로 캘린더 이벤트 가져오기
* **연락처 연결**: 회의를 사람과 회사 기록에 연결
**동기화되는 항목:**
* **회의**: 외부 참가자가 있는 캘린더 이벤트
* **연락처 연결**: CRM 기록에 자동으로 연결되는 이벤트
* **팀 이벤트**: 공유된 캘린더 가시성
## 동기화 빈도
**5분마다 업데이트**: 초기 가져오기를 마친 후 5분마다 이메일 및 캘린더 데이터가 자동으로 동기화됩니다.
<Note>
**초기 동기화 소요 시간**: 캘린더 동기화는 빠르게 완료됩니다(보통 몇 분 이내에), 반면 메일박스가 큰 경우 이메일 동기화에는 더 오래 걸립니다. Twenty는 분당 약 **400건의 메시지**를 가져옵니다(Gmail API의 속도 제한으로 제한됨). 따라서 10,000개의 이메일이 있는 메일박스는 약 25분이 걸립니다. 캘린더 이벤트의 연락처가 이메일 연락처보다 먼저 표시되어도 걱정하지 마세요. 이는 정상적인 동작입니다.
</Note>
## 다음 단계
* [메일박스 기능](/l/ko/user-guide/calendar-emails/capabilities/mailbox)
* [누락된 이메일 문제 해결](/l/ko/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)

View File

@@ -0,0 +1,275 @@
---
title: 차트 설정
description: 필요에 맞게 데이터를 정확히 표시하도록 차트를 구성하세요.
---
import { ChartIcon } from '/snippets/chart-icon.mdx';
## 차트 설정에 액세스
1. 대시보드 오른쪽 상단에서 **편집** 버튼을 클릭합니다
<img src="/images/user-guide/dashboard/dashboard-edit.png" alt="편집 모드" />
2. 대시보드가 편집 모드로 전환됩니다
3. 아무 위젯이나 클릭하여 선택합니다
4. 오른쪽에 설정 패널이 열립니다
설정은 다음 섹션으로 구성됩니다:
* **데이터**: 가져올 데이터와 필터링 방법
* **X축**: 범주를 그룹화하고 정렬하는 방법(막대/선 차트)
* **Y축**: 무엇을 측정하고 어떻게 표시할지(막대/선 차트)
* **스타일**: 색상, 레이블, 시각적 옵션
<Note>
일부 설정은 다른 설정이 구성되었을 때만 표시됩니다. 예를 들어, **날짜 세분성**은 날짜 필드를 선택했을 때만 표시됩니다.
</Note>
---
## 데이터 설정
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="database" />소스 </span>
데이터를 가져올 객체를 선택합니다.
1. **소스**를 클릭합니다
2. 객체를 선택합니다(기회, 사람, 회사 등).
모든 표준 및 사용자 지정 객체를 사용할 수 있습니다. 선택한 객체에 따라 필드 옵션이 달라지므로 소스를 변경하면 다른 설정이 초기화됩니다.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-source.png" alt="소스" />
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="filter" />필터 </span>
차트에 포함할 레코드를 제한합니다.
1. **필터**를 클릭합니다
2. 필터 빌더가 열립니다
3. **+ 필터 추가**를 클릭합니다
4. 필드, 조건, 값을 선택합니다
5. 필요에 따라 필터를 더 추가합니다
필터는 테이블 보기에서와 동일하게 동작합니다. 이를 사용해 데이터의 특정 세그먼트에 집중하세요.
**예시**: 단계가 "Won"인 기회만 필터링하여 성사된 거래만 표시합니다.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-filters.png" alt="필터" />
<Tip>
날짜 필드의 경우, 자동으로 업데이트되는 "지난 7일" 또는 "이번 달"과 같은 동적 필터를 만들려면 **Is relative**를 사용해 보세요.
</Tip>
<Tip>
고급 필터를 지원합니다—여러 필터 규칙을 추가하고 **And** 또는 **Or** 로직으로 결합하세요.
</Tip>
---
## X축 설정
이 설정은 막대 및 선 차트의 가로축을 제어하며, 일반적으로 데이터가 범주로 그룹화되는 방식을 결정합니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="axis-x" />표시할 데이터 </span>
데이터를 그룹화할 필드를 선택합니다. X축에 표시될 범주가 결정됩니다.
**예시**: "Stage"를 선택하면 파이프라인 단계별로 그룹화된 데이터를, "Created date"를 선택하면 시간 경과에 따른 데이터를 볼 수 있습니다.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-x-data-on-display.png" alt="표시된 데이터" />
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="calendar" />날짜 세분성 </span>
날짜 필드로 그룹화할 때 그룹화 기간을 선택합니다.
| 옵션 | 그룹화 기준 | 출력 예 |
| ---------- | -------- | ------------------------ |
| **일** | 각 날짜 | 1월 1일, 1월 2일, 1월 3일... |
| **주** | 달력 기준 주 | 1주차, 2주차, 3주차... |
| **월** | 달력 기준 월 | 1월, 2월, 3월... |
| **분기** | 회계 분기 | Q1, Q2, Q3, Q4 |
| **연도** | 달력 기준 연도 | 2023, 2024, 2025 |
| **요일** | 요일(집계) | 월요일, 화요일... (모든 월요일 합산) |
| **연도의 달** | 월(집계) | 1월, 2월... (모든 1월 합산) |
| **연도의 분기** | 분기(집계) | Q1, Q2, Q3, Q4(모든 Q1 합산) |
"요일/연도 기준" 옵션은 전체 기간에 걸쳐 집계됩니다. **요일**을 사용하면 어떤 요일에 거래가 가장 많은지 확인할 수 있습니다. **월**을 사용하면 월별 추세를 볼 수 있습니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="arrows-sort" />정렬 기준 </span>
X축의 범주 순서를 제어합니다.
* **위치** – Select 필드 설정에 정의된 순서를 사용
* **알파벳순** – A에서 Z까지(날짜는 시간순)
* **값 기준** – 지표값으로 정렬(최대 또는 최소 우선)
* **수동** – 드래그하여 사용자 지정 순서로 설정
<img src="/images/user-guide/dashboard/dashboard-chart-settings-x-sort.png" alt="정렬 기준" />
**팁**: 파이프라인 단계에는 **위치**를 사용하여 영업 프로세스 순서(Lead → Qualified → Proposal → Won)대로 표시하세요.
<Note>
표시되는 옵션은 필드 유형에 따라 다릅니다. Select 필드는 모든 옵션을 제공하지만 날짜 및 텍스트 필드는 더 적습니다.
</Note>
<Tip>
수동 정렬에서는 범주를 드래그해 사용자 지정 순서를 만들 수 있습니다—특정 세그먼트를 강조하거나 데이터로 스토리를 전달하는 데 완벽합니다.
</Tip>
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="eye-off" />0 값 제외 </span>
값이 0이거나 데이터가 없는 범주를 숨깁니다.
* **켜짐**: 레코드가 없는 범주를 숨김
* **꺼짐**: 비어 있어도 모든 범주를 표시
희소한 데이터가 있는 차트를 정리하는 데 사용합니다.
---
## Y축 설정
측정 항목과 표시 방식을 제어합니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="axis-y" />표시할 데이터 </span>
지표를 계산할 필드와 연산을 선택합니다.
* **개수** – 전체 개수, 비어 있음 개수, 비어 있지 않음 개수, 고유 값 개수
* **수학** – 합계, 평균, 최솟값, 최댓값(숫자 필드)
* **백분율** – 비어 있음 비율, 비어 있지 않음 비율
Boolean 필드에는 true/false 개수 옵션이 추가됩니다. 날짜 필드가 있는 집계 차트에는 Earliest/Latest가 표시됩니다.
**예시**: "Amount"에 합계를 선택하면 범주별 총 거래 금액을, 전체 개수를 선택하면 거래 수를 볼 수 있습니다.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-y-data-on-display.png" alt="표시된 데이터" />
<Note>
표시되는 옵션은 필드 및 차트 유형에 따라 다릅니다. 예상한 연산이 보이지 않으면 필드 유형을 확인하세요.
</Note>
### 비율
Select, Multi-select 또는 Boolean 필드의 경우 특정 값의 비율을 계산할 수 있습니다.
1. Select, Multi-select 또는 Boolean 필드를 선택합니다
2. **Ratio**를 활성화합니다
3. 측정할 옵션을 선택합니다
**예시**: 모든 기회 대비 "Won" 거래의 비율을 표시합니다. 총 50개 중 10개가 "Won"이라면 차트에는 20%가 표시됩니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="filters" />그룹화 기준 </span>
두 번째 차원을 추가해 다중 시리즈(여러 막대 또는 선)를 만듭니다.
1. 먼저 X축 필드를 설정합니다
2. **그룹화 기준**을 클릭합니다
3. 두 번째 필드를 선택합니다
**예시**: 단계(X축)와 소유자(그룹화 기준)로 거래를 그룹화하여 각 사람의 파이프라인 분포를 나란히 비교합니다.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-y-group-by.png" alt="그룹별" />
그룹화 기준을 설정하면 차트에 여러 색상이 표시되고 범례가 나타납니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="calendar" />날짜 세분성 </span>
그룹화 기준이 날짜 필드일 때 기간을 선택합니다(X축과 동일한 옵션).
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="arrows-sort" />정렬 기준 </span>
그룹화 기준이 설정된 경우, 그룹 시리즈의 표시 순서를 제어합니다(예: 각 범주 안에서 어떤 소유자의 막대가 먼저 나타날지).
X축 정렬과 동일한 옵션(위치, 알파벳순, 수동)을 사용할 수 있지만, 보조 그룹화에는 값 기준 정렬을 사용할 수 없습니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="chart-bar-popular" />누적 </span>
개별 값 대신 누적 합계를 표시합니다.
* **꺼짐**: 각 막대/포인트가 자신의 값을 표시
* **켜짐**: 각 막대/포인트가 이전 값들의 합계에 자신의 값을 더한 값을 표시
**예시**: 1월 = 10, 2월 = 15
* 누적 꺼짐: 10과 15를 표시
* 누적 켜짐: 10과 25(10 + 15)를 표시
누적을 사용해 시간 경과에 따른 목표 달성 진행도를 추적하세요.
<img src="/images/user-guide/dashboard/dashboard-chart-settings-y-cumulative.png" alt="누적" />
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="math-min" />최솟값 범위 / <ChartIcon icon="math-max" />최댓값 범위 </span>
Y축의 최소/최대 값을 고정합니다.
* 비워 두면 자동 스케일링
* 숫자를 입력해 경계를 고정합니다
**사용 시점:**
* 정확한 시각적 비교를 위해 최소값을 0으로 설정하세요
* 여러 차트에서 일관된 축 범위를 위해 둘 다 설정하세요
* 둘 다 설정하여 특정 값 범위에 집중하세요
---
## 스타일 설정
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="color-swatch" />색상 </span>
차트의 색 구성표를 설정합니다. 다양한 색상 팔레트 중에서 선택합니다.
<Note>
Select 필드로 그룹화하는 경우 차트는 필드 설정에서 각 옵션에 정의된 색상을 자동으로 사용합니다.
</Note>
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="gizmo" />축 이름 </span>
표시할 축 레이블을 선택합니다: **없음**, **X축**, **Y축**, 또는 **둘 다**(막대 및 선 차트 전용).
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="stack-2" />누적 막대 / 누적 선 </span>
그룹화가 설정된 경우 다중 시리즈의 표시 방식을 선택합니다.
* **꺼짐(그룹형)**: 시리즈가 나란히 표시됩니다. 그룹 간 정확한 값을 비교할 때 사용합니다.
* **켜짐(누적형)**: 시리즈가 위로 겹쳐 누적되어 표시됩니다. 부분이 전체를 어떻게 구성하는지(구성 비율)를 보여줄 때 사용합니다.
**예시**: 단계별 거래, 소유자 기준 그룹화
* 그룹형: 각 소유자의 정확한 수치를 나란히 확인
* 누적형: 단계별 총 거래 수와 각 소유자의 기여도를 누적으로 확인
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="badge-2k" />데이터 레이블 </span>
차트 요소(막대, 포인트, 조각)에 값을 직접 표시합니다.
* **켜짐**: 값이 차트에 표시됩니다
* **꺼짐**: 값이 표시되지 않습니다(더 깔끔함)
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}> <ChartIcon icon="text-caption" />범례 </span>
범례를 표시하거나 숨깁니다(그룹화가 설정된 경우에만 표시).
* **켜짐**: 각 색상이 의미하는 바를 범례에 표시
* **꺼짐**: 범례를 표시하지 않음
<Tip>
**범례 항목 위에 마우스를 올리면** 해당 그룹이 강조 표시됩니다. **클릭**하여 차트에서 일시적으로 숨깁니다.
</Tip>
---
## 차트별 참고 사항
### 파이 차트
* <span style={{ display: 'inline-flex', verticalAlign: 'middle' }}><ChartIcon icon="chart-pie" size={16} /></span> **각 조각이 나타내는 것** – 조각의 그룹화 기준을 정의
* <span style={{ display: 'inline-flex', verticalAlign: 'middle' }}><ChartIcon icon="eye-off" size={16} /></span> **빈 범주 숨기기** – 값이 0인 조각 제거
* <span style={{ display: 'inline-flex', verticalAlign: 'middle' }}><ChartIcon icon="number-123" size={16} /></span> **가운데에 값 표시** – 집계 값(합계, 평균, 개수 등) 표시
### 집계 차트
* <span style={{ display: 'inline-flex', verticalAlign: 'middle' }}><ChartIcon icon="caret-left" size={16} /></span> **접두사** – 숫자 앞에 텍스트 추가(예: `$`)
* <span style={{ display: 'inline-flex', verticalAlign: 'middle' }}><ChartIcon icon="caret-right" size={16} /></span> **접미사** – 숫자 뒤에 텍스트 추가(예: `%`)

View File

@@ -0,0 +1,92 @@
---
title: 대시보드
description: CRM 데이터를 시각화하기 위해 탭으로 대시보드를 생성하고 구성합니다.
---
## 개요
Twenty의 대시보드는 계층 구조로 구성됩니다: **대시보드 → 탭 → 위젯**. 각 대시보드에는 여러 개의 탭을 포함할 수 있으며, 각 탭에는 위젯(차트, 숫자, iFrames)이 포함됩니다.
## 새 대시보드 생성
1. 내비게이션에서 **대시보드**로 이동합니다
2. **+ 새 레코드**를 클릭합니다
<img src="/images/user-guide/dashboard/dashboard-create-new.png" alt="새 대시보드 생성" />
3. 대시보드에 이름을 지정합니다
4. 탭과 위젯을 추가하기 시작합니다
## 탭으로 작업하기
탭은 대시보드를 논리적인 섹션으로 구성하는 데 도움이 됩니다.
### 탭 만들기
1. 편집 모드에서 탭 표시줄의 \*\*+\*\*를 클릭하면 오른쪽에 사이드 패널이 열립니다
2. 탭의 이름을 지정합니다(예: "파이프라인 개요", "팀 성과")
3. 탭에 위젯을 추가합니다
### 탭 재정렬
1. 편집 모드에서 이동하려는 탭을 클릭한 상태로 길게 누릅니다
2. 드래그 앤 드롭하여 새 위치로 이동합니다
3. 탭을 클릭한 다음 명령 메뉴를 사용해 탭을 왼쪽이나 오른쪽으로 이동할 수도 있습니다
### 탭 삭제
1. 편집 모드에서 삭제하려는 탭을 클릭합니다
2. 명령 메뉴에서 **Delete** 버튼을 클릭합니다
### 탭 복제
1. 복제하려는 탭을 클릭합니다
2. 사이드 패널에서 **복제** 버튼을 클릭합니다
<img src="/images/user-guide/dashboard/dashboard-tabs.png" alt="대시보드 탭" />
## 대시보드 레이아웃
### 위젯 배치
* 드래그 앤 드롭하여 위치를 지정합니다
* 강조를 위해 크기를 조정합니다
* 관련 차트를 함께 그룹화합니다
### 대시보드 복제
1. 복제하려는 대시보드를 선택합니다
2. **Cmd + K**(Windows에서는 **Ctrl + K**)로 명령 표시줄을 엽니다
3. **대시보드 복제**를 선택합니다
<img src="/images/user-guide/dashboard/dashboard-duplicate.png" alt="대시보드 복제" />
### 모범 사례
* **논리적 흐름**: 개요에서 세부 정보 순으로 배열합니다
* **시각적 위계**: 핵심 지표에는 더 큰 차트를 사용합니다
* **일관된 스타일**: 일치하는 색상과 글꼴을 사용합니다
## 가시성 및 액세스
### 대시보드 가시성
대시보드는 Twenty 워크스페이스에 액세스 권한이 있는 모든 사용자에게 표시됩니다. 현재는 비공개 대시보드 옵션이 없습니다.
### 즐겨찾기
빠르게 액세스할 수 있도록 대시보드를 즐겨찾기에 추가할 수 있습니다. 이는 개인 설정—사용자의 즐겨찾기는 다른 사용자에게 표시되지 않습니다.
대시보드를 즐겨찾기에 추가하려면 대시보드를 열고 별 아이콘을 클릭합니다.
### 시간대 동작 방식
현재 대시보드는 보는 사람의 시간대를 기준으로 데이터를 표시합니다. 즉, 동일한 대시보드라도 지역이 다른 팀 구성원에게는 서로 다른 지표가 표시될 수 있습니다(예: APAC vs. US).
<Note>
**곧 제공 예정**: 모든 사용자가 위치와 관계없이 일관된 데이터를 볼 수 있도록 대시보드별로 특정 시간대를 설정하는 기능을 추가할 예정입니다.
</Note>
<Note>
**곧 제공 예정**: 대시보드 수준의 필터를 통해 모든 위젯에 한 번에 필터를 적용할 수 있어 데이터를 더 빠르게 탐색할 수 있습니다.
</Note>

View File

@@ -0,0 +1,169 @@
---
title: 위젯
description: Twenty에서 위젯 유형과 시각화 옵션을 살펴보세요.
---
import { ChartIcon } from '/snippets/chart-icon.mdx';
## 사용 가능한 위젯
Twenty는 CRM 데이터를 시각화할 수 있는 다양한 위젯 유형을 제공합니다.
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="chart-bar-popular" />막대 차트</span>
데이터를 가로 또는 세로 막대로 표시합니다.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-bar-chart.png" alt="막대 차트" />
</Frame>
**적합한 용도:**
* 범주별 값 비교
* 순위 표시
* 기간별 지표 추적
**사용 예시:**
* 단계별 거래
* 영업 담당자별 매출
* 월별 추가된 연락처
<Note>
**표시 제한**: 막대 차트는 막대 최대 100개를 표시할 수 있으며, Group By를 사용하는 경우 막대당 최대 50개의 그룹을 표시할 수 있습니다. 경고 "Undisplayed data: max X bars per chart"가 표시되면, 필터를 추가해 데이터 범위를 좁히거나 그룹화를 변경하세요(예: 일 단위 대신 주 단위로 그룹화).
</Note>
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="chart-pie" />파이 차트</span>
전체 대비 비율을 표시합니다.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-pie-chart.png" alt="파이 차트" />
</Frame>
**적합한 용도:**
* 구성 또는 분포 표시
* 부분과 전체 비교
* 주요 세그먼트 강조
**사용 예시:**
* 소스별 거래 분포
* 업종별 연락처 분포
* 소유자별 파이프라인 구성
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="chart-line" />선형 차트</span>
시간에 따른 추세를 표시합니다.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-line-chart.png" alt="선형 차트" />
</Frame>
**적합한 용도:**
* 시간 경과에 따른 변화 추적
* 추세 파악
* 여러 지표 비교
**사용 예시:**
* 월별 거래 건수 추세
* 분기별 매출 성장
* 시간 경과에 따른 활동 수준
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="sum" />집계 차트</span>
단일 핵심 값을 눈에 띄게 표시합니다.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-aggregate-chart.png" alt="집계 차트" />
</Frame>
**적합한 용도:**
* KPI 강조
* 합계 또는 평균 표시
* 빠른 상태 확인
**사용 예시:**
* 총 파이프라인 가치
* 열린 기회 수
* 전환율
**고급 옵션:**
* **Ratio**: Select 필드에서 값 간 비율을 계산합니다. **Data on display**로 이동 → 필드를 선택 → **Ratio** 옵션을 활성화하세요.
* **Prefix & Suffix**: 가독성을 높이기 위해 숫자 앞이나 뒤에 사용자 지정 텍스트를 추가합니다(예: "$" 접두사 또는 "%" 접미사).
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="frame" />iFrames</span>
대시보드에 외부 도구와 콘텐츠를 직접 삽입합니다.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-table.png" alt="표 차트" />
</Frame>
**적합한 용도:**
* 개별 항목 검색하기
* 정확한 값 확인하기
* 감사 또는 참고용
**사용 예시:**
* 이번 달에 마감되는 거래
* 이번 주 신규 리드
* 연체된 청구서
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="table" />Table</span>
필터링된 레코드를 대시보드에서 바로 확인하세요.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-iframe.png" alt="iFrame" />
</Frame>
**적합한 용도:**
* 외부 보고서 또는 대시보드 표시
* 타사 영업 도구 통합
* 다른 시스템의 실시간 콘텐츠 표시
**사용 예시:**
* 지원 도구의 지표
* 다이얼러의 지표
* 영업 시퀀스 도구의 실시간 콘텐츠
### <span style={{ display: 'inline-flex', alignItems: 'center', gap: '8px' }}><ChartIcon icon="align-box-left-top" />서식 있는 텍스트</span>
대시보드에 서식 있는 텍스트와 콘텐츠를 직접 추가하세요.
<Frame>
<img src="/images/user-guide/dashboard/dashboard-widget-rich-text.png" alt="서식 있는 텍스트" />
</Frame>
**적합한 용도:**
* 컨텍스트 또는 지침 추가
* 대시보드 설명
* 노트 및 주석
**기능:**
* 서식 있는 텍스트 편집(굵게, 기울임, 목록 등)
* 이미지 및 파일 업로드
* Markdown 스타일 편집
<Note>
**곧 제공 예정**: 게이지 차트는 아직 사용할 수 없지만 로드맵에 포함되어 있습니다.
</Note>
### 위젯 복제
1. 위젯을 클릭하세요
2. **Options**를 여세요
3. **Duplicate widget**을 클릭하세요

View File

@@ -0,0 +1,54 @@
---
title: 대시보드 FAQ
description: Twenty의 대시보드에 관한 자주 묻는 질문입니다.
---
<AccordionGroup>
<Accordion title="비공개 대시보드를 만들 수 있나요?">
아니요. 현재는 Twenty 워크스페이스에 접근 권한이 있는 모든 사용자에게 대시보드가 표시됩니다. 비공개 대시보드는 아직 제공되지 않습니다.
</Accordion>
<Accordion title="내 지표가 동료의 것과 다르게 보이는 이유는 무엇인가요?">
현재 대시보드는 보는 사람의 시간대를 기준으로 데이터를 표시합니다. 서로 다른 지역(예: APAC과 미국)에 있는 경우, 동일한 대시보드에서도 숫자가 약간 다르게 보일 수 있습니다. 팀 간 일관된 데이터를 보장하기 위해, 대시보드별 시간대 설정을 추가하는 작업을 진행 중입니다.
</Accordion>
<Accordion title="대시보드를 내보낼 수 있나요?">
현재는 대시보드 내보내기를 지원하지 않습니다. 이 기능은 로드맵에 포함되어 있습니다.
</Accordion>
<Accordion title="대시보드를 외부 사용자와 공유할 수 있나요?">
아니요. 현재는 Twenty 워크스페이스 외부 사용자(비 Twenty 사용자)와 대시보드를 공유할 수 없습니다.
</Accordion>
<Accordion title="대시보드를 즐겨찾기에 추가하려면 어떻게 하나요?">
즐겨찾기에 추가할 대시보드를 연 다음 별 아이콘을 클릭하세요. 즐겨찾기는 개인 설정이며 다른 사용자에게는 영향을 주지 않습니다.
</Accordion>
<Accordion title="탭과 위젯의 차이점은 무엇인가요?">
* **탭**은 대시보드를 섹션으로 구성합니다(대시보드 내의 페이지와 비슷함)
* **위젯**은 각 탭 안에 있는 개별 시각화 요소입니다(차트, 숫자, iFrame 등)
구성: 대시보드 → 탭 → 위젯
</Accordion>
<Accordion title="대시보드 전체에 한 번에 필터를 적용할 수 있나요?">
대시보드 수준의 필터는 아직 제공되지 않지만, 이 기능은 로드맵에 포함되어 있습니다. 현재는 각 위젯에 개별적으로 필터를 적용해야 합니다.
</Accordion>
<Accordion title="게이지 차트를 사용할 수 있나요?">
아직 안 됩니다. 게이지 차트는 로드맵에 포함되어 있으며 향후 릴리스에 추가될 예정입니다.
</Accordion>
<Accordion title="대시보드를 복제하려면 어떻게 하나요?">
1. 보기 모드인지 확인하세요(편집 중이 아님).
2. **Cmd + K**(Windows에서는 **Ctrl + K**)로 명령 표시줄을 여세요
3. **대시보드 복제**를 선택하세요
</Accordion>
<Accordion title="대시보드 데이터는 얼마나 자주 새로고침되나요?">
CRM 데이터가 변경되면 위젯이 자동으로 업데이트됩니다:
* 대부분의 지표는 실시간으로 업데이트됩니다
* 필요 시 새로고침 버튼을 눌러 수동으로 업데이트하세요
* 추세 분석을 위해 과거 데이터가 보존됩니다
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,67 @@
---
title: 위젯 FAQ
description: 자주 묻는 질문과 오류 메시지를 설명합니다.
---
<AccordionGroup>
<Accordion title="개수 대신 백분율을 표시하려면 어떻게 하나요?">
세 가지 옵션:
* **Percent empty/not empty**: Data on display에서 Percent empty 또는 Percent not empty를 선택하세요
* **Ratio**: Select 또는 Checkbox 필드에서 전체 레코드 대비 특정 옵션의 백분율을 표시하려면 Ratio를 활성화하세요
* **Suffix**: 집계 차트의 경우 Style settings에서 Suffix로 `%`를 추가하세요
</Accordion>
<Accordion title="그룹형과 누적 막대의 차이는 무엇인가요?">
**Group by**를 사용할 때, 계열을 두 가지 방식으로 표시할 수 있습니다:
* **Grouped**: 막대를 나란히 표시 — 정확한 값 비교에 적합
* **Stacked**: 막대를 위로 쌓아 표시 — 구성을 보여주기에 적합
전환하려면 Style settings에서 **Stacked**를 전환하세요.
</Accordion>
<Accordion title="합계 또는 평균 옵션이 보이지 않는 이유는 무엇인가요?">
사용 가능한 연산은 **필드 유형**에 따라 달라집니다:
* **숫자 필드**: Sum, Average, Min, Max
* **날짜 필드**: Earliest, Latest (집계 차트에만 해당)
* **체크박스 필드**: Count true, Count false
옵션이 보이지 않으면, 호환되는 필드 유형을 선택했는지 확인하세요.
</Accordion>
<Accordion title="일부 설정이 회색으로 표시되거나 누락된 이유는 무엇인가요?">
많은 설정은 전제 조건이 충족될 때만 표시됩니다:
* **Date granularity**: 먼저 날짜 필드를 선택하세요
* **Group by, Legend, Stacked**: 먼저 Source를 설정하세요
* **Legend, Stacked toggles**: 먼저 Group by를 설정하세요
설정이 보이지 않으면 먼저 해당 전제 조건을 설정하세요.
</Accordion>
<Accordion title="'No data'는 무엇을 의미하나요?">
차트가 구성과 일치하는 레코드를 찾지 못했습니다.
**해결 방법:** 필터를 제거하거나 조정하고, 올바른 Source object를 선택했는지 확인하거나, 선택한 날짜 범위에 해당하는 레코드가 존재하는지 확인하세요.
</Accordion>
<Accordion title="'Invalid configuration'는 무엇을 의미하나요?">
필수 설정이 누락되었거나 호환되지 않습니다.
**해결 방법:** Source가 설정되어 있고, Data on display가 구성되어 있으며, 필요한 그룹화 필드가 선택되어 있는지 확인하세요.
</Accordion>
<Accordion title="'Undisplayed data'는 무엇을 의미하나요?">
데이터가 표시 한도를 초과했습니다(막대 100개, 데이터 포인트 100개 또는 슬라이스 100개).
**해결 방법:** 데이터를 좁히기 위해 필터를 추가하거나, date granularity를 Day에서 Week 또는 Month로 변경하세요.
</Accordion>
<Accordion title="한쪽 축에 데이터가 표시되지 않는 이유는 무엇인가요?">
선택한 필드에 필터된 레코드의 값이 없거나, 필드 유형이 예상 데이터와 일치하지 않습니다.
**해결 방법:** 다른 필드를 사용해 보거나, 선택한 필드에 대해 레코드에 값이 있는지 확인하세요.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,75 @@
---
title: 대시보드
description: Twenty에서 보고 및 대시보드의 기본을 알아보세요.
---
## 대시보드 이해하기
Twenty의 대시보드는 핵심 성과 지표를 추적하고 CRM 데이터에서 인사이트를 얻을 수 있는 시각적 방법을 제공합니다.
<img src="/images/user-guide/dashboard/dashboards_v2.png" alt="대시보드" />
## 핵심 개념
### 대시보드
대시보드는 CRM 데이터를 한눈에 보여주는 탭 모음입니다. 다양한 목적에 맞게 여러 대시보드를 만들 수 있습니다:
* 영업 성과
* 팀 활동
* 파이프라인 상태
* 맞춤형 지표
### 탭
탭을 사용하면 대시보드를 섹션으로 구성할 수 있습니다. 각 탭에는 하나 이상의 위젯이 포함됩니다.
### 위젯
위젯은 특정 데이터를 표시하는 개별 시각화 요소입니다. 유형은 다음과 같습니다:
* 막대 차트
* 파이 차트
* 선형 차트
* 집계 차트
* iFrame
* 서식 있는 텍스트
<Note>
**현재 제한 사항**:
* 대시보드 내보내기와 외부 사용자(Twenty 비사용자)와의 공유는 현재 제공되지 않습니다.
* 게이지 차트는 아직 제공되지 않습니다.
</Note>
## 시작하기
### 첫 번째 대시보드 만들기
1. **대시보드** 섹션으로 이동합니다
2. **+ 새 대시보드**를 클릭합니다
3. 대시보드에 이름을 지정합니다
4. 콘텐츠를 구성할 수 있도록 탭을 추가합니다
5. 데이터를 표시할 위젯을 추가합니다
6. 저장
### 위젯 추가하기
1. 대시보드에서 탭을 엽니다
2. **+ 위젯 추가**를 클릭합니다.
3. 위젯 유형을 선택합니다
4. 데이터 소스(객체)를 선택합니다
5. 위젯 설정을 구성합니다
6. 위젯을 저장하고 확인합니다
## 모범 사례
* **간단하게 시작하세요**: 몇 가지 핵심 지표부터 시작한 뒤 시간이 지나며 더 추가하세요
* **실행 가능한 데이터에 집중하세요**: 의사결정을 이끄는 지표를 표시하세요
* **정기 검토**: 추세를 파악하기 위해 대시보드를 정기적으로 확인하세요
* **팀과 공유하세요**: 관련 팀 구성원이 대시보드를 볼 수 있도록 설정하세요
## 다음 단계
* [위젯과 시각화](/l/ko/user-guide/dashboards/capabilities/widgets)
* [차트 설정 레퍼런스](/l/ko/user-guide/dashboards/capabilities/chart-settings)
* [대시보드 FAQ](/l/ko/user-guide/dashboards/how-tos/dashboards-faq)

View File

@@ -0,0 +1,76 @@
---
title: 오류 처리 및 유효성 검사
description: 확인하기 전에 UI에서 가져오기 오류를 검토하고 바로 수정하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 가져오기 전 유효성 검사
파일을 업로드하고 필드를 매핑한 후, Twenty는 데이터를 가져오기 **이전에** 유효성 검사를 수행합니다. 이렇게 하면 기존 데이터에 영향을 주지 않고 오류를 찾아 수정할 수 있습니다.
## 작동 방식
1. **업로드**: CSV 파일을 업로드하세요
2. **매핑**: 열을 Twenty 필드에 매핑하세요
3. **검토**: 노란색으로 강조 표시된 잠재적 오류를 확인하세요
4. **오류 수정**: UI에서 바로 수정하세요
5. **확인**: 가져오기를 확인하세요
<VimeoEmbed videoId="1145273857" title="동영상 시연" />
## 오류 표시
문제가 있는 행은 **노란색**으로 강조 표시됩니다. 다음을 수행할 수 있습니다:
* **셀을 직접 편집**하여 오류를 수정하세요
* **행을 제거**하여 완전히 건너뛰세요
이 인라인 편집은 시간을 절약해 줍니다 — 스프레드시트로 돌아가 오류를 수정하고 다시 업로드할 필요가 없습니다.
## 일반적인 오류 유형
### 중복 값
**원인**: 고유 필드(이메일, 도메인)가 Twenty에 이미 존재하거나 파일에 두 번 나타납니다.
**해결 방법**:
* 가져오기 UI에서 중복 값을 편집하세요
* 중복된 행 중 하나를 제거하세요
고유성이 어떻게 적용되는지에 대한 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요.
### 잘못된 형식
**원인**: 데이터가 예상 형식과 일치하지 않습니다(예: 잘못된 이메일, 잘못된 날짜 형식).
**해결 방법**: 올바른 형식을 사용하도록 셀을 편집하세요.
필드 유형별로 예상되는 형식은 [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)을 참조하세요.
### 필수 필드 누락
**원인**: 필수 필드가 비어 있습니다.
**해결 방법**: 필수 필드에 값을 입력하거나 해당 행을 제거하세요.
### 관계를 찾을 수 없음
**원인**: 참조된 레코드가 존재하지 않습니다(예: 가져오지 않은 회사 도메인).
**해결 방법**:
* 상위 레코드를 먼저 가져오세요
* 또는 참조 값을 수정하세요
올바른 가져오기 순서와 레코드를 연결하는 방법은 [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)를 참조하세요.
## 오류를 줄이기 위한 팁
1. **템플릿을 다운로드**하여 파일을 가져오기 전에 예상 형식을 확인하세요
2. **데이터 정리**: 먼저 스프레드시트에서 데이터를 정리하세요
3. **올바른 순서로 파일을 가져오세요** 관계를 가져오기 위해 (Companies → People → Opportunities)
4. **소규모 배치로 테스트**: 전체 가져오기 전에 테스트해 보세요
5. **중복 확인**: 업로드 전에 중복을 확인하세요
6. **각 파일의 레코드를 10,000개로 제한하세요**

View File

@@ -0,0 +1,198 @@
---
title: 필드 매핑
description: 데이터 가져오기 시 필드 매핑이 작동하는 방식.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 필드 매핑 작동 방식
파일을 업로드하면 Twenty가 열을 분석하여 기존 필드와 일치시키려고 시도합니다.
### 자동 매핑
Twenty는 다음을 기준으로 열을 일치시키려고 시도합니다:
* 열 헤더 이름(정확 또는 유사 일치)
* 데이터 유형 감지(날짜, 숫자, 이메일)
* 일반적인 필드 패턴
<Note>**빠른 팁:** 가져오려는 객체에서 몇 행을 내보내세요. 내보낸 파일에는 Twenty가 기대하는 정확한 열 이름이 포함되어, 가져오는 동안 자동 매핑이 원활해집니다.</Note>
### 수동 매핑 옵션
각 열에 대해 다음을 수행할 수 있습니다:
* **필드에 매핑**: 드롭다운에서 일치하는 Twenty 필드를 선택
* **매핑하지 않음**: 해당 열을 완전히 건너뜁니다(데이터가 가져오지 않습니다)
<Note>**가져오기 전에 필드가 존재해야 합니다.** 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 **설정 → 데이터 모델**에서 사용자 지정 필드를 생성하세요.</Note>
## 필드 유형 호환성
데이터 모델에서 제공되는 모든 필드 유형이 가져오기를 지원합니다.
`id` 값을 가져와 새 레코드에 특정 ID를 지정하거나 기존 레코드를 업데이트할 수도 있습니다.
<img src="/images/user-guide/fields/all-field-types.png" style={{width:'100%'}} />
## 데이터 형식 요구 사항
<Note>**일부 필드는 특별한 구문이 있습니다.** 가져오기를 준비하기 전에 샘플 파일을 다운로드하여 각 필드 유형에 필요한 구문을 확인하는 것을 권장합니다.</Note>
### 주소 필드
Address는 여러 열로 구성된 중첩 필드입니다. 일부는 비워 둘 수 있습니다.
* **Address / Address 1**: 주소 1행
* **Address / Address 2**: 주소 2행
* **Address / City**: 도시 이름
* **Address / State**: 주 또는 도
* **Address / Country**: 국가 이름
* **Address / Post Code**: 우편번호/ZIP 코드
### 배열 필드
다음 형식을 사용하세요:
```
["value1","value2"]
```
### 부울 필드
`TRUE` 또는 `FALSE`(대문자) - `true`나 `false`는 사용하지 마세요
### 통화 필드
통화는 두 개의 열이 있는 중첩 필드이며, **두 열 모두** 채워야 합니다:
* **Amount / Amount**: 숫자 값(예: `1234.56`)
* **Amount / Currency**: 통화 코드(예: `USD`, `EUR`)
### 날짜 필드
지원되는 형식:
* `YYYY-MM-DD`(권장)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
* ISO 8601 형식
### 도메인 필드
* 중복 생성을 방지하려면 `https://domain.com` 형식 사용을 권장합니다. 이 형식은 메일박스 및 캘린더 동기화로 생성되는 Companies 객체에 사용됩니다.
* `Domain Label`과 `Domain URL`을 모두 채울 수 있습니다. 모범 사례는 라벨에는 `domain.com`, URL에는 `https://domain.com`을 입력하는 것입니다.
* 도메인은 Companies 객체 내에서 고유해야 합니다
* **가져올 파일 내에서도 도메인은 고유해야 합니다**
### 이메일 필드
* 유효한 이메일 형식이어야 합니다
* 이메일은 People 객체 내에서 고유해야 합니다
* **가져올 파일 내에서도 이메일은 고유해야 합니다**
* 추가 이메일의 경우: 기본 이메일은 **Emails / Primary Email**을 사용하고, **Emails / Additional Emails**에는 다음 형식을 사용하세요:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### ID 필드
가져오기 중 `id`를 지정하는 것은 선택 사항입니다. 제공하지 않으면 Twenty가 ID를 자동으로 생성합니다.
`id` 열을 매핑하는 사용 사례:
* **특정 ID 설정**: 새로 생성될 레코드에 사용할 UUID를 선택
* **기존 레코드 업데이트**: 중복 생성 대신 기존 레코드와 일치시켜 업데이트 이 경우 다른 고유 필드는 매핑하지 않는 것을 권장합니다. 고유 필드를 하나만 매핑하면 가져오기가 더 원활합니다.
<Note>`id`를 제공하는 경우 UUID 형식이어야 합니다(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
### JSON 필드
유효한 JSON 형식을 사용하세요:
```
{"key":"value","key2":"value2"}
```
### 링크 필드
도메인 필드와 유사합니다:
* 라벨과 URL 두 열을 모두 채우세요: **Links / Link URL** 및 **Links / Link Label**
* 전체 URL 형식을 사용하세요: `https://example.com`
* 보조 링크의 경우 **Links / Secondary Links** 열을 사용하고 다음 형식을 사용하세요:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### 다중 선택 필드
표시 라벨이 아니라 **API 이름**을 다음 형식으로 사용하세요:
```
["VALUE1","VALUE2"]
```
API 이름을 찾는 위치는 [여기](#finding-api-names-for-select-fields)를 참고하세요.
<Note>새 선택 옵션은 가져오기로 자동 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가해야 합니다.</Note>
<Warning>
**가져오기는 추가하지 않고 덮어씁니다.**
레코드에 이미 `VALUE2`와 `VALUE3`가 선택되어 있고 `["VALUE1"]`을 가져오면, 가져온 후 해당 레코드에는 `VALUE1`만 남습니다. 이전 선택 항목은 병합되지 않고 대체됩니다.
</Warning>
### 숫자 필드
* 숫자만 입력
* 소수점은 점을 사용합니다: `1234.56`
* 천 단위 구분 기호 사용 금지
### 전화 필드
전화는 여러 열로 구성된 중첩 필드이며 **반드시 채워야 합니다**
* **Phones / Primary Phone Number**: 전화번호(예: `4159095555`)
* **Phones / Primary Phone Country Code**: 국가 코드(예: `US`)
* **Phones / Primary Phone Calling Code**: 전화 걸기 코드(예: `+1`)
### 평점 필드
API 이름 형식을 사용하세요: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
### 관계 필드
전용 문서를 참고하세요: [객체 간 관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
### 선택 필드
표시 라벨이 아니라 옵션의 **API 이름**을 사용하세요:
```
VALUE1
```
API 이름을 찾는 위치는 [여기](#finding-api-names-for-select-fields)를 참고하세요.
<Note>새 선택 옵션은 가져오기로 자동 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가해야 합니다.</Note>
### 텍스트 필드
* 특별한 형식 지정은 필요하지 않습니다
* 앞뒤 공백은 제거됩니다
## API 이름 찾기
사전 정의된 옵션이 있는 Select, Multi-Select, Array 필드의 경우 표시 레이블이 아니라 반드시 **API 이름**을 사용해야 합니다.
### API 이름을 찾는 방법
1. **설정 → 데이터 모델**로 이동
2. 객체와 필드를 선택하세요
3. **고급 모드**를 활성화하세요(설정 페이지 오른쪽 하단의 토글)
4. 각 옵션의 API 이름을 확인하세요
<VimeoEmbed videoId="1144910809" title="동영상 시연" />

View File

@@ -0,0 +1,48 @@
---
title: 지원되는 파일 형식
description: Twenty에서 데이터 가져오기에 지원되는 파일 형식입니다.
---
## 지원되는 형식
Twenty는 가져오기를 위해 세 가지 파일 형식을 지원합니다:
| 형식 | 확장자 | 노트 |
| -------------- | ----- | -------------- |
| **CSV** | .csv | 권장, 가장 호환성이 높음 |
| **Excel** | .xlsx | 최신 Excel 형식 |
| **Excel(레거시)** | .xls | 이전 Excel 형식 |
## 파일 요구 사항
| 요구 사항 | 값 |
| ---------- | ------------------------- |
| **인코딩** | UTF-8 권장 |
| **레코드 제한** | 파일당 10,000개 레코드 |
| **구조** | 첫 번째 행에는 열 머리글이 포함되어야 합니다 |
| **내용** | 파일당 개체 유형 1개 |
## CSV 모범 사례
* **구분 기호**: 쉼표(`,`) 또는 세미콜론(`;`)을 사용하세요
* **텍스트 한정 기호**: 쉼표가 포함된 텍스트에는 큰따옴표(`"`)를 사용하세요
* **줄 바꿈**: Windows(CRLF) 또는 Unix(LF) 모두 지원
* **빈 값**: 셀을 비워 두고, "NULL"이나 "N/A"는 사용하지 마세요
## Excel 모범 사례
Excel에서 내보낼 때:
* 수식을 제거하세요(값만 내보내기)
* 끝부분의 빈 행을 삭제하세요
* 병합된 셀이 없도록 하세요
* 첫 번째 시트만 사용하세요
## 대용량 데이터셋
레코드가 10,000개를 초과하는 데이터셋의 경우:
* 여러 파일로 분할하세요
* 또는 레코드 수에 제한이 없는 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요
<Note>매우 큰 마이그레이션(레코드 100,000개 이상)에는 CSV 가져오기보다 API가 훨씬 더 빠르고 신뢰성이 높습니다.</Note>

View File

@@ -0,0 +1,148 @@
---
title: 객체 간 관계 가져오기
description: CSV를 통해 레코드 간 관계를 가져옵니다.
---
## 개요
Twenty는 CSV 가져오기 시 객체 간 관계 가져오기를 지원합니다. 이를 통해 데이터 마이그레이션의 일부로 레코드를 연결할 수 있습니다(예: 사람을 회사에 연결).
<Note>**현재 가져오기에서 지원됨**: 각 측이 단일 객체 유형을 가리키는 일대다 관계(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다.</Note>
## Twenty에서 관계가 작동하는 방식
### 일대다 / 다대일
Twenty는 하나의 레코드가 여러 다른 레코드에 연결되는 표준 관계를 지원합니다:
* **하나의 회사 → 여러 사람**: 한 회사에는 여러 직원이 있을 수 있지만, 각 사람은 하나의 회사에 속합니다
* **하나의 회사 → 여러 기회**: 한 회사에는 여러 거래가 있을 수 있지만, 각 기회는 하나의 회사에 속합니다
### 여러 객체 유형을 가리킬 수 있는 관계
일부 관계는 서로 다른 유형의 객체에 연결될 수 있습니다. 이는 두 가지 방식으로 작동합니다:
**패턴 1: 서로 다른 객체 유형의 많은 레코드가 각각 하나의 레코드에 연결**
여러 개의 노트 또는 작업을 한 번에 여러 객체 유형에 각각 연결할 수 있습니다:
* **노트**는 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다
* **작업**은 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다
여기서 노트/작업은 "many" 쪽에 있습니다. 각각은 객체 유형당 하나의 레코드에 연결됩니다.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
**패턴 2: 하나의 레코드가 서로 다른 객체 유형의 많은 레코드로부터 연결을 받는 경우**
프로젝트는 서로 다른 객체 유형의 여러 레코드로부터 연결을 받을 수 있습니다:
* **프로젝트**에는 많은 사람이 연결될 수 있고, 많은 회사가 연결될 수 있으며, 많은 노트가 첨부될 수 있습니다
여기서 프로젝트는 "one" 쪽에 있습니다. 서로 다른 객체의 여러 레코드가 모두 동일한 프로젝트에 연결될 수 있습니다.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**가져오기/내보내기 제한사항**: 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 CSV 가져오기나 내보내기에서 **아직 지원되지 않습니다**.
* **가져오기**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다
* **내보내기**: 여러 객체 유형을 가리키는 관계의 열은 현재 비워 둡니다
이는 로드맵에 포함되어 있습니다.
</Warning>
### 현재 지원되지 않는 사항
**다대다 관계**는 아직 제공되지 않습니다. 예를 들어, 현재 다음과 같은 관계는 만들 수 없습니다:
* 여러 사람이 여러 프로젝트에 연결되는 경우
<Note>다대다 관계는 2026년 하반기에 제공될 예정입니다.</Note>
## 가져오기 중 레코드 연결
<Note>**알림**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 아직 지원되지 않습니다.</Note>
### 1단계: "One"과 "Many" 쪽 식별하기
먼저, 어떤 객체가 관계의 "one" 쪽이고 어떤 객체가 "many" 쪽인지 결정하세요.
**예시**:
* **회사**는 "one" 쪽입니다(한 회사에는 많은 직원이 있음)
* **사람**은 "many" 쪽입니다(각 사람은 하나의 회사에 속함)
### 2단계: "One" 쪽 레코드가 존재하는지 확인
"many" 쪽을 가져오기 전에, "one" 쪽 레코드는 이미 Twenty에 존재해야 합니다.
* "one" 쪽 레코드를 먼저 가져오거나 생성하세요(예: 회사)
* 해당 고유 식별자를 확인하세요. 이는 다음 중 하나일 수 있습니다:
* `id`(Twenty의 UUID)
* 고유로 설정된 필드(예: 회사의 `domain`, 또는 이전 시스템의 외부 ID)
<Warning>존재하지 않는 레코드를 참조하면 가져오기는 실패합니다.</Warning>
### 3단계: CSV 파일 준비
"many" 쪽 CSV 파일에 "one" 쪽 레코드를 참조하는 열을 추가하세요.
**예시**: 회사에 연결되는 사람 CSV 파일의 경우:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**중요**:
* 값은 회사 레코드의 고유 필드와 정확히 일치해야 합니다
* 도메인의 경우 도메인 라벨이 아니라 **도메인 URL**(예: `https://acme.com`)을 사용하세요
* 관계당 고유 식별자는 오직 하나만 매핑하세요: 이렇게 하면 가져오기가 원활해집니다
### 4단계: 관계 필드가 존재하는지 확인
파일을 업로드하기 전에 객체 간에 관계 필드가 존재하는지 확인하세요.
존재하지 않는 경우:
1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요(예: 사람)
3. 대상 객체(예: 회사)를 가리키는 관계 필드를 생성하세요
### 5단계: 업로드하고 관계 매핑하기
1. 가져오기 UI를 통해 CSV 파일을 업로드하세요
2. 필드 매핑 단계에서 관계 열을 찾으세요(예: `companyDomain`)
3. 이를 관계 필드에 매핑하세요(예: 회사)
4. Twenty가 각 레코드를 일치하는 상위에 자동으로 연결합니다
### 관계를 위한 사용 가능한 고유 필드
| 객체 | 사용 가능한 고유 필드 |
| --------------------- | -------------------------------- |
| **회사** | `id`, `domain`, 임의의 사용자 지정 고유 필드 |
| **사람** | `id`, `email`, 임의의 사용자 지정 고유 필드 |
| **워크스페이스 구성원** | `id`, `email`(이름 아님) |
| **기타 표준 및 사용자 지정 객체** | `id`, 고유로 표시된 모든 필드 |
<Note>**워크스페이스 구성원에 연결**: 관계가 워크스페이스 구성원(Twenty에 로그인하는 팀)을 가리키는 경우, 이름이 아니라 **이메일 주소**로 참조하세요.</Note>
<Note>스프레드시트에서 읽기 쉽고 관리가 간편하므로, 회사에는 `domain`, 사람에는 `email` 사용을 권장합니다.</Note>
<Note>**알림**: 소프트 삭제된 레코드(Command Menu → See deleted records에서 확인 가능)도 고유성 기준에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드가 복원됩니다. 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요.</Note>
## 가져오기 순서 규칙
<Warning>
**항상 "one" 쪽을 먼저 가져오세요!**
1. **회사** 먼저(종속성 없음)
2. **사람** 두 번째(회사에 연결됨)
3. **기회** 세 번째(회사/사람에 연결됨)
4. **사용자 지정 객체**는 종속성에 따라 순서대로
참조하려면 상위 레코드가 먼저 존재해야 합니다.
</Warning>

View File

@@ -0,0 +1,72 @@
---
title: 고유성 제약 조건
description: Twenty가 가져오기 중 데이터 고유성을 강제하는 방법.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 개요
Twenty는 중복 레코드를 방지하고 데이터 무결성을 보장하기 위해 일부 필드에 고유성을 강제합니다. 이러한 제약 조건을 이해하는 것은 성공적인 가져오기에 필수적입니다.
## 기본 고유 필드
| 객체 | 고유 필드 |
| ------------- | -------------- |
| **사람** | `id`, `email` |
| **회사** | `id`, `domain` |
| **사용자 지정 개체** | `id`만 (기본값) |
<Note>`id` 필드는 Twenty의 내부 식별자로, 각 레코드에 대해 자동 생성됩니다. UUID 형식을 사용합니다(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
## 사용자 지정 고유 필드
**설정 → 데이터 모델**에서 추가 고유 필드를 정의할 수 있습니다:
1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요
3. 필드를 클릭하세요
4. 필드 설정에서 **Unique**를 활성화하세요
### 사용자 지정 고유 필드의 활용 사례
* **외부 ID**: 다른 시스템의 ID 저장(Salesforce ID, HubSpot ID)
* **비즈니스 식별자**: 사번, 고객 코드
* **대체 연락처 정보**: LinkedIn 프로필, 전화번호
<Note>필드 이름 `id`는 Twenty의 내부 ID로 예약되어 있습니다. 외부 식별자에는 `externalId` 또는 `legacyId`와 같은 다른 이름을 사용하세요.</Note>
## 가져오기 동작 방식
### 새 레코드 생성
고유 필드 값이 존재하지 않으면 새 레코드가 생성됩니다.
### 기존 레코드 업데이트
고유 필드 값이 기존 레코드와 일치하면 해당 레코드는 새 데이터로 **업데이트**됩니다.
<Warning>기존 레코드를 **업데이트**하려면 **하나의 고유 필드만** 매칭하는 것을 권장합니다.</Warning>
### 소프트 삭제된 레코드
<Warning>
**삭제된 레코드도 고유성에 포함됩니다.**
소프트 삭제된 레코드는(Command Menu → See deleted records에서 확인 가능) 고유성 검사에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드는 새 데이터로 **복원**됩니다.
</Warning>
## 가져오기 중 중복 감지
유효성 검사 단계에서:
* 파일 내 중복 항목은 노란색으로 강조 표시됩니다
* 가져오기를 시작하기 전에 UI에서 중복 행을 편집하거나 제거할 수 있습니다
<VimeoEmbed videoId="1145246326" title="동영상 시연" />
## 모범 사례
1. 가져오기 전에 파일에서 **중복 항목을 제거**하세요
2. 가져오기 전에 Twenty에서 **기존 레코드가 있는지 확인**하세요
3. 다른 시스템에서 마이그레이션할 때 **외부 ID를 사용**하세요
4. 기존 레코드를 업데이트하려면 **고유 필드를 포함**하세요

View File

@@ -0,0 +1,32 @@
---
title: 내보내기 FAQ
description: 데이터 내보내기에 대한 자주 묻는 질문입니다.
---
<AccordionGroup>
<Accordion title="취소 전에 워크스페이스의 모든 데이터를 내보낼 수 있나요? 사용자 정의 오브젝트, 사용자 정의 필드, 관계, 메모, 작업, 기회, 첨부 파일, 워크플로, 권한, 감사 내역을 모두 포함해서요.">
워크스페이스 데이터는 일부 예외를 제외하고 취소 전에 내보낼 수 있습니다. 대시보드, 워크플로, 권한은 수동으로 이전해야 하며, 감사 로그는 이전할 수 없습니다.
</Accordion>
<Accordion title="현재 내보내거나 마이그레이션할 수 없는 요소는 무엇인가요?">
대부분의 요소는 일부 예외를 제외하고 내보내거나 마이그레이션할 수 있습니다:
* 워크플로, 대시보드 및 모든 설정(API 키, 웹훅, 감사 로그, 사용자 설정 등) 수동으로 마이그레이션해야 합니다.
* 앱에서 생성한 오브젝트와 필드는 해당 앱을 다른 워크스페이스에 설치하여 마이그레이션할 수 있습니다. 수동으로 마이그레이션해서는 안 됩니다.
* 워크플로 버전 및 워크플로 실행과 같은 일부 레코드는 전혀 이전할 수 없으며 손실될 것으로 예상됩니다.
* 메시지 및 캘린더 관련 오브젝트와 같은 일부 오브젝트는 계정이 연결될 때 생성되고 주기적으로 동기화되므로 내보내지 말아야 합니다. 계정을 연결하면 다시 동기화됩니다(계정에 계속 액세스할 수 있는 경우에 한하며, 퇴사한 팀 구성원의 계정인 경우 해당 메시지는 반드시 내보내야 하며, 그렇지 않으면 손실됩니다).
</Accordion>
<Accordion title="클라우드에서 셀프 호스팅으로 마이그레이션하기 위한 공식 절차나 마이그레이션 지원 서비스가 있나요?">
현재로서는 클라우드에서 셀프 호스팅으로 마이그레이션하기 위한 공식 절차는 없습니다. 일반적인 절차는 다음과 같습니다:
* 먼저 앱을 설치하여 앱 소유 오브젝트와 필드를 추가합니다.
* 사용자가 추가한 사용자 정의 오브젝트와 필드를 복제합니다.
* API 키나 AI 도구를 사용하는 스크립트를 활용하여 한 워크스페이스의 모든 데이터를 다른 워크스페이스로 마이그레이션합니다.
* 모든 이전 불가능한 오브젝트는 수동으로 마이그레이션해야 합니다.
다음 사항을 유의해 주세요:
* 요청/분 제한에 도달하기 전까지 Pro 플랜에서는 분당 최대 50개, Organization 플랜에서는 분당 최대 100개의 요청을 보낼 수 있습니다.
* 각 API 요청에는 최대 200개의 레코드를 포함할 수 있습니다.
* Created by, Timeline activities, Updated by와 같은 필드의 일부 데이터는 가져오기 중에 손실되며 시스템에 의해 덮어써집니다.
</Accordion>
<Accordion title="내보낸 파일은 개방형이며 문서화된 형식으로 제공되나요?">
UI에서 내보낸 파일은 Excel 형식이며, 모든 API 요청은 JSON 형식으로 저장할 수 있습니다.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,209 @@
---
title: 데이터 내보내기
description: Twenty에서 데이터를 내보내는 포괄적인 단계별 가이드.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 개요
백업, 보고, 또는 마이그레이션을 위해 워크스페이스 데이터를 CSV로 내보내세요.
**사용 사례:**
* **정기 백업** — 데이터 사본을 보관하세요
* **외부 보고** — Excel, Google Sheets 또는 BI 도구에서 데이터를 분석하세요
* **마이그레이션** — 데이터를 다른 시스템으로 이동하세요
* **대량 업데이트** — 내보내고, 편집한 후, 다시 가져와 레코드를 업데이트하세요
## 알아두어야 할 사항
### 내보내기 제한
* 내보내기 1회당 **최대 20,000개 레코드**
* **표시된 열**만 내보내집니다
* **필터링된 레코드**만 내보내집니다(현재 보기 기준)
<Note>더 큰 내보내기(20,000개 이상의 레코드)에는 필터를 사용해 배치로 내보내거나 [API](/l/ko/developers/extend/api)를 사용하세요.</Note>
### 권한
데이터를 내보내려면 **"Export CSV"** 권한이 필요합니다. 이 옵션이 없다면 워크스페이스 관리자에게 문의하세요.
## 1단계: 객체로 이동
내보내려는 객체로 이동하세요:
* **People** — 연락처
* **Companies** — 조직
* **Opportunities** — 거래
* **사용자 지정 객체** — 사용자가 생성한 모든 객체
## 2단계: 보기 구성
**중요:** 내보내기에는 현재 보기에서 보이는 내용만 포함됩니다.
### 열 추가/제거
1. **옵션 → 필드**를 클릭합니다(또는 열 끝의 **+**).
2. 내보내려는 필드를 선택하세요
3. 불필요한 필드의 선택을 해제하세요
### 레코드 필터링(선택 사항)
일부 데이터만 필요하다면:
1. **필터**를 클릭합니다
2. 필터 조건을 추가하세요(예: "Created date > January 1, 2024")
3. 조건과 일치하는 레코드만 내보내집니다
### 레코드 정렬(선택 사항)
1. 정렬하려면 열 헤더를 클릭하세요
2. 내보내기는 정렬 순서를 따릅니다
<Note>**내보내기 전용 보기를 만드세요.** 내보내기에 맞게 구성한 보기를 저장해 매번 다시 구성할 필요가 없도록 하세요.</Note>
## 3단계: 데이터 내보내기
1. 테이블 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
2. **Export view**를 선택하세요
3. CSV 파일을 저장할 위치를 선택하세요
4. 다운로드가 완료될 때까지 기다리세요
## 내보내지는 내용
| 포함됨 | 포함되지 않음 |
| --------------- | ----------- |
| 모든 표시된 열 | 숨김 열 |
| 현재 필터와 일치하는 레코드 | 필터로 제외된 레코드 |
| 사용자 지정 필드 값 | 보기에 없는 필드 |
| 레코드 ID | 파일 첨부 |
| 관계 ID | 이미지 |
### 관계 필드
관계 ID는 관계의 **"many" 측**에서만 내보내집니다:
* **People 내보내기**에는 `companyId` 열이 포함됩니다(People → Company 관계)
* **Companies 내보내기**에는 `peopleIds`가 포함되지 않습니다(Companies는 "one" 측입니다)
즉, People 내보내기를 사용해 다시 가져오면서 Company 연결을 유지할 수 있지만, 관계를 다시 만들려면 Companies 이후에 People을 다시 가져와야 합니다.
## 용도별 내보내기
### 백업용
1. **모든 필드**가 보이도록 보기를 만들세요
2. 모든 레코드를 포함하려면 모든 필터를 제거하세요
3. 각 객체 유형을 별도로 내보내세요
4. 내보낸 파일을 안전한 위치에 보관하세요
5. 반복 알림을 설정하세요(매주/매월)
### 외부 보고용
1. 분석에 필요한 필드만 포함하세요
2. 관련 데이터에 집중할 수 있도록 필터를 적용하세요
3. 분석할 필드로 정렬하는 것을 고려하세요
### 대량 업데이트용
1. 업데이트하려는 레코드를 내보내세요
2. 고유 식별자(`email`, `domain` 또는 `id`)를 포함하세요
3. 내보낸 파일을 편집하세요
4. 다시 가져와 레코드를 업데이트하세요
참고: [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)
### 마이그레이션용
다른 시스템으로 마이그레이션하기 위해 내보내는 경우:
1. **각 객체를 개별적으로 내보내세요** — People, Companies, Opportunities 등
2. **ID 필드를 포함하세요** — 관계를 유지하는 데 도움이 됩니다
3. **필드 매핑을 문서화하세요** — Twenty의 필드가 대상 시스템에 어떻게 매핑되는지 기록하세요
## 대용량 데이터셋 처리(20,000개 이상 레코드)
내보내기 한도는 20,000개 레코드입니다. 더 큰 데이터셋의 경우:
### 옵션 1: 배치로 내보내기
1. 필터를 추가하세요(예: "Created date" 범위)
2. 첫 번째 배치를 내보내세요
3. 필터를 변경하세요
4. 다음 배치를 내보내세요
5. 스프레드시트에서 파일을 결합하세요
**배치용 예시 필터:**
* 날짜 범위별(1월, 2월, 3월...)
* 소유자별(팀원 A, 팀원 B...)
* 상태별(활성, 비활성...)
### 옵션 2: API 사용
API에는 레코드 수 한도가 없습니다:
1. API 키를 **설정 → 개발자**에서 발급받으세요
2. GraphQL API를 사용해 레코드를 쿼리하세요
3. 애플리케이션에서 결과를 처리하세요
참고: [API 문서](/l/ko/developers/extend/api)
## 팁 및 모범 사례
### 내보내기용 보기 만들기
내보내기에 맞게 구성한 보기를 저장하세요:
1. 열과 필터를 구성하세요
2. **보기 옵션** → **새 보기로 저장**을 클릭하세요
3. "Export - [Purpose]"로 이름을 지정하세요
### 내보낸 파일 보호
내보낸 파일에는 민감한 데이터가 포함될 수 있습니다:
* 안전한 위치에 보관하세요
* 더 이상 필요하지 않은 내보낸 파일은 삭제하세요
* 내보낸 파일을 공유할 때 주의하세요
### 내보내기 전 확인 사항
<Check>올바른 열이 표시되어 있습니다</Check>
<Check>필터가 올바르게 설정되어 있습니다(전체 내보내기의 경우 제거)</Check>
<Check>내보내기 권한이 있습니다</Check>
## FAQ
<AccordionGroup>
<Accordion title="내보낸 파일에 일부 열이 없는 이유는 무엇인가요?">
표시된 열만 내보내집니다. 내보내기 전에 **옵션 → 필드**에서 필요한 열을 추가하세요.
</Accordion>
<Accordion title="내보낸 파일에 모든 레코드가 포함되지 않은 이유는 무엇인가요?">
필터를 확인하세요. 내보내기에는 현재 보기의 필터와 일치하는 레코드만 포함됩니다. 모든 레코드를 내보내려면 필터를 제거하세요.
</Accordion>
<Accordion title="20,000개 이상의 레코드를 내보낼 수 있나요?">
단일 내보내기로는 불가능합니다. 필터를 사용해 배치로 내보내거나, 더 큰 데이터셋에는 API를 사용하세요.
</Accordion>
<Accordion title="내보낸 파일의 형식은 무엇인가요?">
CSV(쉼표로 구분된 값). Excel, Google Sheets 또는 어떤 스프레드시트 애플리케이션에서도 열 수 있습니다.
</Accordion>
<Accordion title="관계 ID가 포함되나요?">
예. 다만 관계의 "many" 측에서만 포함됩니다. 예를 들어 People 내보내기에는 `companyId`가 포함되지만, Companies 내보내기에는 people ID가 포함되지 않습니다.
</Accordion>
<Accordion title="내보내기를 자동화할 수 있나요?">
UI만으로는 불가능합니다. API를 사용해 자동화된 내보내기 워크플로우를 구축하세요.
</Accordion>
</AccordionGroup>
## 다음 단계
* [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) — 내보낸 파일을 편집한 뒤 다시 가져오세요
* [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api) — 대용량 데이터셋용
* [API 문서](/l/ko/developers/extend/api) — 맞춤 내보내기 워크플로우를 구축하세요

View File

@@ -0,0 +1,430 @@
---
title: 가져오기 오류 해결
description: CSV 가져오기 오류를 해결하기 위한 종합적인 문제 해결 가이드.
---
## 개요
가져오기가 안 되나요? 이 가이드는 일반적인 가져오기 오류를 단계별로 식별하고 해결하도록 도와줍니다.
## 가져오기 유효성 검사가 작동하는 방식
파일을 업로드하고 열을 매핑한 후, Twenty가 데이터에 대해 유효성 검사를 수행합니다:
1. **유효성 검사를 실행** — Twenty가 각 행에서 오류를 확인합니다
2. **오류가 강조 표시됨** — 문제가 있는 행은 **노란색**으로 표시됩니다
3. **바로 수정 가능** — 가져오기 UI에서 셀을 직접 편집합니다
4. **또는 행을 제거** — 문제가 있는 레코드를 완전히 건너뜁니다
<Note>**UI에서 오류를 수정하세요.** 스프레드시트로 돌아갈 필요가 없습니다. 가져오는 동안 셀을 직접 편집하여 시간을 절약하세요.</Note>
## 단계별 문제 해결
### 1단계: 오류 유형 식별
강조 표시된 행을 클릭하여 특정 오류 메시지를 확인하세요. 일반적인 오류 유형:
| 오류 메시지 | 의미 |
| ---------------------------------------------------------------- | --------------------------------- |
| 중복 값이 노란색으로 강조 표시됨 | 값이 Twenty에 이미 존재하거나 파일에 두 번 나타납니다 |
| `{field} is not a valid {type}` (노란색 셀에 커서를 올리세요) | 데이터가 예상 형식과 일치하지 않음 |
| 필수 필드가 강조 표시됨 | 필수 필드가 비어 있음 |
| `Can't connect to {object}. No unique record found...` (가져오기 실패) | 참조된 레코드가 존재하지 않음 |
| `Too many records. Up to 10000 allowed` (업로드 차단됨) | 파일의 레코드가 10,000개를 초과함 |
### 2단계: 오류 수정
오류 유형별로 아래의 구체적인 지침을 따르세요.
---
## 오류: 중복 값
### 볼 수 있는 내용
가져오기를 시작하기 전에 가져오기 UI에서 중복 값이 있는 행이 **노란색으로 강조 표시**됩니다.
### 의미
고유 필드(이메일, 도메인)가 다음에 해당함:
* Twenty에 이미 존재함
* 파일에 두 번 나타남
### 해결 방법
**옵션 1: 중복 값을 편집**
1. 오류가 있는 셀을 클릭
2. 고유 값으로 변경
3. 가져오기를 계속
**옵션 2: 중복 행 제거**
1. 행 옆의 X를 클릭
2. 해당 행은 가져오기 중에 건너뜁니다
**옵션 3: Twenty로 기존 레코드를 업데이트**
1. 파일에 고유 식별자(`email`, `domain`, 또는 `id`)가 포함되어 있는지 확인하세요
2. 고유 식별자 필드를 매핑하세요
3. Twenty가 중복을 생성하는 대신 기존 레코드를 업데이트합니다
<Note>
**고유 필드도 업데이트할 수 있습니다.**
* `id`는 유지하고 `email`만 변경하면 → 이메일이 업데이트됩니다
* `email`은 유지하고 `id`만 변경하면 → id가 업데이트됩니다
하나의 고유 식별자만 일치해도 Twenty가 레코드를 업데이트합니다.
</Note>
### 이 오류를 방지하는 방법
가져오기 전:
1. 스프레드시트를 고유 필드로 정렬
2. 중복 행 제거
3. 레코드가 Twenty에 이미 존재하는지 확인
<Warning>
**소프트 삭제된 레코드도 고유성에 포함됩니다.**
Command 메뉴 → 삭제된 레코드 보기를 확인하세요. 그곳의 레코드도 여전히 고유성을 강제합니다. 완전히 삭제하거나 복원한 뒤 업데이트하세요.
</Warning>
자세한 내용: [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
---
## 오류: 잘못된 형식
### 볼 수 있는 내용
셀 값이 노란색으로 강조 표시됩니다. 해당 부분에 커서를 올리면 오류 메시지가 표시됩니다:
```
{field name} is not a valid {field type}
```
### 의미
데이터가 해당 필드 유형의 예상 형식과 일치하지 않습니다.
### 해결 방법 — 필드 유형별
#### 이메일
**문제:** 잘못된 이메일 형식
**해결:** `name@domain.com` 형식을 사용하세요
```
❌ john.smith@
❌ john smith@acme.com
✓ john.smith@acme.com
```
#### 도메인
**문제:** 일관되지 않은 형식은 중복을 유발할 수 있음
**해결:** `https://domain.com` 형식을 사용하세요(권장)
```
⚠️ acme.com (valid, but not recommended)
⚠️ www.acme.com (valid, but not recommended)
✅ https://acme.com (recommended)
```
<Note>모든 형식이 유효하지만 `https://domain.com`은 이메일/캘린더 동기화에서 사용하는 형식과 일치하므로 권장됩니다. 다른 형식을 사용하면 회사가 중복으로 생성될 수 있습니다.</Note>
#### 날짜
**문제:** 인식되지 않는 날짜 형식
**해결:** 파일 전체에서 `YYYY-MM-DD` 형식을 일관되게 사용하세요
```
✓ 2024-03-15 (YYYY-MM-DD)
❌ 03/15/2024 (MM/DD/YYYY)
❌ 15/03/2024 (DD/MM/YYYY)
```
#### 전화
**문제:** 필수 열 누락
**해결:** 모든 전화 열을 포함하세요
| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
#### 부울
**문제:** 잘못된 불리언 값
**해결:** 대문자 `TRUE` 또는 `FALSE`를 사용하세요
```
❌ true
❌ yes
❌ 1
✓ TRUE
✓ FALSE
```
#### 선택 / 다중 선택
**문제:** 값이 기존 옵션과 일치하지 않음
**해결:** 표시 라벨이 아니라 **API 이름**을 사용하세요
API 이름을 찾는 방법:
1. **설정 → 데이터 모델**로 이동
2. 객체와 필드를 선택하세요
3. **고급 모드**를 활성화하세요(오른쪽 하단 토글)
4. API 이름을 사용하세요(예: `OPTION_1`, "Option 1" 아님)
```
❌ High Priority
✓ HIGH_PRIORITY
```
#### 통화
**문제:** 금액 또는 통화 코드 누락
**해결:** 두 열 모두 채우세요
| 열 | 예시 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
#### 숫자
**문제:** 숫자가 아닌 문자 포함
**해결:** 숫자만 사용하고 소수점은 점(.)을 사용하세요
```
❌ $1,234.56
❌ 1,234.56
✓ 1234.56
```
전체 형식 참고: [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)
---
## 오류: 필수 필드 누락
### 볼 수 있는 내용
해당 행이 노란색으로 강조 표시되고 필수 필드 셀이 표시됩니다.
### 의미
이 행의 필수 필드가 비어 있습니다.
### 해결 방법
**옵션 1: 값 입력**
1. 빈 셀을 클릭
2. 값 입력
3. 가져오기를 계속
**옵션 2: 행 제거**
1. 데이터가 없다면 X를 클릭해 해당 행을 건너뛰세요
### 이 오류를 방지하는 방법
가져오기 전에 필수 필드를 확인하세요:
1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요
3. 어떤 필드가 필수로 표시되어 있는지 확인하세요
---
## 오류: 관계를 찾을 수 없음
### 볼 수 있는 내용
이 오류는 **가져오기가 시작된 후** 나타나며, 다음과 같은 메시지와 함께 가져오기가 실패합니다:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
이는 해당 식별자를 가진 Company가 Twenty에 없다는 의미입니다.
<Note>다른 오류와 달리, 이 오류는 데이터 검토 단계에서 감지되지 않습니다. 가져오기가 시작된 뒤 누락된 관계를 만나면 실패합니다.</Note>
### 의미
Twenty에 존재하지 않는 레코드에 연결하려고 하고 있습니다.
### 해결 방법
**옵션 1: 상위 레코드를 먼저 가져오기**
1. 현재 가져오기를 취소
2. 상위 레코드(예: Companies)를 가져오기
3. 그런 다음 하위 레코드(예: People)를 가져오기
**옵션 2: 참조 값 수정**
1. 파일의 참조 값을 확인
2. 기존 레코드와 정확히 일치하는지 확인
3. 형식 확인: 도메인은 `https://domain.com`이어야 합니다
**옵션 3: 관계 제거**
1. 관계 없이 가져오려면 셀을 비우세요
2. 관계를 나중에 수동으로 추가하세요
### 이 오류를 방지하는 방법
1. **올바른 순서로 가져오기:**
* 회사 먼저
* 연락처 두 번째(회사 참조 포함)
* 기회 세 번째
2. **참조 값을 확인하세요:**
* 정확한 식별자를 얻기 위해 상위 레코드를 내보내세요
* 도메인은 `https://domain.com` 형식을 사용하세요
* 오타 및 대소문자 구분 여부를 확인하세요
<Warning>
**존재하지 않는 레코드를 참조하면 가져오기는 실패합니다.**
항상 상위 객체를 먼저 가져오세요.
</Warning>
자세한 내용: [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
---
## 오류: 파일이 너무 큼
### 볼 수 있는 내용
이 오류는 **파일을 업로드할 때** 나타나며 — 업로드가 완전히 차단됩니다:
```
Too many records. Up to 10000 allowed
```
파일 크기를 줄이기 전에는 데이터 검토 단계로 진행할 수 없습니다.
### 의미
파일의 레코드가 10,000개를 초과합니다.
### 해결 방법
**옵션 1: 여러 파일로 분할**
1. 데이터를 10,000개 이하의 레코드로 구성된 파일로 나누세요
2. 각 파일을 개별적으로 가져오세요
3. 가져오기 순서를 유지(회사를 연락처보다 먼저)
**옵션 2: API 가져오기 사용**
매우 큰 데이터셋의 경우 레코드 제한이 없는 API를 사용하세요.
참고: [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)
---
## 오류: 필드를 인식할 수 없음
### 의미
필드가 Twenty에 존재하지 않기 때문에 파일의 열을 매핑할 수 없습니다.
### 해결 방법
1. **설정 → 데이터 모델**로 이동
2. 가져올 객체를 선택하세요
3. **+ 필드 추가**를 클릭하세요
4. 적절한 유형으로 커스텀 필드를 생성하세요
5. 파일을 다시 업로드하세요
<Note>CSV 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 모든 필드가 존재해야 합니다.</Note>
---
## 오류: 사용자 관계 비어 있음
### 의미
레코드를 사용자(소유자, 담당자)에게 할당하려고 하지만 관계가 매핑되지 않았습니다.
### 일반적인 원인
1. **사용자가 초대를 수락하지 않음** — 해당 사용자는 아직 Twenty에 존재하지 않음
2. **이전 시스템의 사용자 ID 사용** — Twenty는 다른 시스템의 ID를 매칭할 수 없음
3. **잘못된 이메일 형식** — 이메일이 사용자의 Twenty 계정과 일치하지 않음
### 해결 방법
1. 모든 사용자가 Twenty 워크스페이스 초대를 수락했는지 확인하세요
2. 사용자의 이름이나 이전 시스템 ID가 아닌 **이메일 주소**를 사용하세요
3. Twenty에 가입할 때 사용한 것과 동일한 이메일을 사용하세요
<Warning>
**가져오기를 진행하기 전에 사용자가 초대를 수락해야 합니다.**
사용자가 초대를 수락하지 않은 경우, 해당 사용자를 참조하는 레코드의 사용자 관계가 비어 있게 됩니다.
</Warning>
---
## 가져오기 전 체크리스트
가져오기 전에 다음을 확인하여 오류를 방지하세요:
### 파일 요구 사항
<Check>파일 형식이 CSV, XLSX 또는 XLS임</Check>
<Check>파일의 레코드가 10,000개 미만임</Check>
<Check>파일이 UTF-8 인코딩을 사용함</Check>
### 데이터 품질
<Check>중복 이메일 없음(연락처용)</Check>
<Check>중복 도메인 없음(회사용)</Check>
<Check>모든 날짜가 일관된 형식을 사용</Check>
<Check>모든 도메인이 `https://domain.com` 형식을 사용</Check>
### 필드 형식
<Check>불리언 필드는 `TRUE` 또는 `FALSE`(대문자) 사용</Check>
<Check>선택 필드는 표시 라벨이 아닌 API 이름 사용</Check>
<Check>전화 필드는 필요한 모든 열 포함</Check>
<Check>통화 필드는 Amount와 Currency Code 모두 포함</Check>
### 관계
<Check>상위 레코드를 하위 레코드보다 먼저 가져오기</Check>
<Check>관계 열이 기존 레코드를 참조</Check>
<Check>도메인 형식이 Twenty의 형식과 정확히 일치</Check>
### 데이터 모델
<Check>모든 커스텀 필드가 설정 → 데이터 모델에 존재</Check>
<Check>가져오기 전에 선택 옵션이 존재</Check>
---
## 아직도 문제가 있나요?
위의 해결책을 시도했다면:
1. **샘플 파일을 다운로드** — Twenty가 기대하는 정확한 형식을 확인하세요
2. **기존 레코드를 내보내기** — 파일을 정상 데이터와 비교하세요
3. **소량으로 테스트** — 먼저 5–10개의 행으로 시도하세요
4. **참고 문서를 확인하세요:**
* [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)
* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
* [관계 가져오기](/l/ko/user-guide/data-migration/capabilities/import-relations)
* [오류 처리](/l/ko/user-guide/data-migration/capabilities/error-handling)

View File

@@ -0,0 +1,201 @@
---
title: CSV로 회사 가져오기
description: Twenty로 회사를 가져오는 포괄적인 단계별 가이드.
---
## 개요
이 가이드는 회사를 Twenty로 가져오는 과정을 단계별로 안내합니다. **회사는 먼저 가져와야 합니다**. People과 Opportunities가 회사에 연결되기 때문입니다.
## 시작하기 전에
### 사전 준비 체크리스트
<Check>
파일이 CSV, XLSX 또는 XLS 형식임
</Check>
<Check>
파일의 레코드가 10,000개 미만임
</Check>
<Check>
파일에 중복된 도메인이 없음
</Check>
<Check>
모든 사용자 정의 필드가 **Settings → Data Model**에 존재함
</Check>
<Note>
10,000개 이상의 회사를 가져와야 하나요? 여러 파일로 분할하거나 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요.
</Note>
## 1단계: 회사 데이터 준비
### 필수 및 권장 필드
| 필드 | 필수? | 형식 | 노트 |
| ------------- | ----- | -------------------- | ------------------ |
| **Name** | 권장 | 텍스트 | 회사 표시 이름 |
| **도메인** | 권장 | `https://domain.com` | 고유 식별자 |
| **주소** | 선택 사항 | 여러 열 | 아래 참조 |
| **직원 수** | 선택 사항 | 숫자 | 직원 수 |
| **사용자 정의 필드** | 선택 사항 | 항목에 따라 다름 | Data Model에 존재해야 함 |
### 도메인 형식
<Warning>
**도메인에는 `https://domain.com` 형식을 사용하세요.**
이는 이메일/캘린더 동기화로 회사가 자동 생성될 때 사용하는 형식과 일치하여, 이후 중복을 방지합니다.
</Warning>
**도메인 열:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
### 주소 형식
주소는 여러 열로 구성된 중첩 필드입니다:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
### CSV 예시 구조
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
Acme Corp,https://acme.com,acme.com,San Francisco,USA,250
Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
<Note>
**전문가 팁:** 가져오기 중에 **Download sample file**을 클릭하여 Twenty가 기대하는 정확한 열 이름을 확인하세요.
</Note>
## 2단계: 가져오기 기능에 액세스
**옵션 1: Companies 보기에서**
1. 왼쪽 사이드바에서 **Companies**로 이동하세요
2. 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
3. **Import records**를 선택하세요
**옵션 2: 커맨드 메뉴 사용**
1. `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)를 누르세요
2. "import"를 입력하세요
3. **Import records**를 선택하세요
4. **Companies**를 선택하세요
## 3단계: 파일 업로드
1. **Select file**을 클릭하세요
2. CSV, XLSX 또는 XLS 파일을 선택하세요
3. Twenty가 파일을 분석할 때까지 기다리세요
## 4단계: 열 매핑
Twenty가 열을 필드에 자동으로 매칭하려고 시도합니다. 검토 및 조정:
1. **자동 매핑 확인** — 올바른지 확인하세요
2. **잘못된 매핑 수정** — 드롭다운을 클릭하여 올바른 필드를 선택하세요
3. **열 건너뛰기** — 가져오지 않을 열은 **Do not map**을 선택하세요
### 중요한 매핑 규칙
* **Domain**: **Domain / Domain URL**에 매핑하세요(Domain Label이 아님)
* **Address**: 각 부분을 해당 열(City, State 등)에 매핑하세요
* **선택 필드**: 값은 기존 옵션과 일치해야 합니다(또는 다음 단계에서 매핑하게 됩니다)
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
## 5단계: 선택 필드 값 매핑
선택 또는 다중 선택 필드가 있는 경우:
1. Twenty에서 사용자의 값을 기존 옵션과 나란히 표시합니다
2. 파일의 각 값을 Twenty 옵션과 매칭하세요
3. 필요하면 새 옵션을 만드세요
<Note>
선택 옵션은 표시 레이블이 아니라 **API 이름**을 사용합니다. API 이름을 보려면 **Settings → Data Model**에서 **Advanced mode**를 활성화하세요.
</Note>
## 6단계: 오류 검토 및 수정
가져오기를 완료하기 전에 Twenty가 데이터를 검증합니다:
1. **Next Steps**를 클릭하세요
2. 오류가 있는 행은 **노란색**으로 강조 표시됩니다
3. **오류를 직접 수정** — 셀을 클릭하고 값을 편집하세요
4. **문제가 있는 행 제거** — 해당 행을 건너뛰려면 X를 클릭하세요
### 일반적인 회사 가져오기 오류
| 오류 | 원인 | 해결책 |
| -------------- | ------------------- | --------------------------- |
| **중복 도메인** | 도메인이 Twenty에 이미 존재함 | 파일에서 제거하거나 기존 레코드를 업데이트하세요 |
| **잘못된 도메인 형식** | 잘못된 형식 | `https://domain.com`을 사용하세요 |
| **필수 필드 누락** | 필수 필드가 비어 있음 | 값을 입력하거나 해당 행을 제거하세요 |
## 7단계: 가져오기 완료
1. 가져오기 요약을 검토하세요
2. 가져오려면 **확인**을 클릭하세요
3. 가져오기가 완료될 때까지 기다리세요
4. 몇 개의 레코드를 확인하여 검증하세요
## 회사 가져오기 후
이제 회사에 연결되는 레코드를 가져올 수 있습니다:
1. **[연락처 가져오기](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)** — 도메인을 사용하여 회사에 연결하세요
2. **기회 가져오기** — 회사에 연결하세요
3. **가져오기를 검증** — 데이터가 올바른지 확인하기 위해 몇 개의 레코드를 샘플로 점검하세요
## 기존 회사 업데이트
새로 생성하는 대신 회사를 업데이트하려면:
1. 파일에 `domain` 또는 `id` 열을 포함하세요
2. Twenty는 이 고유 식별자로 레코드를 매칭합니다
3. 기존 회사는 업데이트되고, 새 회사는 생성됩니다
자세한 내용은 [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)을 참조하세요.
## FAQ
<AccordionGroup>
<Accordion title="왜 두 회사가 동일한 도메인을 가질 수 없나요?">
도메인은 Twenty에서 고유 식별자입니다. 이는 중복 회사를 방지하고 이메일 동기화가 올바른 회사에 이메일을 정확히 연결되도록 보장합니다.
</Accordion>
<Accordion title="도메인이 없는 회사가 있으면 어떻게 하나요?">
도메인을 비워둘 수 있습니다. 하지만 더 나은 데이터 품질과 자동 이메일 연결을 위해 가능하면 도메인을 추가할 것을 권장합니다.
</Accordion>
<Accordion title="People이 연결되지 않은 회사를 가져올 수 있나요?">
예! 먼저 회사를 가져온 다음, 이후 개인을 가져와 회사 도메인을 사용해 서로 연결할 수 있습니다.
</Accordion>
<Accordion title="이미 존재하는 도메인을 가져오면 어떻게 되나요?">
기존 회사와 일치하는 고유 식별자(도메인 또는 id)를 포함하면, Twenty는 중복을 생성하는 대신 해당 회사를 업데이트합니다.
</Accordion>
<Accordion title="'duplicate domain' 오류는 어떻게 해결하나요?">
파일에서 중복을 제거하거나, 회사의 `id`를 포함하여 기존 레코드를 업데이트하세요.
</Accordion>
</AccordionGroup>
## 문제 해결
문제가 있으신가요? 확인하세요:
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)
* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,242 @@
---
title: CSV로 연락처 가져오기
description: Twenty로 사람/연락처를 가져오는 포괄적인 단계별 가이드.
---
## 개요
이 가이드는 연락처(People)를 Twenty로 가져오는 과정을 단계별로 안내합니다.
## 시작하기 전에
### 사전 준비 체크리스트
<Check>
파일이 CSV, XLSX 또는 XLS 형식임
</Check>
<Check>
파일의 레코드가 10,000개 미만임
</Check>
<Check>
파일에 중복된 이메일 주소가 없음
</Check>
<Check>
**회사를 먼저 가져옴**(사람을 회사에 연결하는 경우)
</Check>
<Check>
모든 사용자 정의 필드가 **Settings → Data Model**에 존재함
</Check>
<Warning>
**사람보다 회사를 먼저 가져오기**
사람을 회사에 연결하려면 먼저 회사를 가져오세요. 참조하려면 회사가 먼저 존재해야 합니다.
</Warning>
## 1단계: 연락처 데이터 준비
### 필수 및 권장 필드
| 필드 | 필수? | 형식 | 노트 |
| ------------- | ----- | ----------------- | ------------------ |
| **이메일** | 권장 | `name@domain.com` | 고유해야 함 |
| **이름** | 권장 | 텍스트 | |
| **성** | 권장 | 텍스트 | |
| **회사** | 선택 사항 | 도메인 또는 ID | 기존 회사에 연결 |
| **전화** | 선택 사항 | 여러 열 | 아래 참조 |
| **직책** | 선택 사항 | 텍스트 | |
| **사용자 정의 필드** | 선택 사항 | 항목에 따라 다름 | Data Model에 존재해야 함 |
### 이메일 형식
* 유효한 이메일 형식이어야 함: `name@domain.com`
* **고유해야 함** — 파일 또는 Twenty에 중복이 없어야 합니다
* 추가 이메일은 **Emails / Additional Emails** 열을 사용하세요:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### 전화 형식
전화는 여러 열이 필요한 **중첩 필드**입니다:
| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### 회사에 연결하기
회사 고유 식별자 열을 추가하세요:
| 열 이름 | 형식 | 예시 |
| --------------- | ------ | -------------------------------------- |
| `companyDomain` | URL 형식 | `https://acme.com` |
| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Note>
**도메인 URL 형식을 사용하세요**(`https://acme.com`), 라벨은 사용하지 마세요. 이는 Twenty에서 회사가 저장되는 방식과 일치합니다.
</Note>
### CSV 예시 구조
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
John,Smith,john@acme.com,CEO,https://acme.com,4159095555,US
Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
<Note>
**전문가 팁:** 가져오기 중에 **Download sample file**을 클릭하거나 기존 People 몇 명을 내보내 Twenty가 기대하는 정확한 열 이름을 확인하세요.
</Note>
## 2단계: 가져오기 기능에 액세스
**옵션 1: People 보기에서**
1. 왼쪽 사이드바에서 **People**로 이동하세요
2. 오른쪽 상단의 **⋮** 아이콘을 클릭하세요
3. **Import records**를 선택하세요
**옵션 2: 커맨드 메뉴 사용**
1. `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)를 누르세요
2. "import"를 입력하세요
3. **Import records**를 선택하세요
4. **People**을 선택하세요
## 3단계: 파일 업로드
1. **Select file**을 클릭하세요
2. CSV, XLSX 또는 XLS 파일을 선택하세요
3. Twenty가 파일을 분석할 때까지 기다리세요
## 4단계: 열 매핑
Twenty가 열을 필드에 자동으로 매칭하려고 시도합니다. 검토 및 조정:
1. **자동 매핑 확인** — 올바른지 검증하세요
2. **잘못된 매핑 수정** — 드롭다운을 클릭하여 올바른 필드를 선택하세요
3. **열 건너뛰기** — 가져오지 않을 열은 **Do not map**을 선택하세요
### 중요한 매핑 규칙
| 열 유형 | 매핑 대상 | 노트 |
| ------ | ------------------------------ | ------------------------------- |
| 회사 참조 | **회사** 관계 필드 | 도메인 또는 ID 중 하나만 사용(둘 다 사용하지 않음) |
| 이메일 | **이메일** | 기본 이메일 주소 |
| 추가 이메일 | **Emails / Additional Emails** | 배열 형식 |
| 전화 | 분리된 열 | 번호, 국가 코드, 전화 걸기 코드 |
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
### 회사 관계 매핑
회사 열을 매핑할 때:
1. 회사 참조 열을 찾으세요(예: `companyDomain`)
2. 이를 **회사** 관계 필드에 매핑하세요
3. Twenty가 각 사람을 일치하는 회사에 연결합니다
<Warning>
**관계에는 고유 식별자를 하나만 매핑하세요.**
`companyId`와 `companyDomain`을 둘 다 매핑하지 마세요. 하나만 선택하세요—사람이 읽기 쉬우므로 도메인을 권장합니다.
</Warning>
## 5단계: 선택 필드 값 매핑
선택 또는 다중 선택 필드(예: 리드 소스)가 있는 경우:
1. Twenty에서 사용자의 값을 기존 옵션과 나란히 표시합니다
2. 파일의 각 값을 Twenty 옵션과 매칭하세요
3. 필요하면 새 옵션을 만드세요
<Note>
선택 옵션은 표시 레이블이 아니라 **API 이름**을 사용합니다. API 이름을 보려면 **Settings → Data Model**에서 **Advanced mode**를 활성화하세요.
</Note>
## 6단계: 오류 검토 및 수정
가져오기를 완료하기 전에 Twenty가 데이터를 검증합니다:
1. **다음 단계**를 클릭합니다
2. 오류가 있는 행은 **노란색**으로 강조 표시됩니다
3. **오류를 직접 수정** — 셀을 클릭하고 값을 편집하세요
4. **문제가 있는 행 제거** — 해당 행을 건너뛰려면 X를 클릭하세요
### 일반적인 연락처 가져오기 오류
| 오류 | 원인 | 해결책 |
| --------------- | ------------------------- | ------------------------- |
| **중복 이메일** | 이메일이 Twenty 또는 파일에 이미 존재함 | 중복을 제거하거나 기존 레코드를 업데이트하세요 |
| **잘못된 이메일 형식** | 이메일 형식이 올바르지 않음 | `name@domain.com`으로 수정하세요 |
| **관계를 찾을 수 없음** | 회사가 존재하지 않음 | 먼저 회사를 가져오거나 참조를 수정하세요 |
| **필수 필드 누락** | 필수 필드가 비어 있음 | 값을 입력하거나 해당 행을 제거하세요 |
## 7단계: 가져오기 완료
1. 가져오기 요약을 검토하세요
2. 가져오려면 **확인**을 클릭합니다
3. 가져오기가 완료될 때까지 기다리세요
4. 몇 개의 레코드와 해당 회사 링크를 확인하여 검증하세요
## 연락처 가져오기 후
이제 연락처가 Twenty에 있습니다! 다음 단계:
1. **회사 링크 확인** — 올바른 회사에 연결되어 있는지 확인하려면 몇 개의 연락처 레코드를 여세요
2. **기회 가져오기** — 필요한 경우 연락처 및 회사에 연결하세요
3. **이메일 동기화 설정** — 연락처 레코드에서 이메일 내역을 볼 수 있도록 메일박스를 연결하세요
## 기존 연락처 업데이트
새로 생성하는 대신 연락처를 업데이트하려면:
1. 파일에 `email` 또는 `id` 열을 포함하세요
2. Twenty는 이 고유 식별자로 레코드를 매칭합니다
3. 기존 연락처는 업데이트되고, 새 연락처는 생성됩니다
자세한 내용은 [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import)을 참조하세요.
## FAQ
<AccordionGroup>
<Accordion title="왜 두 연락처가 동일한 이메일을 가질 수 없나요?">
이메일은 Twenty에서 고유 식별자입니다. 이는 중복 연락처를 방지하고 이메일 동기화가 올바른 연락처에 이메일을 정확히 연결되도록 보장합니다.
</Accordion>
<Accordion title="이메일이 없는 연락처가 있으면 어떻게 하나요?">
이메일을 비워둘 수 있습니다. 하지만 데이터 품질과 이메일 동기화 기능을 위해 가능하면 이메일을 추가할 것을 권장합니다.
</Accordion>
<Accordion title="가져오기 중 연락처를 회사에 어떻게 연결하나요?">
회사의 도메인(예: `https://acme.com`) 또는 ID가 포함된 열을 추가하세요. 매핑 중에 이 열을 회사 관계 필드에 연결하세요.
</Accordion>
<Accordion title="회사가 아직 존재하지 않으면 어떻게 하나요?">
먼저 회사를 가져오고, 그다음 연락처를 가져오세요. 참조하려면 해당 회사가 먼저 존재해야 합니다.
</Accordion>
<Accordion title="이전 CRM의 ID를 가져올 수 있나요?">
예! 외부 ID를 저장하려면 데이터 모델에 "unique"로 표시된 사용자 지정 필드를 만드세요. 참고: 필드 이름 `id`는 Twenty의 내부 ID로 예약되어 있습니다.
</Accordion>
<Accordion title="'relation not found' 오류는 어떻게 해결하나요?">
참조하려는 회사가 존재하지 않습니다. 회사를 먼저 가져오거나, 도메인/ID가 기존 회사와 정확히 일치하는지 확인하세요.
</Accordion>
</AccordionGroup>
## 문제 해결
문제가 있으신가요? 확인하세요:
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,176 @@
---
title: API로 데이터 가져오기
description: 대규모 데이터 가져오기에 Twenty의 API를 언제, 어떻게 사용할지 안내합니다.
---
## 개요
Twenty는 프로그램 방식의 데이터 가져오기를 위해 **GraphQL** 및 **REST API**를 모두 제공합니다. 데이터 규모상 CSV 가져오기가 실용적이지 않거나 자동화된 반복 가져오기가 필요한 경우 API를 사용하세요.
## API 가져오기 사용 시기
| 시나리오 | 권장 방법 |
| -------------------- | ---------------- |
| 10,000개 미만의 레코드 | CSV 가져오기 |
| 10,000 - 50,000개 레코드 | CSV 가져오기(파일로 분할) |
| **50,000개 이상의 레코드** | **API 가져오기** |
| 1회성 마이그레이션 | 둘 다 가능(규모에 따라) |
| **반복 가져오기** | **API 가져오기** |
| **실시간 동기화** | **API 가져오기** |
| **다른 시스템과의 통합** | **API 가져오기** |
<Note>수십만 건 규모의 데이터셋의 경우, API가 여러 번의 CSV 가져오기보다 훨씬 빠르고 더 신뢰할 수 있습니다.</Note>
## API 속도 제한
시스템 안정성을 보장하기 위해 Twenty는 속도 제한을 적용합니다:
| 제한 | 값 |
| ---------------- | ------------ |
| **분당 요청 수** | 100 |
| **배치 호출당 레코드 수** | 60 |
| **최대 처리량** | ~6,000 레코드/분 |
<Warning>
**이 한도를 기준으로 가져오기 계획을 수립하세요.**
최대 처리량 기준으로 100,000개 레코드를 가져오는 데 약 17분이 소요됩니다. 오류 처리와 재시도를 위한 여유 시간을 추가하세요.
</Warning>
## 시작하기
### 1단계: API 키 받기
1. **설정 → 개발자**로 이동하세요.
2. **+ API 키 생성**을 클릭하세요.
3. 키에 설명적인 이름을 지정하세요.
4. API 키를 즉시 복사하세요(다시 표시되지 않습니다).
5. 안전하게 보관하세요.
<Warning>
**API 키를 비공개로 유지하세요.**
API 키를 가진 누구나 워크스페이스 데이터에 접근하고 수정할 수 있습니다. 코드 저장소에 커밋하거나 공개적으로 공유하지 마세요.
</Warning>
### 2단계: 사용할 API 선택
Twenty는 두 가지 유형의 API를 지원합니다:
| API | 적합한 용도 | 문서 |
| ----------- | ----------------------------- | -------------------------------- |
| **GraphQL** | 유연한 쿼리, 연관 데이터 조회, 복잡한 작업에 적합 | [API 문서](/l/ko/developers/extend/api) |
| **REST** | 단순한 CRUD 작업, 익숙한 REST 패턴 | [API 문서](/l/ko/developers/extend/api) |
두 API 모두 다음을 지원합니다:
* 레코드 생성, 조회, 업데이트 및 삭제
* **배치 작업** — 호출당 최대 60개 레코드를 생성하거나 업데이트
**가져오기에서는 배치 작업을 사용**하여 한도 내에서 처리량을 극대화하세요.
### 3단계: 가져오기 순서 계획
CSV 가져오기와 마찬가지로, 관계형 데이터에서는 **순서가 중요**합니다:
1. **회사** 먼저(종속성 없음)
2. 그다음 **사람**(회사에 연결 가능)
3. 세 번째로 **기회**(회사 및 사람에 연결 가능)
4. **작업/노트**(위 항목 중 어느 것에도 연결 가능)
5. **사용자 지정 객체**(종속성을 따름)
## 모범 사례
### 요청 일괄 처리
* 레코드를 한 번에 하나씩 보내지 마세요
* API 호출당 최대 **60개 레코드**로 묶으세요
* 이렇게 하면 한도 내에서 처리량을 극대화할 수 있습니다
### 속도 제한 처리
* 요청 사이에 지연을 구현하세요(지속적인 가져오기의 경우 최소 600ms)
* 한도에 도달하면 지수 백오프를 사용하세요
* 429(Too Many Requests) 응답을 모니터링하세요
### 먼저 데이터 검증
* 가져오기 전에 데이터를 정리하고 검증하세요
* 필수 필드가 채워졌는지 확인하세요
* 형식이 Twenty의 요구 사항과 일치하는지 확인하세요([필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping) 참조)
### 모든 항목 로깅
* 가져온 모든 레코드를 로깅하세요(ID 포함)
* 전체 컨텍스트와 함께 오류를 로깅하세요
* 이는 문제를 디버깅하고 완료 여부를 확인하는 데 도움이 됩니다
### 먼저 테스트
* 소량 배치(10-20개 레코드)로 테스트하세요
* 데이터가 Twenty에 올바르게 표시되는지 확인하세요
* 그런 다음 전체 가져오기를 실행하세요
### 중복 방지를 위한 업서트
GraphQL API는 **배치 업서트**를 지원합니다 — 레코드가 있으면 업데이트하고, 없으면 생성합니다. 이렇게 하면 가져오기를 다시 실행할 때 중복을 방지할 수 있습니다.
## 객체 및 필드 이름 찾기
사용 가능한 객체와 필드를 확인하려면:
1. **설정 → API 및 웹훅**으로 이동하세요
2. **Metadata API**를 살펴보세요
3. 모든 표준 및 사용자 지정 객체와 해당 필드를 확인하세요
문서에는 모든 표준 및 사용자 지정 객체, 해당 필드, 예상 데이터 유형이 표시됩니다.
## 전문 서비스
복잡한 API 마이그레이션의 경우, 파트너가 도와드립니다:
| 서비스 | 포함 내용 |
| --------------- | ------------------ |
| **데이터 모델 설계** | 최적의 데이터 구조를 설계 |
| **마이그레이션 스크립트** | 가져오기 스크립트를 작성하고 실행 |
| **데이터 변환** | 복잡한 매핑과 정리를 수행 |
| **검증 및 QA** | 마이그레이션이 완료되었는지 확인 |
**적합한 용도:**
* 100,000개 이상의 레코드 마이그레이션
* 복잡한 데이터 변환
* 빠듯한 일정
* 개발 리소스가 없는 팀
[contact@twenty.com](mailto:contact@twenty.com)으로 문의하시거나 당사의 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.
## FAQ
<AccordionGroup>
<Accordion title="GraphQL과 REST의 차이는 무엇인가요?">
GraphQL은 단일 쿼리로 필요한 데이터만 정확히 요청할 수 있으며, 복잡한 작업에 더 적합합니다. REST는 표준 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하며, 기존 API로 작업해 본 경험이 있다면 더 익숙할 수 있습니다.
</Accordion>
<Accordion title="API를 통해 기존 레코드를 업데이트할 수 있나요?">
예! 레코드의 `id`와 함께 업데이트 뮤테이션(GraphQL) 또는 PUT/PATCH 요청(REST)을 사용하세요.
</Accordion>
<Accordion title="중복은 어떻게 처리하나요?">
고유 식별자(이메일, 도메인)를 사용해 먼저 기존 레코드를 조회하세요. 존재하면 업데이트하고, 없으면 생성하세요.
</Accordion>
<Accordion title="API를 통해 레코드를 삭제할 수 있나요?">
예, 삭제 뮤테이션(GraphQL) 또는 DELETE 요청(REST)을 사용하세요.
</Accordion>
<Accordion title="Python 또는 Node.js SDK가 있나요?">
현재는 없습니다. 하지만 두 API는 어떤 언어의 HTTP 클라이언트와도 작동합니다.
</Accordion>
</AccordionGroup>
## API 문서
전체 구현 세부정보, 코드 예제, 스키마 참조는 다음을 확인하세요:
* [API 문서](/l/ko/developers/extend/api)

View File

@@ -0,0 +1,225 @@
---
title: CSV를 통해 객체 간 관계 가져오기
description: CSV 가져오기 중 레코드 연결에 대한 완전한 단계별 가이드.
---
## 개요
이 가이드는 객체 간 관계를 가져오는 방법을 안내합니다—예를 들어, 사람을 회사에 연결하거나 기회를 사람에게 연결하는 방법.
<Note>**가져올 수 있는 항목:** 단일 객체 유형을 가리키는 일대다 관계만 가능합니다. 여러 객체 유형을 가리키는 관계(예: 노트가 사람과 회사 모두에 연결)는 아직 가져오기를 지원하지 않습니다.</Note>
## 관계 이해하기
### "일대다" 관계란?
일대다 관계에서는:
* **하나의** 회사에는 **여러** 사람(직원)이 있습니다
* **하나의** 회사에는 **여러** 기회가 있습니다
* **한** 사람에게는 **여러** 작업이 있습니다
"one" 쪽은 **상위**입니다. "many" 쪽은 **하위**입니다.
### Twenty에서 흔한 관계
| 관계 | "One" 쪽(상위) | "Many" 쪽(하위) |
| ------- | ----------- | ------------ |
| 회사 → 사람 | 회사 | 사람들 |
| 회사 → 기회 | 회사 | 기회 |
| 사람 → 작업 | 사람 | 작업 |
| 사람 → 노트 | 사람 | 노트 |
## 1단계: "One"과 "Many" 쪽 식별하기
가져오기 전에 어떤 객체가 상위이고 어떤 객체가 하위인지 결정하세요.
**스스로에게 물어보세요:** "하나의 [객체 A]가 여러 [객체 B]를 가지는가?"
* 하나의 회사 → 여러 사람 ✓ (회사가 상위)
* 한 사람 → 여러 회사 ✗ (잘못된 예—사람은 한 회사에 소속됩니다)
## 2단계: 상위 레코드를 먼저 가져오기
참조하려면 상위("one" 쪽) 레코드가 Twenty에 먼저 존재해야 합니다.
**가져오기 순서:**
1. **회사** 먼저(종속성 없음)
2. 그다음 **사람**(회사에 연결)
3. 세 번째로 **기회**(회사 및/또는 사람에 연결)
4. **작업/노트**(위 항목 중 하나에 연결)
<Warning>
**상위 레코드가 존재하지 않으면 가져오기는 실패합니다.**
회사 참조가 있는 사람을 가져오기 전에 항상 회사를 먼저 가져왔는지 확인하세요.
</Warning>
## 3단계: 상위의 고유 식별자 확인
**고유 식별자**를 사용해 상위 레코드를 참조해야 합니다. 사용 가능한 옵션:
| 상위 객체 | 사용 가능한 고유 식별자 |
| -------------- | ----------------------------------------- |
| **회사** | `id`(UUID), `domain`(권장), 또는 사용자 지정 고유 필드 |
| **사람들** | `id`(UUID), `email`, 또는 사용자 지정 고유 필드 |
| **워크스페이스 멤버들** | `id`(UUID), `email`(이름 아님) |
| **사용자 지정 개체** | `id`(UUID), 또는 고유로 표시된 모든 필드 |
<Note>**권장:** 회사에는 `domain`, 사람에는 `email`을 사용하세요. 이들은 사람이 읽기 쉬우며 스프레드시트에서 확인하기도 쉽습니다.</Note>
### 식별자 찾기
`id`가 필요하다면:
1. Twenty에서 상위 레코드를 내보내세요
2. 내보내기에는 `id` 열이 포함됩니다
3. 이 ID를 하위 레코드 파일에서 사용하세요
## 4단계: 관계 필드가 존재하는지 확인
가져오기 전에 객체 간에 관계 필드가 존재하는지 확인하세요.
**확인 또는 생성 방법:**
1. **설정 → 데이터 모델**로 이동
2. 하위 객체를 선택하세요(예: 사람)
3. 상위를 가리키는 관계 필드를 찾으세요(예: 회사)
4. 없다면 다음과 같이 생성하세요:
* **+ 필드 추가**를 클릭하세요
* 필드 유형으로 **관계**를 선택하세요
* 상위 객체를 선택하세요
## 5단계: CSV 파일 준비
하위 CSV에 상위의 고유 식별자를 사용해 상위를 참조하는 열을 추가하세요.
### 예: 사람 → 회사 연결
**사람 CSV:**
```csv
firstName,lastName,email,jobTitle,companyDomain
John,Smith,john@acme.com,CEO,https://acme.com
Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
`companyDomain` 열은 회사의 도메인을 참조합니다.
### 형식 요구 사항
| 식별자 | 형식 | 예시 |
| --- | ------ | -------------------------------------- |
| 도메인 | URL 형식 | `https://acme.com` |
| 이메일 | 표준 이메일 | `john@acme.com` |
| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Warning>
**도메인 형식이 중요합니다!**
`https://domain.com`을 사용하세요(`domain.com`만 사용하지 마세요). 이는 Twenty가 회사 도메인을 저장하는 방식과 일치하며, 매칭 오류를 방지합니다.
</Warning>
### 중요 규칙
1. **정확히 일치해야 함** — 값이 상위 레코드와 정확히 일치해야 합니다
2. **고유 식별자는 하나만 매핑** — `companyId`와 `companyDomain`을 모두 포함하지 마세요
3. **대소문자 구분** — `Acme.com` ≠ `acme.com`
## 6단계: 업로드하고 관계 매핑하기
1. 하위 객체로 이동하세요(예: 사람)
2. **⋮** → **레코드 가져오기**를 클릭
3. CSV 파일을 업로드하세요
4. 필드 매핑 단계에서:
* 관계 열을 찾으세요(예: `companyDomain`)
* 이를 **회사** 관계 필드에 매핑하세요
5. 나머지 매핑을 완료하세요
6. 오류를 검토하고 확인하세요
Twenty가 각 하위 레코드를 일치하는 상위에 자동으로 연결합니다.
## 7단계: 가져오기 확인
가져온 후:
1. 하위 레코드 몇 개를 엽니다(예: 사람)
2. 관계 필드에 올바른 상위(예: 회사)가 표시되는지 확인하세요
3. 상위 레코드를 열고 관련 레코드 섹션을 확인하세요
## 피해야 할 일반적인 실수
| 실수 | 문제 | 해결책 |
| --------------- | ------------------------------------- | -------------------------------- |
| **잘못된 가져오기 순서** | 회사보다 사람을 먼저 가져오기 | 항상 상위를 먼저, 그다음 하위를 가져오세요 |
| **잘못된 도메인 형식** | `https://acme.com` 대신 `acme.com`을 사용함 | `https://`가 포함된 전체 URL 형식을 사용하세요 |
| **여러 개의 고유 필드** | `companyId`와 `companyDomain`을 둘 다 매핑함 | 고유 식별자를 하나만 매핑하세요 |
| **관계 필드 누락** | 데이터 모델에 관계 필드가 존재하지 않음 | 가져오기 전에 **설정 → 데이터 모델**에서 생성하세요 |
| **존재하지 않는 레코드** | 상위 레코드가 Twenty에 존재하지 않음 | 상위 레코드를 먼저 가져오거나, 오타를 확인하세요 |
| **대소문자 불일치** | 파일에는 `Acme.com`, Twenty에는 `acme.com` | 대소문자가 정확히 일치하는지 확인하세요 |
## 워크스페이스 구성원에 연결하기
워크스페이스 구성원(팀원)에 연결할 때:
* 이름이 아니라 **이메일 주소**를 사용하세요
* 예: `owner@yourcompany.com`, "John Smith"가 아님
```csv
taskName,assignedTo
Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```
## FAQ
<AccordionGroup>
<Accordion title="상위 레코드에 도메인이나 이메일이 없으면 어떻게 하나요?">
다음 두 가지 옵션이 있습니다:
1. Twenty의 `id`를 사용하세요(상위 레코드를 내보내 ID를 가져오세요)
2. 데이터 모델에 사용자 지정 고유 필드를 만들어 이전 시스템의 외부 ID를 저장하세요
</Accordion>
<Accordion title="기존 레코드의 관계를 업데이트할 수 있나요?">
예! 하위 레코드의 고유 식별자(예: 사람의 경우 `email`)와 새로운 관계 값을 포함하세요. 가져오기가 관계를 업데이트합니다.
</Accordion>
<Accordion title="다대다 관계를 가져올 수 있나요?">
다대다 관계는 아직 가져오기를 지원하지 않습니다. 이는 2026년 상반기에 계획되어 있습니다.
</Accordion>
<Accordion title="여러 객체 유형(예: 노트를 사람과 회사 모두)에 연결할 수 있나요?">
여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다. 이는 로드맵에 포함되어 있습니다.
</Accordion>
<Accordion title="상위 레코드가 존재하지 않으면 어떻게 되나요?">
해당 행에 대해 가져오기가 오류를 표시합니다. 다음 두 가지 방법 중 하나로 가능합니다:
* 상위 레코드를 먼저 가져온 뒤 다시 가져오세요
* 참조 값을 수정하세요
* 가져오기에서 해당 행을 제거하세요
</Accordion>
<Accordion title="관계가 올바르게 연결되지 않는 이유는 무엇인가요?">
일반적인 원인:
* 잘못된 형식(도메인은 `https://domain.com`을 사용)
* 대소문자 불일치(정확한 철자 확인)
* 상위가 존재하지 않음(상위를 먼저 가져오기)
* 여러 식별자 매핑(하나만 사용)
</Accordion>
</AccordionGroup>
<Warning>
**기억하세요: 소프트 삭제된 레코드도 고유성에 포함됩니다.**
레코드가 존재하는 것처럼 보이는데도 "not found" 오류가 발생한다면, Command Menu → See deleted records를 확인하세요. 상위가 소프트 삭제되었을 수 있습니다.
</Warning>
## 문제 해결
문제가 있으신가요? 확인하세요:
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
* [관계 가져오기 기능](/l/ko/user-guide/data-migration/capabilities/import-relations)
* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,289 @@
---
title: 다른 CRM에서 마이그레이션하기
description: 어떤 CRM에서든 데이터를 Twenty로 마이그레이션하는 단계별 가이드.
---
## 개요
이 가이드는 어떤 CRM에서든 데이터를 Twenty로 마이그레이션하는 과정을 단계별로 안내합니다. 이 과정에는 데이터 감사, Twenty 워크스페이스 준비, 현재 시스템에서의 내보내기, Twenty로의 가져오기가 포함됩니다.
<Note>마이그레이션 후에는 뷰, 워크플로우, 권한을 수동으로 다시 만들어야 합니다. 이 구성 작업에 필요한 시간을 계획하세요.</Note>
## 1단계: 현재 데이터 감사
마이그레이션은 새롭게 시작할 수 있는 기회입니다. 불필요한 데이터는 가져오지 마세요.
**유지할 항목:**
* 활성 연락처 및 회사
* 열려 있는 기회와 거래
* 중요한 메모와 활동
* 실제로 사용하는 사용자 정의 필드
**남겨둘 항목:**
* 오래된 연락처(2년 이상 활동 없음)
* 중복 레코드
* 테스트 데이터
* 사용하지 않는 사용자 정의 필드
## 2단계: 데이터 모델 매핑
현재 CRM과 Twenty 간의 매핑 문서를 만드세요:
| 현재 CRM | Twenty |
| --------- | ---------------- |
| 계정 / 조직 | **회사** |
| 연락처 / 개인 | **사람들** |
| 거래 / 기회 | **기회** |
| 활동 | **작업** 또는 **노트** |
| 사용자 지정 개체 | **사용자 지정 개체** |
**각 필드에 대해 다음을 문서화합니다:**
* 원본 필드 이름
* 대상 Twenty 필드
* 필요한 형식 변환(날짜, 전화번호 등)
<Note>가져오기 중에 이 매핑 문서를 가까이 두세요—열을 매핑할 때 참고하게 됩니다.</Note>
## 3단계: Twenty 워크스페이스 설정
데이터를 가져오기 전에 Twenty 워크스페이스를 준비하세요:
### 사용자 지정 개체 및 필드 만들기
1. **설정 → 데이터 모델**로 이동
2. 필요한 사용자 지정 개체를 생성하세요
3. 표준 개체와 사용자 지정 개체에 사용자 지정 필드를 추가하세요
4. 필드 설정(고유, 필수, 선택 옵션 등)을 구성하세요
<Warning>
**가져오기 전에 필드가 존재해야 합니다.**
CSV 가져오기는 필드가 아니라 레코드를 생성합니다. 가져오기 전에 **설정 → 데이터 모델**에서 사용자 지정 필드를 생성하세요.
</Warning>
### 팀 초대
<Warning>
**데이터를 가져오기 전에 사용자를 초대하세요.**
데이터에 사용자 참조(계정 소유자, 담당자 등)가 포함되어 있다면, 가져오기 전에 해당 사용자가 Twenty에 존재해야 합니다. 그렇지 않으면 해당 관계를 매핑할 수 없습니다.
</Warning>
1. **설정 → 구성원**으로 이동하세요.
2. 모든 팀 구성원을 초대하세요
3. **모두가 초대를 수락할 때까지 기다리세요**
4. 모든 사용자가 구성원 목록에 표시되는지 확인하세요
## 4단계: 현재 CRM에서 내보내기
현재 CRM에서 데이터를 내보내세요:
1. 보통 설정, 데이터 관리 또는 관리자 메뉴에 있는 **내보내기** 기능을 찾으세요
2. 가능하면 **CSV 형식**으로 내보내세요
3. 각 개체 유형을 별도로 내보내세요(회사, 연락처, 거래 등)
4. 마이그레이션하려는 모든 필드를 포함하세요
**다음 개체를 내보내세요(참고용 순서):**
1. 회사 / 계정 / 조직
2. 연락처 / 사람
3. 거래 / 기회
4. 노트 및 활동
5. 사용자 지정 개체
## 5단계: 데이터 정리 및 형식 지정
내보낸 각 CSV를 스프레드시트 애플리케이션에서 열고 Twenty에 맞게 준비하세요.
### 중복 제거
1. 고유 필드(사람: 이메일, 회사: 도메인)로 정렬하세요
2. 중복 행을 제거하거나 병합하세요
3. Twenty에 이미 중복이 없는지 확인하세요
### 필드 형식을 올바르게 지정
| 필드 유형 | 필수 형식 |
| --------- | --------------------------- |
| **도메인** | `https://domain.com` |
| **이메일** | `name@domain.com` (고유해야 함) |
| **날짜** | `YYYY-MM-DD` |
| **전화** | 세 개의 열: 번호, 국가 코드, 전화 걸기 코드 |
| **부울** | `TRUE` 또는 `FALSE` (대문자) |
| **선택 필드** | 표시 레이블이 아니라 API 이름을 사용하세요 |
<Warning>
**도메인 형식이 중요합니다.**
`https://domain.com`을 사용하세요(`domain.com` 또는 `www.domain.com`은 사용하지 마세요). 이는 Twenty의 형식과 일치하며 이메일/캘린더 동기화를 연결할 때 중복을 방지합니다.
</Warning>
모든 필드 유형에 대한 전체 형식 요구 사항은 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
### 관계 열 추가
레코드를 연결하려면(예: 사람을 회사에) 상위 레코드의 고유 식별자가 있는 열을 추가하세요.
**예: 회사 링크가 포함된 사람 CSV**
```csv
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
레코드 연결에 대한 자세한 지침은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
### 사용자 참조 업데이트
데이터에 사용자 할당(소유자, 담당자)이 포함된 경우:
1. **사용자의 이메일**이 포함된 열을 추가하세요(이전 시스템의 ID만이 아니라)
2. 사용자가 Twenty 워크스페이스에 참여할 때 사용한 것과 동일한 이메일 주소를 사용하세요
전체 형식 가이드는 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
## 6단계: Twenty로 가져오기
<Warning>
**가져오기 순서가 중요합니다!**
항상 다음 순서로 가져오세요:
1. **회사** 먼저(종속성 없음)
2. 그다음 **사람**(회사에 연결)
3. **기회** 세 번째(회사/사람에 연결)
4. **노트와 작업**(레코드에 연결)
5. **사용자 지정 객체**(종속성에 따름)
참조하려면 상위 레코드가 먼저 존재해야 합니다.
</Warning>
### 각 객체 가져오기
각 CSV 파일에 대해 다음 순서로 진행하세요:
1. Twenty에서 해당 객체로 이동하세요
2. **⋮ → 레코드 가져오기**를 클릭하세요
3. CSV 파일을 업로드하세요
4. 열을 필드에 매핑하세요:
* 사용자 이메일 열을 해당 관계 필드에 매핑하세요
* 관계 열(예: `companyDomain`)을 관계 필드에 매핑하세요
5. UI에서 오류를 검토하고 수정하세요
6. 가져오기를 확인하세요
7. 다음 파일로 진행하기 전에 몇 개의 레코드를 확인하세요
**상세 가이드:**
* [회사 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv)
* [연락처 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
## 7단계: 대규모 마이그레이션(레코드 50,000개 이상)
대규모 마이그레이션의 경우:
| 규모 | 권장 방법 |
| -------------------- | ------------- |
| 10,000개 미만의 레코드 | 단일 CSV 가져오기 |
| 10,000 - 50,000개 레코드 | 여러 CSV 파일로 분할 |
| 50,000개 이상의 레코드 | API 사용 |
**API 가져오기의 경우:**
* 대규모 데이터 세트에 대해 더 빠르고 신뢰성이 높음
* 배치 작업 지원(호출당 최대 60개 레코드)
* 자세한 내용은 [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)을 참조하세요
## 8단계: 마이그레이션 이후 설정
데이터를 가져온 후 워크스페이스 구성을 완료하세요:
### 뷰 다시 만들기
* 필터, 정렬, 열 구성이 포함된 저장된 뷰를 설정하세요
* 필요한 칸반 또는 캘린더 뷰를 만드세요
### 워크플로우 재구성
* 자동화를 **설정 → 워크플로우**에서 다시 만드세요
* 가장 중요한 워크플로우부터 시작하세요
* 사용하기 전에 각 워크플로우를 테스트하세요
### 역할 및 권한 구성
* **설정 → 구성원 → 역할**에서 역할을 설정하세요
* 적절한 역할에 사용자를 할당하세요
### 이메일 및 캘린더 연결
* 각 사용자는 **설정 → 계정**에서 자신의 계정을 연결합니다
* Twenty가 이메일을 연락처 레코드와 동기화하기 시작합니다
* 자세한 내용은 [이메일 및 캘린더](/l/ko/user-guide/calendar-emails/overview)를 참조하세요
### 팀 교육
* 함께 새 인터페이스를 살펴보세요
* 팀별 프로세스를 문서화하세요
## 일반적인 문제와 해결책
| 문제 | 원인 | 해결책 |
| ---------------- | ------------------ | ------------------------------------------- |
| **중복 오류** | 이메일/도메인이 이미 존재함 | 파일에서 중복을 제거하거나 고유 식별자를 포함하여 기존 레코드를 업데이트하세요 |
| **관계를 찾을 수 없음** | 상위 레코드가 존재하지 않음 | 상위 객체를 먼저 가져오세요(회사를 사람보다 먼저) |
| **누락된 필드** | 사용자 지정 필드가 존재하지 않음 | 가져오기 전에 설정 → 데이터 모델에서 필드를 생성하세요 |
| **선택 필드 오류** | 표시 레이블 사용 중 | API 이름을 사용하세요(설정에서 고급 모드를 활성화하여 찾을 수 있음) |
| **사용자 관계 비어 있음** | 사용자가 초대를 수락하지 않음 | 가져오기 전에 모든 사용자가 초대를 수락했는지 확인하세요 |
자세한 문제 해결 단계는 [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)을 참조하세요.
## 마이그레이션 후 체크리스트
### 데이터 무결성
<Check>모든 레코드가 가져와졌음(원본 시스템과 개수 비교)</Check>
<Check>관계가 정상적으로 작동함(사람이 회사에 연결됨)</Check>
<Check>사용자 할당이 올바르게 매핑됨(소유자, 담당자)</Check>
<Check>사용자 지정 필드가 채워졌음</Check>
<Check>예상치 못한 중복 없음</Check>
### 구성
<Check>뷰 재생성 완료</Check>
<Check>워크플로우 재생성 및 테스트 완료</Check>
<Check>역할 및 권한 구성 완료</Check>
<Check>이메일/캘린더 동기화 연동 완료</Check>
### 팀 준비 상태
<Check>새 시스템에 대한 팀 교육 완료</Check>
<Check>기존 CRM 접근 계획 결정(참고용으로 유지? 언제 비활성화할지?)</Check>
## FAQ
<AccordionGroup>
<Accordion title="워크플로우를 자동으로 마이그레이션할 수 있나요?">
현재는 불가능합니다. 워크플로우는 Twenty에서 수동으로 다시 만들어야 합니다.
</Accordion>
<Accordion title="파일 첨부는 어떻게 하나요?">
파일 첨부는 CSV 내보내기에 포함되지 않습니다. 수동으로 다시 업로드하거나 API를 통해 마이그레이션하거나 지원이 필요하면 당사 팀에 문의하세요.
</Accordion>
<Accordion title="마이그레이션 중에 두 시스템을 모두 실행 상태로 유지할 수 있나요?">
예, 마이그레이션이 완료되었음을 확인할 때까지 기존 CRM을 실행 상태로 유지할 것을 권장합니다. 다만 두 곳 모두에서 새 데이터를 생성하지 않도록 주의하세요.
</Accordion>
<Accordion title="마이그레이션에는 일반적으로 얼마나 걸리나요?">
데이터의 규모와 복잡도에 따라 다릅니다. 소규모 마이그레이션(레코드 10,000개 미만)은 몇 시간 내에 완료할 수 있습니다. 대규모 마이그레이션은 데이터 정리와 테스트를 포함하여 며칠이 걸릴 수 있습니다.
</Accordion>
</AccordionGroup>
## 도움이 필요하신가요?
<Tip>
마이그레이션에 도움이 필요하신가요? 데이터, 파이프라인, 사용자까지 엔드 투 엔드로 이전해 줄 [공인 Twenty 파트너를 찾아보세요](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-migrate-crm).
</Tip>

View File

@@ -0,0 +1,173 @@
---
title: 자가 호스팅에서 클라우드로 마이그레이션
description: Twenty 자가 호스팅 인스턴스를 Twenty Cloud로 마이그레이션하는 단계별 가이드.
---
## 개요
이 가이드는 Twenty 자가 호스팅 인스턴스에서 Twenty Cloud로 데이터를 마이그레이션하는 과정을 안내합니다. 이 프로세스에는 클라우드 워크스페이스 설정, 데이터 내보내기, 그리고 다시 가져오기가 포함됩니다.
<Note>마이그레이션 후에는 뷰, 워크플로우, 역할을 수동으로 다시 만들어야 합니다. 이 구성 작업에 필요한 시간을 계획하세요.</Note>
## 1단계: 클라우드 워크스페이스 생성
1. [app.twenty.com](https://app.twenty.com)으로 이동하여 새 워크스페이스를 생성하세요
2. 초기 설정 마법사를 완료하세요
3. 새 워크스페이스 URL을 기록해 두세요
## 2단계: 데이터 모델 다시 생성
데이터를 가져오기 전에 사용자 지정 객체와 필드를 다시 만드세요:
1. 클라우드 인스턴스에서 **설정 → 데이터 모델**로 이동하세요
2. 자가 호스팅 설정과 일치하는 사용자 지정 객체를 생성하세요
3. 표준 객체와 사용자 지정 객체에 사용자 지정 필드를 추가하세요
4. 필드 설정(고유, 필수 등)을 구성하세요
<Note>참고용으로 자가 호스팅 데이터 모델의 스크린샷을 찍거나, 두 인스턴스를 나란히 열어 두세요.</Note>
## 3단계: 모든 사용자 초대
<Warning>
**중요: 데이터를 가져오기 전에 사용자를 초대하세요.**
사용자가 참조되는 레코드(예: Account Owner 필드)를 가져오기 전에 초대를 수락해야 합니다. 사용자가 아직 존재하지 않으면 해당 관계를 매핑할 수 없습니다.
</Warning>
1. 클라우드 인스턴스에서 **설정 → 멤버**로 이동하세요
2. 자가 호스팅에서 계정을 보유했던 모든 팀 멤버를 초대하세요
3. **모두가 초대를 수락할 때까지 기다리세요**
4. 모든 사용자가 멤버 목록에 표시되는지 확인하세요
## 4단계: 자가 호스팅에서 데이터 내보내기
자가 호스팅 인스턴스에서 각 객체를 내보내세요:
1. 각 객체(회사, 사람, 기회 등)로 이동하세요
2. 마이그레이션하려는 **모든 열**이 보이도록 뷰를 구성하세요
3. **⋮ → 뷰 내보내기**를 클릭하세요
4. 각 CSV 파일을 명확한 이름으로 저장하세요(예: `companies-export.csv`)
**다음 순서로 내보내세요**(가져올 때 참고용):
1. 회사
2. 사람들
3. 기회
4. 사용자 지정 객체(종속성을 따름)
5. 작업, 노트
## 5단계: 워크스페이스 멤버 참조 업데이트
내보낸 CSV에는 자가 호스팅 인스턴스의 사용자 ID가 포함되어 있습니다. 이 ID는 클라우드 인스턴스와 일치하지 않으므로 이메일로 대체해야 합니다.
**사용자 참조(Owner, Assignee 등)가 있는 각 CSV 파일의 경우:**
1. 스프레드시트 애플리케이션에서 CSV를 여세요
2. 각 사용자 ID 열 옆에 새 열을 추가하세요(예: `accountOwnerId` 옆에 `accountOwnerEmail`)
3. 각 사용자의 **이메일 주소**를 입력하세요
4. 이전 ID 열은 삭제하거나 그대로 둘 수 있습니다(가져오기 중에 건너뜁니다)
**예시:**
이전:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
이후:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
<Note>사용자가 클라우드 워크스페이스 초대를 수락할 때 사용한 것과 동일한 이메일 주소를 사용하세요.</Note>
## 6단계: 가져오기 순서 계획
관계를 유지하려면 올바른 순서로 파일을 가져오세요:
1. 먼저 **회사**(종속성 없음)
2. 그다음 **사람**(회사에 연결)
3. 세 번째로 **기회**(회사 및 사람에 연결)
4. **사용자 지정 객체**(종속성을 따름)
5. 마지막으로 **작업과 노트**(다른 레코드에 연결)
관계 유지에 대한 자세한 내용은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
## 7단계: 클라우드로 가져오기
각 CSV 파일에 대해 다음 순서로 진행하세요:
1. 클라우드 인스턴스에서 해당 객체로 이동하세요
2. **⋮ → 레코드 가져오기**를 클릭하세요
3. CSV 파일을 업로드하세요
4. 열을 필드에 매핑하세요:
* 사용자 이메일 열을 해당 관계 필드에 매핑하세요
* 다른 열도 일반적으로 매핑하세요
5. 오류가 있으면 검토하고 수정하세요
6. 가져오기를 확인하세요
7. 다음 파일로 진행하기 전에 몇 개의 레코드를 확인하세요
## 8단계: 구성 다시 생성
데이터를 가져온 후 다음을 수동으로 다시 만드세요:
### 보기
* 필터, 정렬, 열 구성과 함께 저장된 뷰를 다시 만드세요
* 칸반 또는 캘린더 뷰를 설정하세요
### 워크플로우
* **설정 → 워크플로우**에서 자동화를 다시 만드세요
* 사용하기 전에 각 워크플로우를 테스트하세요
### 역할 및 권한
* **설정 → 구성원 → 역할**에서 역할을 설정하세요
* 적절한 역할에 사용자를 할당하세요
### 통합
* 각 사용자의 이메일 및 캘린더 동기화를 다시 연결하세요
* 새 API 키로 모든 API 통합을 다시 구성하세요
## 마이그레이션 후 체크리스트
<Check>모든 데이터가 성공적으로 가져와졌음</Check>
<Check>객체 간 관계가 올바르게 동작함</Check>
<Check>사용자 할당(Owner, Assignee)이 올바르게 매핑됨</Check>
<Check>뷰 재생성 완료</Check>
<Check>워크플로우 재생성 및 테스트 완료</Check>
<Check>역할 및 권한 구성 완료</Check>
<Check>이메일/캘린더 동기화 재연결 완료</Check>
<Check>API 통합이 새 키로 업데이트됨</Check>
## FAQ
<AccordionGroup>
<Accordion title="워크플로우를 자동으로 마이그레이션할 수 있나요?">
현재는 불가능합니다. 워크플로우는 클라우드 인스턴스에서 수동으로 다시 만들어야 합니다.
</Accordion>
<Accordion title="파일 첨부 및 이미지는 어떻게 하나요?">
파일 첨부는 CSV 내보내기에 포함되지 않습니다. 첨부 파일은 수동으로 다시 업로드하거나 API를 통해 마이그레이션해야 하며, 대규모 마이그레이션의 경우 당사 팀에 연락하여 지원을 받으세요.
</Accordion>
<Accordion title="마이그레이션 중에 두 인스턴스를 모두 실행 상태로 유지할 수 있나요?">
예. 클라우드 마이그레이션이 완료되었음을 확인할 때까지 자가 호스팅 인스턴스를 실행 상태로 유지하는 것을 권장합니다. 단, 두 곳 모두에서 새 데이터를 생성하지 않도록 주의하세요.
</Accordion>
<Accordion title="사용자가 아직 초대를 수락하지 않았다면 어떻게 하나요?">
해당 사용자를 참조하는 레코드는 가져오기에 실패하거나 관계가 비어 있게 됩니다. 데이터를 가져오기 전에 모든 사용자가 초대를 수락했는지 확인하세요.
</Accordion>
</AccordionGroup>
## 도움이 필요하신가요?
<Tip>
대규모 또는 복잡한 워크스페이스를 마이그레이션하고 있나요? 전체 마이그레이션을 처리할 [공인 Twenty 파트너](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-migrate-cloud)를 찾아보세요. *(또는 저희 팀을 참조에 추가하세요: [contact@twenty.com](mailto:contact@twenty.com).)*
</Tip>

View File

@@ -0,0 +1,267 @@
---
title: CSV 파일 준비
description: Twenty로 가져오기 위한 데이터 형식 지정 단계별 가이드.
---
## 개요
이 가이드는 성공적인 가져오기를 위해 CSV 파일을 준비하는 과정을 안내합니다. 오류를 피하려면 다음 단계를 따르세요.
## 1단계: 파일 요구 사항 확인
시작하기 전에 파일이 다음 요구 사항을 충족하는지 확인하세요:
| 요구 사항 | 세부정보 |
| --------- | ---------------- |
| **형식** | CSV, XLSX 또는 XLS |
| **크기 제한** | 파일당 10,000 레코드 |
| **인코딩** | UTF-8 권장 |
| **구조** | 파일당 한 가지 오브젝트 유형 |
<Note>10,000 레코드를 초과하는 데이터세트의 경우, 여러 파일로 분할하거나 [API 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)를 사용하세요.</Note>
## 2단계: 샘플 파일 다운로드
**가장 중요한 단계입니다.** 샘플 파일은 Twenty가 기대하는 정확한 열 이름과 형식을 보여줍니다.
1. 오브젝트 보기(사람들, 회사 등)로 이동하세요.
2. **⋮** → **레코드 가져오기**를 클릭하세요
3. **샘플 파일 다운로드**를 클릭하세요
4. 이 파일을 템플릿으로 사용하세요
<Note>**전문가 팁:** 대신 기존 레코드 몇 개를 내보내세요. 이렇게 하면 데이터가 어떻게 형식화되어야 하는지 실제 예를 얻을 수 있으며, 가져오는 동안 열 이름이 자동으로 매핑됩니다.</Note>
## 3단계: 중복 값 제거
Twenty는 일부 필드에 대해 고유성을 적용합니다. 중복 항목은 가져오기 오류를 유발합니다.
| 객체 | 고유 필드 |
| ------------- | ----------------------- |
| **사람들** | `id`, `email` |
| **회사** | `id`, `domain` |
| **사용자 지정 개체** | `id`, 그리고 고유로 표시한 모든 필드 |
**가져오기 전에:**
1. 스프레드시트를 고유 필드(이메일 또는 도메인)로 정렬하세요
2. 중복 행을 제거하거나 병합하세요
3. Twenty에 이미 존재하는 중복 항목이 있는지 확인하세요
<Warning>**소프트 삭제된 레코드는 고유성에 포함됩니다.** Command Menu → 삭제된 레코드 보기에 있는 레코드는 중복 오류를 일으킵니다. 영구적으로 삭제하거나 복원한 후 업데이트하세요.</Warning>
## 4단계: 각 필드 유형을 올바르게 형식 지정하기
필드 유형에 따라 요구되는 형식이 다릅니다. 전체 참고 자료는 다음과 같습니다:
### 텍스트 필드
* 특별한 형식 지정이 필요 없습니다
* 앞/뒤 공백은 자동으로 제거됩니다
### 이메일 필드
* 유효한 이메일 형식이어야 합니다: `name@domain.com`
* 고유해야 합니다(파일 또는 Twenty에 중복이 없어야 함)
* 추가 이메일의 경우 **Emails / Additional Emails** 열에서 다음 형식을 사용하세요:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### 도메인 필드
* **권장 형식**: `https://domain.com`
* 이는 메일박스/캘린더 동기화에서 사용하는 형식과 일치하며 중복을 방지합니다
* 두 열을 모두 채우세요:
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
* 파일 내 및 Twenty에서 고유해야 합니다
### 전화번호 필드
전화번호는 여러 열이 필요한 **중첩 필드**입니다:
| 열 | 예시 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### 주소 필드
Address는 여러 열로 구성된 **중첩 필드**이며(일부는 비워 둘 수 있음):
* **Address / Address 1**: 주소 1행
* **Address / Address 2**: 주소 2행(선택 사항)
* **Address / City**: 도시 이름
* **Address / State**: 주 또는 도
* **Address / Country**: 국가 이름
* **Address / Post Code**: 우편번호/ZIP 코드
### 날짜 필드
파일 전체에서 일관된 형식을 사용하세요:
* `YYYY-MM-DD` (권장): `2024-03-15`
* ISO 8601: `2024-03-15T10:30:00Z`
### 숫자 필드
* 숫자만 사용(텍스트 금지)
* 소수점 구분 기호로 점(.)을 사용: `1234.56`
* 천 단위 구분 기호 사용 금지(`1,234.56`는 사용하지 마세요)
### 통화 필드
통화는 두 개의 열이 필요한 **중첩 필드**이며, **두 열 모두** 채워야 합니다:
| 열 | 예시 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
### 부울 필드
대문자 사용: `TRUE` 또는 `FALSE`
<Warning>소문자 `true` 또는 `false`는 동작하지 않습니다.</Warning>
### 선택 필드
표시 라벨이 아니라 옵션의 **API 이름**을 사용하세요.
**API 이름을 찾는 방법:**
1. **설정 → 데이터 모델**로 이동
2. 객체와 필드를 선택하세요
3. **고급 모드**를 활성화하세요(오른쪽 하단 토글)
4. API 이름을 복사하세요(예: `OPTION_1`, "Option 1" 아님)
<Note>새 선택 옵션은 자동으로 생성되지 않습니다. 가져오기 전에 **설정 → 데이터 모델**에서 추가하세요.</Note>
### 다중 선택 필드
배열 형식으로 API 이름을 사용:
```
["VALUE1","VALUE2"]
```
### 배열 필드
JSON 배열 형식 사용:
```
["value1","value2"]
```
### 평점 필드
다음 형식을 사용: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, 또는 `RATING_5`
### 링크/URL 필드
두 열을 모두 채우세요:
* **Links / Link Label**: `Twenty`
* **Links / Link URL**: `https://twenty.com`
보조 링크의 경우 **Links / Secondary Links** 열을 사용하세요:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### JSON 필드
유효한 JSON 형식을 사용:
```
{"key":"value","key2":"value2"}
```
### ID 필드
* **선택 사항**: 제공하지 않으면 Twenty가 ID를 자동 생성합니다
* **형식**: UUID(예: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
* **사용 사례**: 새로 생성하는 대신 기존 레코드를 업데이트하려면 ID를 포함하세요
## 5단계: 관계 열 추가(레코드를 연결하는 경우)
레코드를 다른 객체에 연결하려면(예: People을 Companies에) 관련 레코드의 고유 식별자가 있는 열을 추가하세요.
**예시**: People을 Companies에 연결
People CSV에 열을 추가:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**관계에 대한 중요 규칙:**
* 상위 레코드는 Twenty에 이미 존재해야 합니다
* 라벨이 아니라 **도메인 URL** 형식(`https://domain.com`)을 사용하세요
* 고유 식별자는 하나만 매핑하세요(`companyId`와 `companyDomain`을 모두 포함하지 마세요)
* 워크스페이스 구성원은 이름이 아닌 **이메일**을 사용하세요
<Warning>
**가져오기 순서가 중요합니다!**
"one" 측을 "many" 측보다 먼저 가져오세요:
1. **회사** 먼저
2. **연락처** 두 번째(회사 참조 포함)
3. **기회** 세 번째
참조하려면 상위 레코드가 먼저 존재해야 합니다.
</Warning>
자세한 지침은 [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)을 참조하세요.
## 6단계: Twenty에 필드가 존재하는지 확인
가져오기는 필드가 아니라 레코드를 생성합니다. 가져오려는 모든 필드는 데이터 모델에 이미 존재해야 합니다.
**가져오기 전:**
1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요
3. 필요한 사용자 정의 필드를 생성하세요
4. 필드 이름을 정확히 확인하세요(열 제목과 일치해야 합니다)
## 7단계: 최종 체크리스트
파일을 업로드하기 전에 다음을 확인하세요:
<Check>파일 형식이 CSV, XLSX 또는 XLS이어야 합니다</Check>
<Check>레코드 수가 10,000개 미만이어야 합니다</Check>
<Check>인코딩이 UTF-8이어야 합니다</Check>
<Check>이메일(연락처) 또는 도메인(회사)에 중복이 없어야 합니다</Check>
<Check>날짜 형식이 전체에서 일관되어야 합니다</Check>
<Check>도메인은 `https://domain.com` 형식을 사용해야 합니다</Check>
<Check>부울 필드는 `TRUE` 또는 `FALSE`(대문자)를 사용해야 합니다</Check>
<Check>선택 필드는 표시 라벨이 아닌 API 이름을 사용해야 합니다</Check>
<Check>모든 사용자 정의 필드가 설정 → 데이터 모델에 존재해야 합니다</Check>
<Check>상위 레코드를 하위 레코드보다 먼저 가져와야 합니다</Check>
<Check>관계 열이 기존 레코드를 참조해야 합니다</Check>
## 피해야 할 일반적인 실수
| 실수 | 해결책 |
| -------------------- | ----------------------------------- |
| `TRUE` 대신 `true` 사용 | 부울 값은 대문자여야 합니다 |
| 선택 필드에서 표시 라벨 사용 | 설정에서 API 이름을 찾아 사용하세요 |
| 회사보다 연락처를 먼저 가져오기 | 항상 상위 객체를 먼저 가져오세요 |
| 통화 필드에 통화 코드 누락 | Amount와 Currency 열을 모두 채우세요 |
| 잘못된 도메인 형식 | `https://domain.com` 형식을 일관되게 사용하세요 |
| 관계에 여러 개의 고유 필드를 매핑함 | 하나만 매핑하세요(도메인 또는 ID, 둘 다는 안 됨) |
## 다음 단계
파일이 준비되었습니다! 이제:
* [회사 가져오기](/l/ko/user-guide/data-migration/how-tos/import-companies-via-csv) (먼저 가져오세요)
* [연락처 가져오기](/l/ko/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)

View File

@@ -0,0 +1,198 @@
---
title: 가져오기로 기존 레코드를 업데이트
description: CSV 가져오기를 사용해 레코드를 일괄 업데이트하는 완전한 단계별 가이드.
---
## 개요
여러 레코드를 한 번에 업데이트해야 하나요? 하나씩 편집하는 대신 CSV 가져오기를 사용해 기존 레코드를 일괄 업데이트하세요.
**사용 사례:**
* 여러 사람의 직함 업데이트
* 회사 정보를 일괄 변경
* 새 사용자 지정 필드에 데이터 추가
* 여러 레코드의 데이터 오류 수정
## 작동 방식
기존 레코드와 일치하는 **고유 식별자**가 포함된 파일을 가져오면, Twenty는 중복을 생성하는 대신 해당 레코드를 업데이트합니다.
| 고유 식별자가... | Twenty가... |
| ---------------- | -------------------------- |
| 기존 레코드와 일치함 | **업데이트** 기존 레코드 |
| 어떤 레코드와도 일치하지 않음 | **생성** 새 레코드 |
| 파일에 없음 | **생성** 새 레코드(자동 생성된 ID 포함) |
<Warning>
**다중 선택 필드는 병합되지 않고 덮어써집니다.**
레코드에 `Option A`와 `Option B`가 선택되어 있고 `["Option C"]`를 가져오면, 가져온 후 해당 레코드에는 `Option C`만 남습니다. 가져오면 이전 선택 항목이 모두 대체됩니다 — 기존 선택에 추가되지 않습니다.
기존 값을 유지하려면 가져오기에 모두 포함하세요: `["Option A","Option B","Option C"]`
</Warning>
## 1단계: 현재 데이터 내보내기
먼저, 업데이트하려는 레코드를 내보내세요:
1. 해당 객체(사람, 회사 등)로 이동합니다.
2. **필요한 열을 추가** — 업데이트하려는 필드를 표시하려면 **옵션 → 필드**를 클릭하세요
3. **필요하다면 필터링** — 업데이트하려는 레코드만으로 범위를 좁히세요
4. **⋮** → **뷰 내보내기**를 클릭
5. CSV 파일을 저장하세요
<Note>**먼저 내보내는 이유?** 내보낸 파일은 올바른 형식을 갖추고 고유 식별자를 포함하며, 가져오는 동안 자동으로 매핑됩니다.</Note>
### 내보내지는 내용
* 현재 보기에서 표시되는 모든 열
* 레코드의 고유 식별자(`id`, `email`, `domain`)
* 수정할 수 있는 현재 필드 값
## 2단계: CSV 파일 편집
내보낸 파일을 스프레드시트 애플리케이션(Excel, Google Sheets 등)에서 여세요:
1. **고유 식별자 열을 유지** — `id`, `email`, `domain`을 삭제하지 마세요
2. 변경하려는 열의 값을 **업데이트**하세요
3. **업데이트할 필요가 없는 열은 제거하세요** (선택 사항이지만 더 깔끔합니다)
4. **고유 식별자 값을 변경하지 마세요** — 그렇지 않으면 Twenty가 새 레코드를 생성합니다
### 예시: 직함 업데이트
**내보낸 파일:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Sales Rep
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Sales Rep
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
**편집 후:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Account Executive
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Senior Account Executive
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Account Executive
```
<Warning>
**고유 식별자 값을 변경하지 마세요.**
`john@acme.com`을 `john.smith@acme.com`으로 변경하면 Twenty는 기존 레코드를 업데이트하는 대신 새 레코드를 생성합니다.
</Warning>
## 3단계: 업데이트된 파일 가져오기
1. 객체로 이동
2. **⋮** → **레코드 가져오기**를 클릭
3. 편집한 CSV 파일을 업로드하세요
4. **고유 식별자가 매핑되었는지 확인** — `email`, `domain`, `id`가 올바르게 매핑되었는지 검증하세요
5. 필드 매핑을 검토하세요
6. 오류가 있는지 확인하세요
7. **확인**을 클릭
Twenty는 고유 식별자로 레코드를 매칭하여 새 값으로 업데이트합니다.
## 적합한 고유 식별자 선택
| 객체 | 권장 | 대안 | 노트 |
| ------------- | --------- | ---- | ------------------- |
| **사람들** | `이메일` | `id` | 이메일은 사람이 읽기 쉬움 |
| **회사** | `도메인` | `id` | 도메인은 사람이 읽기 쉬움 |
| **사용자 지정 개체** | 임의의 고유 필드 | `id` | 사용자 지정 고유 필드를 사용하세요 |
<Note>**하나의 고유 식별자만 사용하세요.** `email`과 `id`를 둘 다 매핑하지 마세요. 이로 인해 혼란과 오류가 발생할 수 있습니다.</Note>
### 사용자 지정 고유 필드 사용
고유로 표시된 사용자 지정 필드(다른 시스템의 외부 ID 등)가 있는 경우:
1. 내보내기와 가져오기에 해당 필드를 포함하세요
2. 가져올 때 해당 필드를 매핑하세요
3. Twenty가 해당 필드로 매칭합니다
## 4단계: 업데이트 확인
가져온 후:
1. 업데이트된 레코드 몇 개를 열어보세요
2. 변경 사항이 적용되었는지 확인하세요
3. 중복 레코드가 생성되지 않았는지 확인하세요
## 파일에 없는 필드는 어떻게 되나요?
**가져오기 파일에 포함되지 않은 필드는 변경되지 않습니다.**
| 파일에 포함된 항목... | 결과 |
| ---------------------------- | ------------------------------------ |
| `email`, `jobTitle` | `jobTitle`만 업데이트되며, 다른 필드는 그대로 유지됩니다 |
| `email`, `jobTitle`, `phone` | `jobTitle`과 `phone`이 업데이트됩니다 |
즉, 변경하려는 필드(및 고유 식별자)만 포함하면 됩니다.
## 업데이트와 새 레코드 조합
하나의 가져오기에서 기존 레코드를 업데이트하고 새 레코드를 생성할 수 있습니다:
```csv
email,firstName,lastName,jobTitle
john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
## 피해야 할 일반적인 실수
| 실수 | 문제 | 결과 | 해결책 |
| --------------- | ------------------------------------------------------ | ------------------ | --------------------------------- |
| **고유 식별자 변경** | `john@acme.com`을 `john.smith@acme.com`으로 변경함 | 업데이트 대신 새 레코드를 생성함 | 고유 식별자를 변경하지 마세요 |
| **여러 개의 고유 필드** | `email`과 `id`를 모두 매핑함 | 매칭 충돌 가능성 | 고유 식별자를 하나만 매핑하세요 |
| **고유 식별자 없음** | 파일에 `firstName`, `lastName`, `jobTitle`만 있음 | 모든 행이 새 레코드를 생성함 | 항상 `email`, `domain`, `id`를 포함하세요 |
| **대소문자 불일치** | 파일에는 `John@acme.com`이 있지만 Twenty에는 `john@acme.com`이 있음 | 새 레코드 생성 | 정확한 값을 얻으려면 Twenty에서 내보내세요 |
## FAQ
<AccordionGroup>
<Accordion title="일부 레코드가 아직 없으면 어떻게 하나요?">
고유 식별자가 기존 레코드와 일치하지 않는 레코드는 새 레코드로 생성됩니다. 이렇게 하면 하나의 가져오기에서 업데이트와 생성을 함께 수행할 수 있습니다.
</Accordion>
<Accordion title="필드 값을 비울 수 있나요?">
예, CSV에서 해당 셀을 비워두세요. 가져오면 기존 레코드의 해당 필드 값이 비워집니다.
</Accordion>
<Accordion title="가져오기에 포함하지 않은 필드는 어떻게 되나요?">
가져오기 파일에 없는 필드는 기존 레코드에서 변경되지 않습니다. 포함한 필드만 업데이트됩니다.
</Accordion>
<Accordion title="관계 필드(예: 회사)를 업데이트할 수 있나요?">
예! 관계의 고유 식별자(예: `companyDomain`)를 포함하고 관계 필드에 매핑하세요. 관계가 업데이트됩니다.
</Accordion>
<Accordion title="어떤 레코드는 업데이트되고 어떤 레코드는 생성되는지 어떻게 알 수 있나요?">
가져오기 검토 단계에서 Twenty가 고유 식별자 일치 여부를 기준으로 업데이트될 레코드와 생성될 레코드 수를 보여줍니다.
</Accordion>
<Accordion title="일괄 업데이트를 되돌릴 수 있나요?">
자동 실행 취소 기능은 없습니다. 대량 업데이트 전에 데이터를 백업용으로 내보내는 것을 권장합니다.
</Accordion>
</AccordionGroup>
## 모범 사례
1. **먼저 내보내기** — 올바른 형식을 보장하려면 항상 내보내기에서 시작하세요
2. **업데이트 전에 백업** — 대량 변경 전에 데이터를 내보내세요
3. **일부 레코드로 테스트** — 대량 작업 전에 먼저 5~10개의 레코드를 업데이트해 보세요
4. **사람이 읽기 쉬운 식별자 사용** — `email`과 `domain`이 `id`보다 확인하기 더 쉽습니다
5. **필요한 열만 포함** — 열이 적을수록 오류 가능성이 줄어듭니다
## 문제 해결
문제가 있으신가요? 확인하세요:
* [가져오기 오류 수정](/l/ko/user-guide/data-migration/how-tos/fix-import-errors)
* [고유성 제약 조건](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)
* [필드 매핑 레퍼런스](/l/ko/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,83 @@
---
title: 데이터 마이그레이션
description: CSV 파일 또는 API를 통해 CRM 데이터를 가져오고 내보내세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 가져오기 방법
Twenty는 데이터를 가져오는 두 가지 주요 방법을 지원합니다:
| 방법 | 권장 용도 | 건수 제한 |
| ------------ | ------------------ | --------------- |
| **CSV 가져오기** | 표준 마이그레이션, 정기 업데이트 | 파일당 10,000개 레코드 |
| **API 가져오기** | 대규모 마이그레이션, 자동화 | 무제한 |
<Note>매우 큰 데이터셋(레코드 수가 수십만 건)에 대해서는 API를 사용하세요. 필요한 경우 당사의 [구현 파트너](/l/ko/user-guide/getting-started/capabilities/implementation-services)가 이러한 스크립트 실행을 도와드릴 수 있습니다.</Note>
## CSV 가져오기 기본 사항
CSV, XLSX, 또는 XLS 파일을 사용하여 모든 객체의 데이터를 가져올 수 있습니다. 각 파일에는 **객체 유형 하나만** 포함해야 합니다(예: People 레코드만).
<Note>**가져오기 전에 필드가 존재해야 합니다.** CSV를 업로드하면 레코드가 생성되지만 필드는 생성되지 않습니다. 사용자 지정 필드가 필요하면 먼저 **Settings → Data Model**에서 생성하세요.</Note>
### 단계
1. 데이터를 가져올 객체로 이동하세요
2. 오른쪽 상단의 **⋮** 아이콘(명령 메뉴)을 클릭하고 **레코드 가져오기**를 클릭하세요
3. 데이터가 예상된 형식인지 확인하려면 템플릿 파일을 다운로드하세요
4. 형식에 맞춘 CSV 파일을 업로드하세요
5. 열을 Twenty 필드에 매핑하세요
6. 오류(노란색으로 강조 표시됨)를 검토하고 UI에서 직접 편집하여 수정하세요
7. 가져오기를 확인하세요
### 객체 간 관계 가져오기
CSV 가져오기 기능을 사용하여 객체 간의 관계를 가져올 수 있습니다. 이 객체에서 고유 필드를 사용하여 관련 객체를 참조해야 합니다: `id`, People 및 워크스페이스 구성원의 경우 `email`, 회사의 경우 `domain`, 기타 객체의 경우 데이터 모델에서 고유로 설정된 다른 필드.
<Note>**삭제된 레코드도 고유성에 포함됩니다.** 소프트 삭제된 레코드(Command Menu → See deleted records에서 표시됨) 역시 고유성 검사에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 해당 삭제된 레코드가 복원됩니다.</Note>
<Warning>
**가져오기 순서가 중요합니다!**
연관된 객체를 가져올 때 파일을 다음 순서로 업로드하세요:
1. **Companies** 먼저(일대다 관계의 '1' 측)
2. **사람** 두 번째(companyId를 통해 회사에 연결됨)
3. **기회** 세 번째(회사/사람에 연결됨)
4. 관계가 있는 **사용자 지정 객체**는 마지막
왜 그런가요? 일대다 관계의 '1' 측은 참조하기 전에 먼저 존재해야 합니다. 예를 들어, 해당 회사의 ID로 Person을 가져오기 전에 Company 레코드가 먼저 존재해야 합니다.
</Warning>
단계별 진행 방법은 [이 문서](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)를 참고하세요.
## 데이터 내보내기
백업, 보고 또는 마이그레이션을 위해 워크스페이스 데이터를 내보내세요.
### 단계
1. 내보낼 객체로 이동하세요
2. 필요한 열로 뷰를 구성하세요
3. **⋮** → **뷰 내보내기**를 클릭하세요
4. CSV 파일을 저장하세요
<Note>**표시된 열만 내보내집니다.** CSV 파일에는 현재 뷰에 표시된 열만 포함됩니다. 포함할 데이터를 제어하려면 내보내기 전에 열을 추가하거나 숨기세요.</Note>
<Note>**내보내기 제한**: 내보내기당 최대 20,000개 레코드.</Note>
## 권한
데이터 가져오기 및 내보내기에는 특정 권한이 필요합니다:
* **가져오기**: "Import CSV" 권한이 필요합니다
* **내보내기**: "Export CSV" 권한이 필요합니다
해당 권한이 없다면 워크스페이스 관리자에게 문의하세요.
## 다음 단계
* [CSV 파일 준비하기](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)
* [객체 간 관계 가져오기](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [대용량 데이터셋을 API로 가져오기](/l/ko/user-guide/data-migration/how-tos/import-data-via-api)

View File

@@ -0,0 +1,122 @@
---
title: 필드
description: 필드의 역할을 이해하고 관리 방법을 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 필드 정보
필드는 스프레드시트의 열과 같습니다. 텍스트, 숫자 또는 날짜와 같은 다양한 유형의 데이터를 저장합니다. 필드는 기본 제공 표준 필드 또는 사용자 정의 필드(사용자가 생성한 필드)일 수 있습니다.
### 표준 필드
표준 필드는 일반적인 비즈니스 요구를 처리할 수 있도록 Twenty에 기본 제공됩니다.
예를 들어, `이름` 및 `성`은 `사람` 객체의 표준 필드입니다. 이는 개인 이름에 대한 텍스트 데이터를 저장합니다.
표준 필드를 삭제할 수는 없지만 필요하지 않을 경우 비활성화할 수 있습니다.
또한 표준 `SELECT` 유형 필드의 옵션을 사용자 지정할 수 있습니다. 예를 들어 기회(Opportunities)에서 `Stage` 옵션을 설정할 수 있습니다.
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
### 사용자 정의 필드
사용자 정의 필드는 모든 객체에 추가할 수 있습니다. 텍스트, 숫자, 날짜, 드롭다운 선택 항목 등을 저장할 수 있습니다. 비즈니스에 특화된 정보를 추적하기 위해 사용자 정의 필드를 사용하세요.
예를 들어, SpaceX의 경우 `로켓 활성 상태`가 사용자 정의 필드가 될 수 있으며, 이는 로켓이 작동 중인지 여부를 나타냅니다.
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
## 필드 유형
Twenty는 다양한 필드 유형을 지원합니다:
| 유형 | 설명 | 예시 |
| ------- | ---------------------------------- | -------------- |
| 주소 | 거리, 도시, 주/도, 국가, 우편번호가 포함된 구조화된 주소 | 사무실 주소 |
| 배열 | 텍스트 값 목록 | 태그 |
| 부울 | 참/거짓 체크박스 | 활성 여부 |
| 통화 | 통화 코드가 포함된 금액 | 거래 금액(USD) |
| 날짜 | 날짜 값 | 마감일 |
| 날짜 및 시간 | 시간이 포함된 날짜 | 회의 시간 |
| 도메인 | 웹사이트 도메인(회사에 사용) | acme.com |
| 이메일 | 이메일 주소(기본 + 추가) | 연락처 이메일 |
| JSON | 구조화된 JSON 데이터 | 사용자 지정 메타데이터 |
| 링크 | 레이블이 있는 URL(기본 + 보조) | 웹사이트, LinkedIn |
| 긴 텍스트 | 여러 줄 텍스트 | 설명, 메모 |
| 다중 선택 | 미리 정의된 목록에서 여러 항목 선택 | 태그, 카테고리 |
| 숫자 | 숫자 값(정수 또는 소수) | 수량, 점수 |
| 전화 | 국가 코드가 포함된 전화번호 | 업무용 전화 |
| 평점 | 별점(1~5) | 우선순위, 점수 |
| 관계 | 다른 객체의 레코드 링크 | 회사 → 사람 |
| 선택 | 미리 정의된 목록에서 단일 항목 선택 | 단계, 상태 |
| 텍스트 | 한 줄 텍스트 | 이름, 직함 |
## 사용자 정의 필드 생성
모든 객체에 사용자 정의 필드를 추가하려면 다음 단계를 따르세요:
1. 왼쪽 사이드바에서 `설정`으로 이동합니다.
2. `데이터 모델`로 이동한 다음 사용자 지정하려는 객체를 선택합니다.
3. `+ 새 필드`를 클릭하여 계속 진행합니다.
4. 요구 사항에 맞는 필드 이름과 유형을 선택합니다. 더 나은 이해를 위해 필드 설명을 추가하는 것을 고려하세요.
새로 생성된 필드는 애플리케이션의 필드 내에서 사용 가능합니다. 특정 보기에서 표시하려면 옵션 메뉴를 클릭한 다음 `필드`를 선택하세요.
<VimeoEmbed videoId="927628219" title="동영상 시연" />
**빠른 방법:** 모든 객체 테이블의 오른쪽 상단의 **+** 버튼을 클릭한 다음 `필드 사용자 지정`을 선택합니다. 이렇게 하면 바로 데이터 모델 설정으로 이동합니다.
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
## 필드 비활성화
데이터를 잃지 않고 앱에서 필드를 숨기려면 필드를 비활성화할 수 있습니다. 삭제 대신 필드를 숨기는 것으로 생각하세요.
다음은 비활성화 방법입니다:
1. 객체 설정에서 비활성화하려는 필드를 찾습니다.
2. 필드 옆에 있는 세 점 `⋮`을 클릭하여 메뉴를 엽니다.
3. 드롭다운에서 `비활성화`를 선택합니다.
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
필드를 비활성화하면 어떻게 되나요?
1. **앱 안에서:** 필드가 사라지며 더 이상 새로운 값을 추가할 수 없습니다.
2. **기존 관계:** 관계 필드인 경우 기존 연결은 유지되지만 새 연결을 만들 수 없습니다.
3. **API 액세스:** 여전히 API를 통해 필드와 그 데이터를 액세스할 수 있습니다.
표준 및 사용자 정의 필드를 다시 활성화하거나 영구적으로 삭제할 수 있는 옵션이 있습니다.
## 필드를 고유하게 만들기
동일한 값을 가진 레코드가 없도록 필드를 고유하게 만드세요. 예를 들어, 이메일 주소는 각 사람마다 고유합니다.
고유성을 설정할 때 오류가 발생하면 데이터(삭제된 레코드를 포함하여)에서 중복 값을 확인하세요.
## 인덱스 (고급)
데이터베이스 인덱스는 자동으로 관리되며, 직접 추가해야 하는 경우는 드물고 실수하기 쉽습니다. 고급 모드를 켜면, 필요한 경우를 대비해 각 오브젝트의 `Settings → Data Model → <object>` 아래에 **Indexes** 섹션이 생깁니다.
## 필드 구성 모범 사례
### 명명 규칙 및 제한 사항
* **단수형 및 복수형 이름은 서로 달라야 합니다**: GraphQL API에는 변이를 위한 서로 다른 이름이 필요합니다.
* **보호된 필드 이름**: 일부 이름은 시스템 용도로 예약되어 있습니다(예: `Type`, `Application`)
### 통화 및 전화 필드
* **기본 통화:** 데이터 모델을 통해 구성할 수 있습니다.
* **기본 국가 코드:** 전화 필드를 위해 데이터 모델을 통해 구성할 수 있습니다.
### 선택 필드
* **각 선택 필드에는 기본 옵션을 선택할 수 있습니다**.
### 레코드 텍스트 필드
* **각 객체에는 하나의 메인 디스플레이 필드가 있습니다:** 이 필드는 가장 왼쪽 열에 나타나며 다른 객체와 링크될 때 레코드를 나타냅니다. 텍스트 필드여야 합니다. 예를 들어, 사람은 `이름`을 주요 필드로 사용하기 때문에 사람을 회사에 연결할 때 회사의 보기에서 이름을 볼 수 있습니다.

View File

@@ -0,0 +1,92 @@
---
title: 개체
description: Twenty에서 표준 및 사용자 지정 객체에 대해 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 표준 개체
표준 객체는 시작을 돕기 위해 워크스페이스에 미리 정의되어 있습니다. Twenty의 모든 사용자가 접근할 수 있는 공유 데이터 모델의 일부입니다. 기본 상태로 사용하거나 사용자 정의하거나 비활성화할 수 있습니다.
<img src="/images/user-guide/objects/standard-objects.png" style={{width:'100%'}} />
### 사람들
`People` 객체는 연락처를 저장합니다. 연락처 정보 및 상호 작용 기록이 포함되어 있어 모든 고객 상호 작용을 한 곳에서 볼 수 있습니다.
### 회사
`Companies` 객체는 비즈니스 계정을 저장합니다. 업종, 규모 및 위치와 같은 세부정보가 포함됩니다. Companies는 `People` 및 `Opportunities` 객체와 연결됩니다.
### 기회
`Opportunities` 객체는 거래 관련 데이터를 저장합니다. 잠재 매출의 진행 상황을 발굴부터 성사까지 추적하며, 단계, 거래 규모, 연결된 계정, 예상 마감일을 기록합니다. 캔반 레이아웃에서 판매 파이프라인을 볼 수 있습니다.
### 노트
`Notes` 객체는 사람, 회사, 영업 기회 및 기타 레코드에 첨부할 수 있는 자유 형식의 메모를 저장합니다. 메모를 사용해 회의 요약, 중요한 세부정보, 기타 맥락 정보를 기록하세요.
### 작업
`Tasks` 객체는 할 일과 실행 항목을 저장합니다. 작업은 사람, 회사, 영업 기회 및 기타 레코드에 연결할 수 있습니다. 마감일, 담당자, 완료 상태를 추적하여 후속 조치를 철저히 관리하세요.
## 사용자 지정 개체
사용자 지정 객체를 사용하면 조직에 고유하며 표준 객체로는 처리할 수 없는 정보를 저장할 수 있습니다. 예를 들어, SpaceX의 경우 로켓 및 발사에 대한 사용자 정의 개체를 만들 수 있습니다.
<img src="/images/user-guide/objects/custom-objects.png" style={{width:'100%'}} />
### 새 사용자 지정 객체 생성
새 사용자 지정 객체를 만들려면:
1. 왼쪽 사이드바에서 설정으로 이동하세요.
2. 워크스페이스에서 데이터 모델로 이동하세요. 여기에서 기존 표준 및 사용자 정의 개체(활성 및 비활성 포함)의 개요를 볼 수 있습니다.
<VimeoEmbed videoId="926288174" title="동영상 시연" />
3. 상단에서 `+ New object`를 클릭하세요. 단수 및 복수 이름을 입력하고 아이콘을 선택한 다음 사용자 정의 객체에 대한 설명을 추가하고 저장(오른쪽 상단)을 누릅니다. 사용자 지정 객체의 예로 Listing을 사용할 경우, 단수형은 "listing", 복수형은 "listings"이며, 설명은 "호스트가 숙소를 홍보하기 위해 생성한 목록"처럼 작성할 수 있습니다.
4. 이제 사용자 지정 객체가 생성되어 사이드바에 표시됩니다. 바로 레코드를 추가할 수 있습니다.
## 객체 관리
### 객체 비활성화
표준 또는 사용자 지정 객체가 필요하지 않은 경우:
1. 설정 → 데이터 모델로 이동하세요
2. 비활성화하려는 객체를 찾아 클릭하세요
3. 객체의 **Settings** 탭으로 이동하세요
4. `Deactivate` 버튼을 클릭하세요
5. 객체는 워크스페이스에서 숨겨지지만 데이터는 유지됩니다
### 객체 재활성화
비활성화된 객체를 다시 사용하려면:
1. 설정 → 데이터 모델로 이동하세요
2. `Deactivated` 필터를 활성화하세요
3. 비활성화된 객체를 찾으세요(이름 옆에 `Deactivated`가 표시됩니다)
4. `⋮`를 클릭한 다음 `Activate`를 클릭해 다시 활성화하세요
5. 객체와 해당 모든 데이터가 복원됩니다
## 모범 사례
### 사용자 지정 객체를 생성해야 할 때
* **고유한 비즈니스 엔터티**: 업계나 프로세스에 특화된 항목
* **복잡한 관계**: 여러 엔터티 간의 연결을 추적해야 할 때
* **확장 가능한 데이터**: 매우 많은 인스턴스가 생길 수 있을 때
### 대신 필드를 사용해야 할 때
* **단순 속성**: 기존 객체를 설명하는 속성
* **카테고리 또는 레이블**: 기존 레코드를 분류하는 방법
* **단일 값**: 별도의 라이프사이클이 필요하지 않은 정보
### 객체 이름
* **명확하고 설명적인 이름을 사용하세요**: 객체가 무엇을 나타내는지 분명하게 하세요
* **규칙을 따르세요**: 객체 이름에는 단수를, 컬렉션에는 복수를 사용하세요
* **팀을 고려하세요**: 모두가 이해할 수 있는 이름을 선택하세요

View File

@@ -0,0 +1,94 @@
---
title: 관계 필드
description: 관계 필드를 사용하여 서로 다른 객체의 레코드를 연결하세요.
---
## 관계 유형
### 일대다
객체 A의 하나의 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
**예:** 하나의 회사에는 여러 사람(직원)이 있을 수 있습니다.
### 다대일
객체 A의 여러 레코드는 객체 B의 하나의 레코드에 연결될 수 있습니다.
**예:** 여러 사람이 하나의 회사에 속할 수 있습니다.
### 여러 객체 유형으로의 관계
일부 객체는 관계의 한쪽에서 여러 객체 유형에 연결될 수 있습니다.
**예:** 노트는 동시에 한 사람, 한 회사, 한 기회에 첨부될 수 있습니다. 노트는 "다수" 쪽에 있으며 여러 "하나" 쪽과 연결됩니다.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
마찬가지로, 프로젝트("하나" 쪽)는 여러 사람, 여러 회사, 여러 노트로부터 연결을 받을 수 있습니다.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**가져오기/내보내기 제한 사항**: 여러 객체 유형을 가리키는 관계는 CSV 가져오기/내보내기에서 아직 지원되지 않습니다. 이는 로드맵에 포함되어 있습니다.
</Warning>
### 다대다
객체 A의 여러 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
**예:** 여러 사람은 여러 프로젝트에 연결될 수 있으며, 그 반대도 가능합니다.
다대다 관계는 **연결 객체** 패턴을 사용합니다: 양쪽을 연결하는 중간 객체. 연결 관계 기능을 사용하면 Twenty는 중간 객체를 UI에서 숨기고 최종 연결된 레코드를 직접 표시합니다.
<Warning>
**베타 기능**: 사용하려면 **Settings → Community → Features**에서 연결 관계를 활성화해야 합니다.
</Warning>
자세한 단계별 가이드는 [다대다 관계 생성 방법](/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations)을 참조하세요.
## 관계 필드 만들기
1. **설정 → 데이터 모델**로 이동
2. 관계를 추가하려는 객체를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. 필드 유형으로 **관계**를 선택합니다.
5. 연결할 대상 객체를 선택합니다.
6. 관계 설정을 구성합니다:
* **원본 객체의 필드 이름**: 현재 편집 중인 객체에 있는 관계 필드의 이름
* **대상 객체의 필드 이름**: 대상 객체에 표시될 관계 필드의 이름
* 관계 유형(일대다, 다대일)
7. **저장** 클릭
## 표준 관계
Twenty에는 표준 객체 간에 사전 구성된 관계가 제공됩니다:
| 원본 객체 | 대상 객체 | 관계 유형 |
| ----- | ----- | ----- |
| 사람들 | 회사 | 다대일 |
| 기회 | 회사 | 다대일 |
| 기회 | 사람들 | 다대일 |
## 모범 사례
### 관계 계획
* **데이터 모델을 매핑하세요**: 생성하기 전에 관계를 계획합니다
* **방향을 고려하세요**: 어느 객체가 관계를 "소유"하는지 생각하세요
* **순환 의존성을 피하세요**: 데이터 모델을 깔끔하게 유지하세요
### 관계 이름 지정
* **명확한 이름을 사용하세요**: 관계가 무엇을 나타내는지 분명하게 하세요
* **일관성을 유지하세요**: 관계 전반에서 유사한 명명 패턴을 사용하세요
* **양쪽을 고려하세요**: 관계의 양쪽에 적절한 이름을 지정하세요
### 성능
* **과도한 관계 설정은 피하세요**: 관계가 너무 많으면 워크스페이스가 느려질 수 있습니다
## 제한 사항
* **관계를 삭제**하면 링크는 제거되지만 관련 레코드는 삭제되지 않습니다
* **순환 관계**는 데이터 무결성을 위해 피해야 합니다

View File

@@ -0,0 +1,72 @@
---
title: 사용자 정의 필드 생성
description: 모든 객체에 사용자 정의 필드를 추가하는 단계별 가이드.
---
사용자 정의 필드를 사용하면 비즈니스에 특화된 정보를 수집할 수 있습니다. 표준이든 사용자 정의이든 모든 객체에 추가할 수 있습니다.
## 단계
1. **설정 → 데이터 모델**로 이동
2. 필드를 추가하려는 객체를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. **필드 유형**을 선택합니다(모든 유형은 [필드](/l/ko/user-guide/data-model/capabilities/fields)에서 확인하세요)
5. **필드 이름**과 선택적 설명을 입력합니다
6. 필드별 설정을 구성합니다(아래 참조)
7. **저장** 클릭
**빠른 방법:** 어떤 테이블 뷰에서든 열 헤더 끝의 \*\*+\*\*를 클릭 → **필드 사용자 지정**.
## 뷰에서 필드 표시
새 필드는 자동으로 표시되지 않습니다. 표시하려면:
1. 객체의 테이블 뷰를 엽니다
2. **옵션 → 필드**를 클릭합니다
3. 해당 필드 옆의 **눈 아이콘**을 클릭하여 표시합니다
4. 드래그하여 순서를 변경합니다
## 구성 옵션
### 선택/다중 선택의 경우
1. 옵션을 만들려면 **+ 옵션 추가**를 클릭합니다
2. 원한다면 **기본 옵션**을 설정합니다
3. 드래그하여 옵션 순서를 변경합니다
<Note>
**가져오기에는 API 이름을 사용하세요.** API 이름을 보려면 설정에서 **고급 모드**를 활성화하세요. [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)을 참조하세요.
</Note>
### 통화 필드의 경우
**기본 통화**(USD, EUR 등)를 새 레코드에 대해 설정합니다
### 전화 필드의 경우
새 전화번호에 미리 입력될 **기본 국가 코드**를 설정합니다.
### 필드를 고유하게 만들기
레코드 전체에서 중복 값을 방지하려면 **고유**를 전환합니다.
<Note>
중복이 존재하면(삭제된 레코드를 포함) 오류가 발생합니다. 먼저 중복을 정리하세요.
</Note>
### 기본값 설정
선택 필드의 경우 새 레코드에서 미리 선택될 옵션을 지정할 수 있습니다. 체크박스 필드의 경우 기본으로 선택됨 또는 선택 해제 상태를 설정합니다.
## 필드 비활성화
1. **설정 → 데이터 모델**로 이동
2. 필드를 찾습니다
3. **⋮ → 비활성화**를 클릭합니다
데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
## 관련 항목
* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형 설명
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,51 @@
---
title: 사용자 정의 객체 생성
description: Twenty에서 사용자 정의 객체를 생성하는 단계별 가이드.
---
사용자 정의 객체를 사용하면 표준 객체에서 다루지 않는, 비즈니스에 고유한 정보를 저장할 수 있습니다. 예: 프로젝트, 제품, 티켓 또는 리스팅.
<Note>
**객체가 필요한지 필드가 필요한지 확신이 없나요?** 자세한 내용은 [데이터 모델 이해](/l/ko/user-guide/data-model/overview)를 참조하세요.
</Note>
## 단계
1. **설정 → 데이터 모델**로 이동
2. **+ 객체 추가**를 클릭합니다
3. 다음을 입력하세요:
* **단수 이름**(예: "Listing")
* **복수 이름**(예: "Listings")
* **아이콘**
* **설명** (선택 사항)
4. **저장** 클릭
객체가 즉시 사이드바에 표시됩니다.
## 다음: 필드 추가
새 객체는 기본 필드로 시작합니다. 필요한 데이터를 수집할 수 있도록 사용자 정의 필드를 추가하세요:
1. **설정 → 데이터 모델**에서 객체를 선택합니다
2. **+ 새 필드**를 클릭합니다
3. 필드 유형을 선택하고 구성한 뒤 저장합니다
필드 유형과 구성에 대한 자세한 내용은 [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)을 참조하세요.
## 다른 객체와 연결하기
객체를 사람, 회사 또는 다른 객체와 연결하려면 관계 필드를 생성하세요. [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)을 참조하세요.
## 객체 비활성화
객체가 더 이상 필요하지 않은 경우:
1. **설정 → 데이터 모델 → 원하는 오브젝트 → 설정**으로 이동합니다
2. **비활성화** 버튼을 클릭합니다
객체는 숨겨지지만 데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
## 관련 항목
* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체 vs 사용자 정의 객체
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,175 @@
---
title: 다대다 관계 만들기
description: 정션 오브젝트를 사용하여 양쪽에서 여러 항목이 서로 연결될 수 있는 레코드를 연결합니다.
---
다대다 관계를 사용하면 양쪽에서 여러 레코드를 연결할 수 있습니다. 예: 여러 사람은 여러 프로젝트에서 작업할 수 있으며, 각 프로젝트에는 많은 사람이 포함될 수 있습니다.
<Warning>
**베타 기능**: 정션 관계는 현재 베타 단계입니다. 이 가이드를 따르기 전에 **Settings → Community → Features**에서 이를 활성화하세요.
</Warning>
<Note>
이 기능을 사용하려면 **Advanced mode**도 활성화되어 있어야 합니다(설정 사이드바 왼쪽 하단의 토글).
</Note>
## 다대다 관계를 사용할 때
관계의 양쪽 모두에 여러 연결이 있을 수 있을 때 다대다를 사용하세요:
| 관계 | 예시 |
| --------- | ---------------------------------------------------- |
| 사람 ↔ 프로젝트 | 한 사람은 여러 프로젝트에서 작업하고, 하나의 프로젝트에는 여러 팀원이 있습니다. |
| 회사 ↔ 태그 | 하나의 회사에는 여러 태그가 있을 수 있으며, 하나의 태그는 여러 회사에 적용될 수 있습니다. |
| 제품 ↔ 주문 | 하나의 제품은 여러 주문에 포함될 수 있으며, 하나의 주문에는 여러 제품이 포함됩니다. |
## 작동 방식
Twenty는 다대다 관계에 **정션 오브젝트** 패턴을 사용합니다. 정션 오브젝트는 두 객체 사이에 위치하여 연결을 보관합니다:
```
People ←→ Project Assignments ←→ Projects
```
**Project Assignments** 오브젝트(정션)에는 다음이 있습니다:
* 사람에 대한 관계(다대일)
* 프로젝트에 대한 관계(다대일)
정션 관계 토글을 활성화하면, Twenty는 중간 정션 레코드를 표시하지 않고 연결된 레코드를 직접 표시합니다.
## 사전 준비
1. **베타 기능에서 Junction Relations 활성화**: **Settings → Community → Features**로 이동하여 **Junction Relations**를 활성화하세요
2. **Advanced mode 활성화**: 설정 사이드바 왼쪽 하단에서 **Advanced mode**를 켭니다
3. 데이터 모델을 계획하세요:
* 어떤 두 오브젝트를 연결하나요?
* 정션 오브젝트의 이름은 무엇으로 할까요?
## 1단계: 정션 오브젝트 만들기
먼저, 연결을 보관할 중간 오브젝트를 만드세요.
1. **설정 → 데이터 모델**로 이동
2. **+ 객체 추가**를 클릭합니다
3. 설명을 담은 이름을 지정하세요(예: "Project Assignment", "Team Member", "Product Order")
4. "이름 필드 생성을 건너뛰기"를 켭니다
<img src="/images/user-guide/fields/new-pivot-object.png" alt="새 피벗 오브젝트" />
5. **저장**을 클릭합니다
<Tip>
**명명 규칙**: "Project Assignment" 또는 "Team Membership"처럼 관계를 설명하는 이름을 사용하세요. 이렇게 하면 데이터 모델을 더 쉽게 이해할 수 있습니다.
</Tip>
## 2단계: 오브젝트와 정션 간 관계 만들기
두 개의 오브젝트 각각에서 정션 오브젝트로 관계 필드를 추가합니다.
### 첫 번째 관계(오브젝트 A → 정션)
1. **Settings → Data Model**에서 첫 번째 오브젝트를 선택하세요
2. **+ 관계 추가**를 클릭합니다
3. 정션 오브젝트를 선택하세요(예: "Project Assignments")
4. 관계 유형을 **One-To-Many**로 설정합니다(한 사람이 여러 할당에 연결될 수 있음)
5. 필드 이름 지정:
* People의 필드: 예: "Project Assignments"
* 정션의 필드: 예: "Person"
6. **저장**을 클릭합니다
### 두 번째 관계(오브젝트 B → 정션)
1. **Settings → Data Model**에서 두 번째 오브젝트를 선택하세요
2. **+ 관계 추가**를 클릭합니다
3. 정션 오브젝트를 선택하세요(예: "Project Assignments")
4. 관계 유형을 **One-To-Many**로 설정합니다(하나의 프로젝트가 여러 할당에 연결될 수 있음)
5. \*\*"This is a relation to a Junction Object"\*\*를 활성화하세요
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
6. 필드 이름 지정:
* 정션의 필드: 예: "Project"
* Projects의 필드: 예: "Team Members"
7. **저장**을 클릭합니다
## 3단계: 정션 관계 표시 구성
이제 중간 정션 오브젝트를 건너뛰고 연결된 레코드를 직접 표시하도록 소스 오브젝트를 구성하세요.
1. **설정 → 데이터 모델**로 이동
2. 첫 번째 오브젝트를 선택하세요(예: "People")
3. 정션 오브젝트를 가리키는 관계 필드(예: "Project Assignments")를 찾으세요
4. 클릭하여 필드를 편집하세요
5. \*\*"This is a relation to a Junction Object"\*\*를 활성화하세요
6. **Target relation**을 선택하세요(예: "Project" — 반대편을 가리키는 정션의 필드)
7. **저장**을 클릭합니다
## 결과
구성 후:
* **Person** 레코드에서는 "Project Assignments" 필드가 할당 레코드가 아니라 **Projects**를 직접 표시합니다
* **Project** 레코드에서는 "Team Members" 필드가 **People**를 직접 표시합니다
정션 오브젝트는 여전히 존재하며 연결을 저장하지만, UI는 더 깔끔한 다대다 보기를 제공합니다.
## 예: People ↔ Projects
전체 단계별 안내는 다음과 같습니다:
### 정션 오브젝트 만들기
* 이름: **Project Assignment**
* 설명: "사람을 작업 중인 프로젝트에 연결합니다"
### 관계 추가
1. **People → Project Assignment**
* 유형: One-to-Many
* People의 필드: "Project Assignments"
* Assignment의 필드: "Person"
2. **Projects → Project Assignment**
* 유형: One-to-Many
* Projects의 필드: "Team Members"
* Assignment의 필드: "Project"
### 정션 표시 구성
1. **People** 오브젝트에서:
* "Project Assignments" 필드를 편집하세요
* 정션 토글을 활성화하세요
* 대상: "Project"
2. **Projects** 오브젝트에서:
* "Team Members" 필드를 편집하세요
* 정션 토글을 활성화하세요
* 대상: "Person"
### 사용하기
* Person 레코드를 열면 → 해당 Projects를 바로 확인할 수 있습니다
* Project 레코드를 열면 → 팀원을 바로 확인할 수 있습니다
* 양쪽 어디에서든 새 연결을 만들 수 있습니다
## 연결에 추가 데이터 추가하기
정션 오브젝트는 실제 오브젝트이므로, 관계에 대한 정보를 저장할 사용자 정의 필드를 추가할 수 있습니다:
* **역할**: "Developer", "Designer", "Manager"
* **시작일**: 해당 인원이 프로젝트에 참여한 시점
* **할당 시간**: 이 프로젝트의 주간 시간
이 데이터를 확인하려면 정션 오브젝트로 직접 이동하거나 API를 통해 조회하세요.
## 제한 사항
* **CSV 가져오기/내보내기**: 다대다 관계를 직접 가져오기는 지원되지 않습니다. 대신 정션 오브젝트로 레코드를 가져오세요.
* **필터**: 다대다 관계로 필터링하는 경우 옵션이 제한될 수 있습니다.
## 관련 항목
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 관계 유형 설명
* [사용자 정의 오브젝트 만들기](/l/ko/user-guide/data-model/how-tos/create-custom-objects) — 오브젝트 생성 방법
* [관계 필드 만들기](/l/ko/user-guide/data-model/how-tos/create-relation-fields) — 기본 관계 설정

View File

@@ -0,0 +1,70 @@
---
title: 관계 필드 만들기
description: 관계 필드를 사용하여 객체를 연결하는 단계별 가이드.
---
관계 필드는 서로 다른 객체의 레코드를 연결합니다—예: 사람을 회사에 연결.
<Note>
**관계 이름은 생성 후 변경할 수 없습니다** (API에 영향을 줍니다). 이름을 신중하게 계획하세요.
</Note>
## 시작하기 전에
다음을 결정하세요:
* 어떤 객체를 연결하나요? (예: 사람 → 회사)
* 어느 쪽이 "일(1)" 측인가요? (예: 회사)
* 어느 쪽이 "다수" 측인가요? (예: 사람 — 많은 사람이 한 회사에서 근무합니다)
* 각 측의 필드 이름을 무엇으로 지정할까요?
관계 유형에 대한 설명은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)를 참고하세요.
## 단계
1. **설정 → 데이터 모델**로 이동
2. 관계를 만들 객체(보통 "다수" 측)를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. 필드 유형으로 **관계**를 선택합니다.
5. **대상 객체**를 선택합니다.
6. **일대다** 또는 **다대일**을 선택합니다.
7. 관계의 **양쪽**에 대한 필드 이름을 입력합니다.
8. **저장** 클릭
## 예: 사람 → 회사
* **설정 → 데이터 모델 → 사람**으로 이동
* 관계 필드를 추가합니다.
* 대상: **회사**
* 유형: **다대일**
* 사람 측의 필드: **회사**
* 회사 측의 필드: **직원**
이제 각 사람을 회사에 연결할 수 있고, 각 회사에는 연결된 사람들이 표시됩니다.
## 관계 비활성화
1. **설정 → 데이터 모델 → 원하는 오브젝트**로 이동
2. 관계 필드를 찾아 클릭합니다
3. **비활성화** 버튼을 클릭합니다
연결은 유지되지만 숨겨집니다. 복원하려면 다시 활성화하세요.
<Note>
**관계를 비활성화해도 레코드는 삭제되지 않습니다.** 둘 사이의 연결만 제거됩니다.
</Note>
## 관계 삭제
1. **설정 → 데이터 모델 → 원하는 오브젝트**로 이동
2. 관계 필드를 찾아 클릭합니다
3. **삭제** 버튼을 클릭합니다
<Note>
사용자 지정 관계에만 적용됩니다. 표준 관계는 비활성화만 할 수 있습니다.
</Note>
## 관련 항목
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 유형과 제한사항
* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — 연결된 레코드를 대량으로 가져오기

View File

@@ -0,0 +1,22 @@
---
title: 데이터 모델 사용자 정의하기
description: 데이터 모델 사용자 정의 옵션 개요.
---
Twenty의 데이터 모델은 완전히 사용자 정의할 수 있습니다. 비즈니스에 맞게 객체, 필드, 관계를 생성하세요.
## 빠른 링크
| 원하는 작업... | 가이드 |
| --------- | ----------------------------------------------------------------------- |
| 새 객체 생성 | [사용자 정의 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects) |
| 객체에 필드 추가 | [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) |
| 객체를 서로 연결 | [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields) |
## 자세히 알아보기
* [데이터 모델 이해하기](/l/ko/user-guide/data-model/overview) — 핵심 개념과 계획 팁
* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체와 사용자 정의 객체
* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 객체 연결
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,157 @@
---
title: 데이터 모델 FAQ
description: Twenty의 데이터 모델에 대한 자주 묻는 질문입니다.
---
## 객체 관리
<AccordionGroup>
<Accordion title="사용자 정의 객체를 삭제할 수 있나요?">
예, 사용자 정의 객체는 삭제할 수 있습니다. 먼저 비활성화할 수도 있습니다. 이렇게 하면 데이터는 보존하면서 객체와 그 데이터를 인터페이스에서 숨깁니다.
</Accordion>
<Accordion title="표준 객체(사람, 회사 등)를 삭제할 수 있습니까?">
아니요, 표준 객체는 삭제할 수 없습니다. 비활성화만 할 수 있으며, 인터페이스에서는 숨겨지지만 데이터는 보존됩니다.
</Accordion>
<Accordion title="사용자 정의 객체는 몇 개까지 만들 수 있나요?">
필요한 만큼 사용자 정의 객체와 필드를 만들 수 있으며, 가격은 변동하지 않습니다.
</Accordion>
<Accordion title="표준 객체의 이름을 바꿀 수 있나요?">
표준 객체(사람, 회사, 기회)의 레이블은 변경할 수 있지만, API 이름은 변경할 수 없습니다. 모든 Twenty 워크스페이스에서의 일관성을 위해 API 이름은 고정되어 있습니다.
</Accordion>
<Accordion title="객체의 아이콘을 변경할 수 있나요?">
예, **설정 → 데이터 모델**에서 표준 객체와 사용자 정의 객체 모두의 아이콘을 변경할 수 있습니다.
</Accordion>
<Accordion title="왼쪽 탐색 모음에서 객체 순서를 변경할 수 있습니까?">
아직 안 됩니다. 탐색의 객체 순서는 현재 고정되어 있으며, 이 기능은 향후 릴리스에 계획되어 있습니다.
</Accordion>
<Accordion title="왼쪽 탐색 모음에서 객체를 숨길 수 있습니까?">
모든 활성 객체는 탐색에 나타납니다. **설정 → 데이터 모델**에서 필요 없는 객체를 비활성화할 수 있습니다.
</Accordion>
</AccordionGroup>
## 필드 기능
<AccordionGroup>
<Accordion title="생성 후에 필드 유형을 변경할 수 있나요?">
아니요, 생성 후에는 필드 유형을 변경할 수 없습니다. 다른 유형이 필요하다면 올바른 유형의 새 필드를 만들고 데이터를 마이그레이션한 다음 이전 필드를 비활성화하세요.
</Accordion>
<Accordion title="단수 및 복수 이름이 필요한 이유는 무엇입니까?">
우리의 GraphQL API는 다양한 작업에서 두 형식을 모두 사용합니다:
* 단일 기록 작업을 위한 `createPerson` (단수)
* 대량 작업을 위한 `createPeople` (복수)
단수 및 복수 형식이 동일할 때 제한이 있지만, 개발자 경험을 향상시킵니다.
</Accordion>
<Accordion title="왜 일부 필드 이름은 보호됩니까?">
`Type` 또는 `Application`과 같은 특정 필드 이름은 시스템 사용을 위해 예약되어 있습니다. 대신 `Category` 또는 `Classification`과 같은 대체 이름을 선택하세요.
</Accordion>
<Accordion title="필드를 비활성화하면 어떻게 되나요?">
* 필드는 인터페이스에서 숨겨집니다
* 기존 데이터는 보존됩니다
* API를 통해 해당 필드에 계속 액세스할 수 있습니다
* 기존 관계는 유지되지만 새 관계를 생성할 수는 없습니다
* 필드는 나중에 다시 활성화할 수 있습니다
</Accordion>
<Accordion title="필드를 필수로 설정할 수 있나요?">
현재는 사용자 정의 필드를 필수로 설정할 수 없습니다. 모든 필드는 빈 값을 허용합니다. 필드가 비어 있을 때 알림을 보내거나 동작을 차단하는 워크플로우를 사용해 필수 필드를 강제할 수 있습니다.
</Accordion>
<Accordion title="고유와 필수의 차이는 무엇인가요?">
* **고유**: 두 레코드가 이 필드에 동일한 값을 가질 수 없습니다
* **필수**: 필드에 값이 있어야 합니다(현재 사용자 정의 필드에서는 지원되지 않음)
</Accordion>
<Accordion title="수식 필드를 만들 수 있습니까?">
수식 필드는 **2026년 하반기**에 제공될 예정입니다. 현재는 워크플로를 사용하여 필드 값을 자동으로 계산하고 업데이트할 수 있습니다.
</Accordion>
<Accordion title="내 객체에 중첩 필드를 가질 수 있습니까?">
중첩 필드는 **2026년 하반기**에 제공될 예정입니다. 현재로서는 관련 객체의 필드 값을 가져오려면 워크플로를 사용할 수 있습니다. 예를 들어, 회사의 산업을 사람 기록에 표시하려면 사람에 대한 사용자 정의 필드를 만들고 워크플로를 사용하여 값을 동기화하세요.
</Accordion>
<Accordion title="객체 내에서 필드를 정렬할 수 있습니까?">
예, Settings → Data model → 원하는 객체 → Layout으로 이동한 다음 **Customize record page**를 클릭하세요. 이 버튼이 비활성화되어 있다면, 레코드를 하나 생성해야 합니다.
</Accordion>
</AccordionGroup>
## 관계
<AccordionGroup>
<Accordion title="같은 객체를 가리키는 관계를 만들 수 있나요?">
예! 자기 참조 관계가 지원되며, 계정 계층 구조와 같은 사용 사례에 권장됩니다. 예를 들어, 상위/하위 계정을 추적하기 위해 회사에서 회사로의 관계를 생성하세요.
</Accordion>
<Accordion title="다대다 관계를 만들 수 있습니까?">
다대다 관계는 **2026년 하반기**에 제공될 예정입니다. 현재는 우회 방법으로 두 개의 1대다 관계를 가진 중간 객체를 만드세요.
예를 들어 People과 Projects를 연결(다대다)하려면 "Project Assignments" 객체를 만들고 다음을 포함하세요:
* People에 대한 관계(여러 할당 → 한 사람)
* Projects에 대한 관계(여러 할당 → 한 프로젝트)
</Accordion>
<Accordion title="여러 객체 유형에 대한 관계(Morph 관계)란 무엇인가요?">
이는 하나의 필드를 통해 하나의 객체가 여러 서로 다른 객체 유형과 관계를 맺을 수 있도록 합니다. 예를 들어, 노트는 동시에 사람, 회사, 기회에 첨부될 수 있습니다.
각 노트는 동시에 한 사람, 한 회사, 한 기회에 연결됩니다.
자세한 내용은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)에서 확인하세요.
</Accordion>
<Accordion title="동일한 두 객체 간에 여러 관계를 만들 수 있나요?">
예, 동일한 두 객체 간에 여러 관계를 생성할 수 있습니다. 예를 들어, 회사는 사람에 대해 "Primary Contact"와 "Billing Contact" 관계를 모두 가질 수 있습니다.
</Accordion>
<Accordion title="레코드를 삭제하면 관계는 어떻게 되나요?">
레코드를 삭제하면 관련 레코드에서 관계 링크가 제거됩니다. 관련 레코드 자체는 삭제되지 않습니다.
</Accordion>
<Accordion title="순환 관계를 만들 수 있나요?">
기술적으로는 가능하지만, 순환 관계(A → B → C → A)는 혼란을 초래하고 성능 문제를 일으킬 수 있으므로 피하는 것이 좋습니다.
</Accordion>
</AccordionGroup>
## 접속 및 권한
<AccordionGroup>
<Accordion title="내 데이터 모델을 어디서 보고 편집할 수 있습니까?">
**설정 → 데이터 모델**로 이동하여 모든 객체와 필드를 보고 편집하세요.
</Accordion>
<Accordion title="왜 설정에서 데이터 모델을 볼 수 없습니까?">
워크스페이스 관리자에게 문의하세요. 데이터 모델 접근은 보통 관리자에게만 제한됩니다.
</Accordion>
</AccordionGroup>
## 데이터 관리
<AccordionGroup>
<Accordion title="보유할 수 있는 레코드 수에 제한이 있나요?">
레코드 수에 대한 하드 제한은 없습니다. 하지만 매우 큰 데이터 세트는 일부 보기에서 성능에 영향을 줄 수 있습니다. 필터와 보기를 사용해 대규모 데이터 세트를 효과적으로 관리하세요.
</Accordion>
<Accordion title="사용자 정의 객체로 데이터를 가져올 수 있나요?">
예, 사용자 정의 객체를 포함한 모든 객체에 CSV 데이터를 가져올 수 있습니다. 가져오기 프로세스는 사용자 정의 필드에 대한 필드 매핑을 지원합니다. 자세한 내용은 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
</Accordion>
<Accordion title="내 데이터 모델 구성 정보를 내보낼 수 있나요?">
현재 데이터 모델 구성에 대한 내장된 내보내기 기능은 없습니다. 워크스페이스 간에 데이터 모델을 마이그레이션해야 하는 경우 지원팀에 문의하세요.
</Accordion>
<Accordion title="하나의 객체는 필드를 최대 몇 개까지 가질 수 있나요?">
하나의 객체가 가질 수 있는 필드 수의 최대값은 Postgres 제한에 따라 기존 필드와 삭제된 필드를 모두 포함해 1600개입니다. 1600개 필드 한도에 도달하면 이는 당사의 공정 사용(Fair Usage) 정책에 해당하므로 Twenty에서는 워크스페이스를 수정해 주지 않는다는 점에 유의하세요.
</Accordion>
</AccordionGroup>
## 추가 도움이 필요하십니까?
복잡한 데이터 모델 설계를 지원받으려면 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.

View File

@@ -0,0 +1,177 @@
---
title: 데이터 모델
description: 데이터 모델이 무엇이며 귀사의 비즈니스에 맞는 모델을 설계하는 방법을 알아보세요.
---
## 데이터 모델이란 무엇입니까?
데이터 모델은 CRM에서 정보가 조직되는 방식을 정의하는 구조입니다. 고객 데이터의 **청사진**이라고 생각하세요 — 한 번 설계한 다음 실제 데이터로 채웁니다.
## 핵심 개념
### 개체
**개체**는 CRM에서 데이터의 주요 범주입니다. 각 개체는 추적하려는 항목의 유형을 나타냅니다.
Twenty에는 표준 개체가 기본으로 제공됩니다:
* **People** — 개인(연락처, 리드, 파트너)
* **Companies** — 조직
* **Opportunities** — 거래 또는 판매
* **Notes** — 기록에 첨부된 노트
* **Tasks** — 기록에 연결된 할 일
비즈니스에 특화된 항목에 대해 **사용자 지정 개체**를 생성할 수도 있습니다(예: Projects, Subscriptions, Events).
### 필드
**필드**는 각 개체를 설명하는 속성 또는 특성입니다. 실제 정보를 저장합니다.
예를 들어, **People** 개체에는 다음과 같은 필드가 있습니다:
* 이름
* 이메일
* 전화
* 직책
* Company (Companies 개체에 대한 관계)
필드에는 다양한 **유형**이 있습니다: 텍스트, 숫자, 날짜, 선택, 다중 선택, 관계 등. 어떤 개체에도 사용자 지정 필드를 추가할 수 있습니다.
### 기록
**기록**은 개체 내의 개별 항목으로, 사용자가 생성하고 관리하는 실제 데이터입니다.
예를 들어:
* "John Smith"는 People 개체의 **기록**입니다
* "Acme Corp"는 Companies 개체의 **기록**입니다
**비유:**
| 데이터 모델 개념 | 현실 세계 비유 |
| --------- | ---------------- |
| **개체** | 책의 섹션(범주) |
| **필드** | 스프레드시트의 열(속성) |
| **기록** | 스프레드시트의 행(실제 항목) |
데이터 모델(개체 + 필드)을 한 번 설계한 후, 그 구조 내에서 많은 기록을 생성합니다.
## 왜 데이터 모델을 사용자 정의하나요?
모든 비즈니스는 다르게 작동합니다. 데이터 모델을 사용자 정의하면 경직된 시스템에 프로세스를 억지로 맞추는 대신, **귀하의** 프로세스에 맞춰 Twenty를 구성할 수 있습니다.
Twenty는 완전한 유연성을 제공합니다:
* 필요한 만큼 사용자 지정 개체를 생성하세요
* 무제한의 사용자 지정 필드를 추가하세요
* 사용자 정의 여부와 상관없이 가격은 변하지 않습니다
## 데이터 모델 설계 팁
### 1. 핵심 개체부터 시작하세요
업무에 사용하는 핵심 개념을 식별하세요. Twenty에서 이미 제공하는 항목:
* **People** — 귀하의 연락처
* **Companies** — 귀하의 조직
* **Opportunities** — 귀하의 거래
추가로 필요한 것이 무엇인지 생각해 보세요:
* Stripe에는 `Subscriptions` 개체가 필요합니다
* Airbnb에는 `Trips` 개체가 필요합니다
* 엑셀러레이터에는 `Batches` 개체가 필요합니다
### 2. 새 개체 대신 변형에는 필드를 사용하세요
어떤 것이 기존 개체의 특성에 불과하다면 **필드**로 만드세요.
**다음의 경우 필드를 사용하세요:**
* 카테고리와 레이블(예: Companies의 `Industry`)
* 상태 값(예: Opportunities의 `Stage`)
* 속성과 특성
### 3. 독립적으로 존재한다면 개체를 만드세요
그 개념에 자체 수명주기, 속성 또는 관계가 있다면 개체로 만들어야 합니다.
**다음의 경우 개체를 만드세요:**
* **Projects** — 기한, 소유자 및 작업이 있음
* **Subscriptions** — 회사, 제품 및 인보이스를 연결함
* **Events** — 참가자와 후속 조치를 포함함
이들은 자신의 데이터와 관계를 가지고 있기 때문에 단일 필드를 초과합니다.
### 4. 기록의 개수가 정해져 있지 않은 경우 개체를 만드세요
어떤 항목이 여러 번 연결될 수 있고 몇 개인지 알 수 없다면, 개체를 사용하세요.
**나쁜 접근법:**
`Product 1`, `Product 2`, `Product 3` 같은 필드 만들기...
**좋은 접근법:**
`Products` 개체를 만들고 레코드와 연결하세요. 이렇게 하면 모델을 변경하지 않고도 하나, 두 개, 또는 백 개의 제품을 지원할 수 있습니다.
### 5. 먼저 단순하게 유지하세요
필드부터 시작하세요. 한계를 느낄 때에만 새 객체로 전환하세요:
* 하나의 객체에 필드가 너무 많음
* 분리되어야 할 레코드가 반복됨
* 모델에 잘 맞지 않는 관계
## 사람, 회사 및 기회에 대한 특별 참고 사항
<Warning>
**이메일 및 캘린더 동기화는 사람, 회사 및 기회에서만 작동합니다.**
메일함/캘린더에서 동기화된 이메일과 미팅에 액세스할 수 있는 유일한 객체입니다. 가능한 한 많이 사용할 것을 권장합니다.
</Warning>
**모범 사례:**
* 사람 카테고리가 필요하다면 새 객체가 아닌 필드를 사용하세요
* 예: 별도의 객체를 만드는 대신 값이 "Prospect"와 "Partner"인 `Person Type` 필드를 사용하세요
* 필터링을 위해 서로 다른 **뷰**를 만드세요: 하나는 파트너를, 다른 하나는 잠재 고객을 표시합니다
**모든 레코드에 적용되지 않는 필드가 있어도 괜찮습니다.** 예: `Person Type = Partner`일 때만 적용되는 사람 객체의 `Referral Link` 필드. 관련 없는 뷰에서는 이 필드를 숨기세요.
## 선택을 안내하는 질문들
자문해 보십시오:
<Check>이것이 이미 보유한 것의 단순한 속성인가요, 아니면 자체 속성이 필요한가요?</Check>
<Check>레코드당 이것을 여러 개 추적해야 하는데, 그 개수를 미리 알 수 없을 때가 있나요?</Check>
<Check>이 개념이 하나가 아닌 여러 다른 객체와 연결되나요?</Check>
<Check>자체 라이프사이클(단계, 시작/종료 날짜)이 있나요?</Check>
이 중 하나 이상에 "예"라고 답했다면, 아마도 새 객체가 필요할 때입니다.
## 데이터 모델에 액세스하기
1. 왼쪽 사이드바에서 **설정**으로 이동하세요
2. **데이터 모델**을 클릭하세요
3. 모든 객체(표준 및 사용자 지정)를 확인하세요
4. 임의의 객체를 클릭하여 해당 필드를 보고 편집하세요
<Note>
**설정에서 데이터 모델이 보이지 않나요?**
데이터 모델에 대한 액세스는 보통 관리자에게만 제한됩니다. 액세스가 필요하면 워크스페이스 관리자에게 문의하세요.
</Note>
## 다음 단계
데이터 모델을 계획한 후:
* [사용자 지정 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects)
* [사용자 지정 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)
* [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)
## 도움이 필요하신가요?
<Tip>
데이터 모델 설계를 도와드릴까요? 오브젝트, 필드, 그리고 관계를 설계하고 구축해 줄 [공인 Twenty 파트너를 찾아보세요](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-data-model).
</Tip>

View File

@@ -0,0 +1,104 @@
---
title: 용어집
description: Twenty에서 사용되는 필수 용어에 익숙해지십시오.
---
## API
API(응용 프로그래밍 인터페이스)는 Twenty를 다른 소프트웨어 시스템과 연결하고 맞춤형 통합을 구축할 수 있게 합니다.
## 앱
앱은 데이터 모델과 로직 함수를 정의할 수 있도록 코드로 작성된 사용자 정의 확장 기능입니다. 이를 통해 개발자는 여러 워크스페이스에 걸쳐 배포할 수 있는 재사용 가능한 사용자 정의 기능을 만들 수 있습니다.
## 코드 액션
코드 액션은 데이터 변환, 계산 수행, 기본 제공 액션으로는 불가능한 복잡한 로직 실행을 위해 사용자 정의 JavaScript를 작성할 수 있게 해주는 워크플로 단계입니다.
## 명령 메뉴
명령 메뉴는 신속한 작업 수행, 기록 생성 및 작업 공간 내비게이션을 효율적으로 도와주는 빠른 접근 인터페이스입니다. (Mac에서는 `Cmd + K`, Windows에서는 `Ctrl + K`로 열림)
## 회사 및 사람들
CRM에는 두 가지 기본 유형의 기록이 있습니다:
* `회사`는 기업이나 조직을 나타냅니다.
* `사람들`은 현재 및 잠재 고객 또는 클라이언트를 나타냅니다.
## 사용자 정의 필드
사용자 정의 필드는 비즈니스 요구 및 프로세스에 특정한 정보를 캡처하기 위해 생성하는 데이터 필드입니다.
## 데이터 모델
데이터 모델은 CRM에서 정보가 어떻게 구성되는지를 정의하는 구조로, 어떤 객체가 존재하는지, 그 속성(필드), 그리고 서로 어떻게 관련되는지를 포함합니다.
## 즐겨찾기
즐겨찾기는 빠른 접근을 위해 표시해 둔 기록으로, 사이드바에 표시되어 중요한 데이터로 즉시 이동할 수 있게 합니다.
## 필드
필드는 특정 엔터티에 대한 특정 데이터가 저장되는 영역을 나타냅니다.
## 반복자
이터레이터는 항목 배열을 순회하여 목록의 각 항목에 대해 후속 액션을 실행하는 워크플로 액션입니다.
## 칸반
`칸반`은 카드와 열을 사용하여 비즈니스 프로세스를 추적하는 시각적 방법입니다. 각 열은 프로세스의 단계를 나타내며(예: 신규, 진행 중, 성사, 실패), 기록이 진행됨에 따라 단계들을 거쳐 이동합니다.
## 객체
객체는 CRM에서 특정 유형의 엔터티(예: 사람, 회사, 기회)를 나타내는 데이터 구조입니다. 오브젝트는 기본 제공 표준 오브젝트일 수도 있고, 사용자 정의 오브젝트(사용자가 생성한 오브젝트)일 수도 있습니다.
## 기회
Twenty CRM에서 기회란 계정 또는 연락처와의 잠재적 거래 또는 판매를 의미합니다.
## 기록
기록은 특정 계정 또는 연락처와 같은 객체의 인스턴스입니다.
## 관계 필드
관계 필드는 다른 객체들 간의 연결을 만들어 주며, 기록을 서로 연결할 수 있게 합니다. (예: 사람을 회사에 연결)
## 표준 필드
표준 필드는 객체에 기본 제공되는 미리 만들어진 데이터 필드로, 모든 워크스페이스에서 공통 기능을 제공합니다.
## 작업
Twenty CRM의 작업은 연락처, 계정 또는 기회와 관련된 할당된 활동입니다.
## 트리거
트리거는 워크플로의 시작점으로 — 자동화를 시작하는 이벤트나 조건입니다. 예로는 레코드 생성, 레코드 업데이트, 웹후크, 예약된 시간 등이 있습니다.
## 보기
보기를 사용해 각 보기마다 필터, 레이아웃, 정렬 옵션을 설정하여 기록의 표시 방식을 사용자 지정할 수 있습니다.
## 업서트
업서트는 "update"와 "insert"를 결합한 작업으로 — 일치 항목이 있으면 기존 레코드를 업데이트하고, 없으면 새 레코드를 생성합니다.
## 웹훅
웹후크는 특정 이벤트가 발생할 때 Twenty에서 다른 애플리케이션으로 전송되는 자동화된 메시지로, 실시간 데이터 동기화를 가능하게 합니다.
## 워크플로우
워크플로우는 특정 조건에 따라 작업을 자동으로 트리거하여 반복적인 작업 및 비즈니스 프로세스를 자동화하는 데 도움이 되는 프로세스입니다.
## 워크스페이스
`워크스페이스`는 일반적으로 Twenty를 사용하는 회사를 나타냅니다. Twenty에 팀원들이 추가하는 모든 기록과 데이터를 보유합니다.
일반적으로 회사에서 직원 이메일 주소에 사용하는 단일 도메인 이름을 가집니다.
## 워크스페이스 구성원
워크스페이스 구성원은 팀에서 워크스페이스에 접근할 수 있는 Twenty 사용자입니다. 이들은 기록의 소유자 또는 담당자로 지정될 수 있습니다.

View File

@@ -0,0 +1,17 @@
---
title: 구현 서비스
description: 시작을 위한 지원이 필요하시든 고급 맞춤 설정을 원하시든, 저희에게는 해결책이 있습니다.
---
## 구현 파트너
인증된 Twenty 파트너와 협력하여 고급 커스터마이징, 통합 및 전담 구축 지원을 받아 보세요.
<CardGroup cols={2}>
<Card title="인증된 파트너 둘러보기" icon="magnifying-glass" href="https://twenty.com/partners/list?ref=docs-implementation-services">
파트너를 찾아 바로 문의하세요 — 지역, 언어, 전문 분야로 필터링할 수 있습니다.
</Card>
<Card title="Twenty가 매칭해 드립니다" icon="envelope" href="mailto:contact@twenty.com">
필요한 내용을 알려주시면, 적합한 파트너와 연결해 드립니다.
</Card>
</CardGroup>

View File

@@ -0,0 +1,42 @@
---
title: 트웬티란 무엇입니까?
description: Twenty는 비즈니스에 필요한 것을 정확히 만들 수 있도록 기본 구성 요소를 제공하는 오픈 소스 CRM입니다.
---
## 비전
좋은 CRM을 만드는 것은 어렵습니다. 왜냐하면 그것은 균형 잡기의 행위이기 때문입니다.
비즈니스마다 요구 사항은 간단히 보이지만 각자의 필요는 다릅니다.
결과적으로 CRM은 너무 기본적이거나 지나치게 많은 것을 시도하지만 어떤 것도 전문적으로 다루지 못하게 됩니다.
처음에 트웬티는 이미 알고 있는 대부분의 CRM과 유사하게 보입니다: 거래를 추적하고 연락처를 조직하고, 작업 및 메모를 관리할 수 있습니다.
**그러나 이를 차별화하는 것은 확장 가능성에 대한 우리의 접근 방식입니다. 우리는 고객의 고유한 비즈니스 문제를 해결할 수 있도록 건축 블록을 제공하는 오픈 플랫폼을 구축하고 있습니다.**
기능 목록보다 보편적인 원칙과 일반적인 패턴을 우선시합니다.
모든 답을 찾으려 하지 않고 사용자가 자신에게 가장 잘 맞는 방식을 찾을 수 있도록 지원합니다.
오픈 소스는 우리의 접근 방식을 지탱하는 기초이며, 트웬티는 커뮤니티와 함께 진화하며 커뮤니티를 위한 것입니다.
## 이점
**사용자 정의 가능:** 비즈니스 요구 사항에 맞도록 설계되었습니다.
**커뮤니티 주도:** 대규모 오픈 소스 커뮤니티에 의해 구축되고 유지 관리됩니다.
**비용 효율적:** 언제든지 자체 호스팅이 가능하므로 벤더 락인이 없습니다.
## 주요 기능
* **캘린더 및 이메일:** 메일함과 캘린더를 동기화하여 CRM 레코드에서 모든 커뮤니케이션을 확인하세요. [자세히 알아보기](/l/ko/user-guide/calendar-emails/overview).
* **데이터 모델:** 고유한 비즈니스 프로세스에 맞게 사용자 지정 객체와 필드를 생성하세요. [자세히 보기](/l/ko/user-guide/data-model/overview).
* **데이터 마이그레이션:** CSV 또는 API를 통해 데이터를 가져오고 내보내세요. [시작하기](/l/ko/user-guide/data-migration/overview).
* **보기 및 파이프라인:** 테이블 보기, 칸반 보드, 영업 파이프라인으로 데이터를 구성하세요. [자세히 보기](/l/ko/user-guide/views-pipelines/overview).
* **워크플로우:** 비즈니스 프로세스를 자동화하고 외부 도구와 통합하세요. [자동화 구축](/l/ko/user-guide/workflows/overview).
* **AI:** AI 기반 기능과 에이전트로 CRM을 강화하세요. [AI 자세히 보기](/l/ko/user-guide/ai/overview).
* **대시보드:** 맞춤형 보고서와 시각화를 통해 성과를 추적하세요. [대시보드 보기](/l/ko/user-guide/dashboards/overview).
* **권한 및 액세스:** 역할 기반 권한을 통해 누가 데이터를 보기, 편집, 관리할 수 있는지 제어하세요. [액세스 구성](/l/ko/user-guide/permissions-access/overview).
* **노트 및 작업:** 더 나은 협업을 위해 레코드에 연결된 노트와 작업을 생성하세요.
* **API 및 웹훅:** 다른 앱과 연결하고 맞춤형 통합을 구축하세요. [통합 시작하기](/l/ko/developers/extend/api).
## 지금 가입하세요
[여기에서 등록하십시오](https://app.twenty.com) 또는 [GitHub에서 기여자로 참여하세요](https://github.com/twentyhq/twenty).

View File

@@ -0,0 +1,77 @@
---
title: 워크스페이스 구성
description: 모든 비즈니스는 다르게 작동합니다. 요구에 맞게 Twenty를 구성하려면 이 3단계부터 시작하세요.
---
<Note>**빠른 성과**: 메일박스를 먼저 연결하는 것부터 시작하세요. 이는 즉각적인 가치를 부여하고 팀이 실제 데이터로 Twenty를 활동 중인 상태로 볼 수 있도록 돕습니다. 설정 → 계정에서 이를 수행할 수 있습니다.</Note>
## 1. 데이터 모델 사용자 정의하기
Twenty는 일상 업무를 가장 잘 지원할 수 있는 데이터 모델을 설계하는 데 필요한 유연성을 제공합니다.
여러 객체 간의 관계를 포함한 모든 유형의 객체 및 필드를 생성할 수 있습니다. 설정 → 데이터 모델에서 이를 할 수 있습니다.
아래 몇 가지 팁이 있습니다:
* **사용자 정의 필드나 사용자 정의 객체의 수에는 제한이 없습니다**. 사용자 정의 객체와 필드를 추가해도 요금을 업그레이드할 필요는 없습니다.
* **People, Companies 및 Opportunities는 메일박스와 캘린더에서 동기화된 이메일 및 회의에 액세스할 수 있는 세 가지 객체입니다**. 필요시 레코드를 분류할 수 있는 필드를 추가하여 가능한 한 많이 사용하는 것을 권장합니다. 다음은 예시입니다:
* 잠재 고객 및 파트너에 대해 People 객체를 사용하는 것이 가장 좋으며, Partner 사용자 정의 객체를 생성하는 대신 People 객체에 `Person Type`이라는 필드를 만드는 것이 좋습니다. Partner 레코드에서는 이 사람과 주고받은 이메일을 확인할 수 없기 때문입니다.
* People에서 파트너를 표시하는 보기와 잠재 고객을 표시하는 다른 보기를 만드세요.
* 두 People은 동일한 이메일 주소를 가질 수 없습니다. 두 Companies는 동일한 도메인을 가질 수 없습니다.
* 사용하지 않으려는 표준 필드와 객체를 비활성화할 수 있습니다.
* 보기에서 필드를 숨길 수 있습니다: 필드를 생성하는 것을 두려워하지 마세요, 전부 다 표시할 필요는 없습니다.
데이터 모델 설계를 배우려면 [이 글](/l/ko/user-guide/data-model/overview)을 읽으세요.
## 2. 데이터 가져오기
기존 데이터를 Twenty에 가져오면 팀이 바로 컨텍스트를 가질 수 있습니다.
### 메일박스 연결하기
워크스페이스 생성 시 이를 수행하지 않았다면, 설정 → 계정에서 **Google 또는 Microsoft 계정**을 연결하세요. 이로써 Twenty는 다음과 같은 작업을 할 수 있습니다:
* 메시지와 회의 가져오기
* 상호 작용을 기반으로 연락처를 자동 생성하기 (선택사항)
* 팀에서 커뮤니케이션 기록을 계속 볼 수 있도록 합니다.
**다른 공급업체를 사용합니까?**
SMTP를 통해 다른 메일박스를 추가하거나 CalDAV를 통해 다른 캘린더를 추가할 수 있습니다. 구성하려면 **설정 → 계정**으로 이동하세요.
### CSV로 데이터 가져오기
Command 메뉴 (`Cmd + K` 또는 `Ctrl + K`)를 사용하여 CSV를 통해 People, Companies, Opportunities 또는 다른 사용자 정의 객체를 가져옵니다.
**주요 지침**:
* 기대되는 형식을 이해하기 위해 샘플 파일을 다운로드해주세요
* 각 파일의 레코드를 10,000개로 제한하세요.
* People의 중복 이메일 또는 Companies의 중복 도메인을 제거하세요.
* 가져오기 전에 오류를 검토하고 수정하세요 (노란색으로 강조 표시된 부분).
Read [this article](/l/ko/user-guide/data-migration/overview) to learn more about data import.
## 3. 첫 번째 뷰 만들기
다른 보기를 만드는 것은 팀이 데이터를 실질적으로 활용할 수 있게 만드는 핵심입니다.
진행 방법은 다음과 같습니다:
* **열 추가 또는 숨기기**
옵션 → 필드(오른쪽 위)를 클릭하여 특정 보기에서 보이는 필드를 관리하세요. 거기서 필드를 표시하거나 숨길 수 있습니다.
* **필드 순서 변경**
옵션 → 필드(오른쪽 위)를 클릭하여 특정 보기에서 필드의 순서를 변경하세요. 끌어다 놓기하여 필드를 재정렬합니다.
* **보기 필터링**
오른쪽 위 필터 사용하여 표시된 레코드를 제한하세요.
* **레코드 정렬**
오른쪽 위 정렬 기능 사용하거나 열 이름을 클릭하여 표시된 레코드를 재정렬하세요.
* **레이아웃 선택**
`단계` 또는 유사한 선택형 필드가 있는 한, **칸반 레이아웃** 또는 **그룹별 목록** 레이아웃으로 전환할 수 있습니다.
* **즐겨찾기로 보기 저장**
여러 보기를 보여주는 드롭다운 메뉴를 사용하여 이를 할 수 있습니다.
## 다음은 무엇입니까?
[워크플로우](/l/ko/user-guide/workflows/overview)를 사용하여 자동화를 시작하세요.

View File

@@ -0,0 +1,48 @@
---
title: 워크스페이스 만들기
description: Twenty에 등록하고, 구독 플랜을 선택하고, 계정을 설정하는 방법에 대한 단계별 가이드를 따르십시오.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 1단계: 등록
1. [Twenty 등록](https://app.twenty.com)으로 이동하세요.
2. 선호하는 등록 방법을 선택하세요:
* Google 계정으로 등록하려면 **Google로 계속**을 선택하십시오.
* Microsoft 계정으로 등록하려면 **Microsoft로 계속**을 선택하십시오.
* 또는, 이메일로 등록하려면 **이메일로 계속**을 선택하십시오.
<VimeoEmbed videoId="927066829" title="동영상 시연" />
## 2단계: 시험 기간 선택하기
두 가지 시험 기간 중 하나를 선택하세요:
### 30일
신용카드 있음
### 7일
신용카드 없음
두 가지 시험 모두 포함:
* 전체 접근
* 무제한 연락처
* 이메일 통합
* 사용자 지정 개체
* API 및 웹훅
"플랜 변경"을 클릭하여 다른 플랜이나 청구 주기를 선택할 수 있습니다.
<img src="/images/user-guide/create-workspace/choose-plan.png" style={{width:'100%'}} />
## 3단계: 결제 확인 및 계정 설정
Stripe를 통한 결제 승인이 완료되면, 작업 공간 및 사용자 프로필을 생성하도록 안내받습니다. 언제든지 구독을 취소할 수 있다는 점을 기억하세요.
## 지원
문의 사항이나 도움이 필요하시면, [contact@twenty.com](mailto:contact@twenty.com)으로 전용 지원팀에 연락하거나 [Discord](https://discord.gg/cx5n4Jzs57)에서 메시지를 보내주세요.

View File

@@ -0,0 +1,84 @@
---
title: Twenty 둘러보기
description: 플랫폼을 탐색하고 다양한 유형의 작업을 수행할 수 있는 위치에 대한 빠른 개요를 얻으십시오.
---
## 주요 레이아웃
화면 중앙은 **레코드가 있는 곳**입니다: 사람, 회사, 영업기회, 작업, 노트, 대시보드, 워크플로우, 그리고 생성한 기타 모든 개체입니다. 여기에서 일상의 작업이 이루어집니다.
그곳에서 **레코드를 보고, 편집하거나 삭제**할 수 있으며, **새로운 보기를 생성**할 수도 있습니다.
<img src="/images/user-guide/home/main-layout.png" style={{width:'100%'}} />
## 내비게이션 바
왼쪽에서는 위에서 아래 순서로 다음을 수행할 수 있습니다:
* 드롭다운 메뉴를 사용하여 여러 작업 공간 간에 전환하거나 새 작업 공간을 만듭니다.
* **검색창을 사용**하세요 (즉시 초점을 맞추려면 `/`를 누르세요)
* **설정** 섹션 열기
* **즐겨찾기 보기**에 직접 액세스할 수 있습니다. 즐겨찾기는 사용자마다 고유합니다.
* 다른 객체 간 전환
* 워크플로우를 사용하여 **자동화를 생성**합니다.
<img src="/images/user-guide/home/navigation-bar.png" style={{width:'100%'}} />
## 명령 메뉴
명령 메뉴는 Twenty에서 **작업에 빠르게 접근할 수 있는 기능을 제공합니다**. 두 가지 방법으로 접근할 수 있습니다:
* **키보드 단축키**: `Cmd + K`(Mac) 또는 `Ctrl + K`(Windows)을 누르세요
* **마우스**: 오른쪽 위 모서리에 있는 세 개의 점을 클릭하세요
그곳에서 다음을 수행할 수 있습니다:
* 새 기록물을 생성
* **CSV를 통해 데이터를 가져오고 내보낼 수 있습니다**
* 새 보기를 생성
* 삭제된 기록에 접근 (Twenty는 소프트 삭제와 하드 삭제를 지원합니다)
* 작업 공간에서 객체에 빠르게 접근할 수 있는 키보드 단축키 보기
<img src="/images/user-guide/home/command-menu.png" style={{width:'100%'}} />
## 검색 표시줄
검색 표시줄은 명령 메뉴를 통해서나 내비게이션 바 상단에서 사용할 수 있으며, 즉시 해당 항목에 포커스를 맞추려면 `/`를 누르세요. 검색은 모든 오브젝트 전반에 걸쳐 동작합니다.
<img src="/images/user-guide/home/search-bar.png" style={{width:'100%'}} />
## 사이드 패널
레코드를 클릭하면 오른쪽에 사이드 패널이 표시됩니다. 다른 페이지로 이동하지 않고도 해당 레코드의 핵심 정보를 빠르게 확인할 수 있습니다. 그곳에서 이 개요를 닫거나 Open 버튼을 클릭하여 이 레코드에 대한 추가 정보를 확인할 수 있습니다.
<img src="/images/user-guide/home/side-panel.png" style={{width:'100%'}} />
## 보기
모든 객체(예: 기회 또는 사람)는 여러 보기를 지원합니다. 객체당 보기 수에는 제한이 없습니다.
주요 레이아웃의 좌측 상단의 드롭다운 메뉴를 사용하여 다양한 보기 간 전환이 가능합니다. 예를 들어:
* 기회를 스테이지별로 추적하기 위해 Kanban 뷰를 사용하세요
* 섹션을 만들고 효율성을 높이기 위해 그룹 보기를 사용하세요
* 특정 기록물에 집중하기 위해 필터를 사용하세요 (예: 지난주에 생성된 리드)
* 필터된 보기를 저장하여 나중에 다시 사용하세요
* 빠르게 액세스할 수 있도록 보기를 즐겨찾기로 지정하세요.
<img src="/images/user-guide/home/view-menu.png" style={{width:'100%'}} />
보기가 처음이라면 [보기 및 파이프라인 가이드](/l/ko/user-guide/views-pipelines/overview)를 읽고 생성 및 사용자 정의 방법을 알아보세요.
## 설정
상단 왼쪽에서 설정을 열어 다음을 수행합니다:
* **메일박스와 캘린더** 계정을 연결하여 이메일과 캘린더를 원활하게 동기화합니다
* **데이터 모델**을 사용자 정의하세요: 사용자 정의 객체, 필드, 관계를 생성합니다
* **API 플레이그라운드에 접속하고 웹훅을 구성하세요**
* **사용자 권한을 관리**하고 작업 공간 접근 제어를 관리합니다
* 팀원을 초대하고 사용자 역할을 관리합니다
* 프로필과 작업 공간 환경설정을 편집합니다
* 청구를 설정하고 워크플로우 크레딧 사용량을 모니터링합니다
* 다가오는 기능을 찾아보고 활성화하세요(Updates → Early Access 아래)
* **지원에 접속**하여 라이브 채팅으로 문의하세요
* **문서를 열어** 사용자 가이드와 개발자 문서를 둘러보세요
<Note>설정 아래에서 해당 섹션이 모두 보이지 않는 경우, 워크스페이스 관리자에게 문의하세요 — 일부 섹션은 액세스가 제한되어 있습니다.</Note>

View File

@@ -0,0 +1,59 @@
---
title: 사용자 안내서
description: 고급 구성과 모범 사례를 위한 리소스인 Twenty 사용자 가이드에 오신 것을 환영합니다.
---
import { CardTitle } from "/snippets/card-title.mdx"
<CardGroup cols={3}>
<Card href="/l/ko/user-guide/data-model/overview" img="/images/user-guide/halftone/data-model.png">
<CardTitle>데이터 모델</CardTitle>
비즈니스 프로세스에 맞게 데이터 모델을 사용자 정의하세요.
</Card>
<Card href="/l/ko/user-guide/data-migration/overview" img="/images/user-guide/halftone/data-migration.png">
<CardTitle>데이터 마이그레이션</CardTitle>
CSV 또는 API를 통해 데이터를 가져오고 내보내세요.
</Card>
<Card href="/l/ko/user-guide/calendar-emails/overview" img="/images/user-guide/halftone/calendar-emails.png">
<CardTitle>캘린더 및 이메일</CardTitle>
팀의 미팅과 이메일을 한곳에 통합하세요.
</Card>
<Card href="/l/ko/user-guide/workflows/overview" img="/images/user-guide/halftone/workflows.png">
<CardTitle>워크플로우</CardTitle>
프로세스를 자동화하고 외부 도구와 통합하세요.
</Card>
<Card href="/l/ko/user-guide/ai/overview" img="/images/user-guide/halftone/ai.png">
<CardTitle>AI</CardTitle>
AI 에이전트로 팀을 강화하세요.
</Card>
<Card href="/l/ko/user-guide/layout/overview" img="/images/user-guide/halftone/layout.png">
<CardTitle>레이아웃</CardTitle>
탐색, 보기 및 레코드 페이지 사용자 지정.
</Card>
<Card href="/l/ko/user-guide/dashboards/overview" img="/images/user-guide/halftone/dashboards.png">
<CardTitle>대시보드</CardTitle>
성과를 추적할 수 있는 실시간 인사이트.
</Card>
<Card href="/l/ko/user-guide/permissions-access/overview" img="/images/user-guide/halftone/permissions.png">
<CardTitle>권한 및 액세스</CardTitle>
Twenty에 대한 역할과 액세스를 관리하세요.
</Card>
<Card href="/l/ko/user-guide/billing/overview" img="/images/user-guide/halftone/billing.png">
<CardTitle>청구</CardTitle>
Twenty의 요금제와 청구 방식에 대해 알아보세요.
</Card>
<Card href="/l/ko/user-guide/settings/overview" img="/images/user-guide/halftone/settings.png">
<CardTitle>설정</CardTitle>
워크스페이스 기본 설정을 구성하세요.
</Card>
</CardGroup>

View File

@@ -0,0 +1,38 @@
---
title: 네비게이션
description: 팀의 작업 방식에 맞게 왼쪽 사이드바를 사용자 지정하세요.
---
왼쪽 사이드바는 Twenty를 탐색하는 기본 방법입니다. 완전히 사용자 지정할 수 있습니다 — 어떤 설정 페이지도 열 필요 없이 워크플로에 맞게 재구성할 수 있습니다.
## 항목 재정렬
사이드바의 어떤 항목이든 끌어서 놓아 위치를 변경하세요. 순서는 사용자별로 저장되므로 팀원마다 자신의 사이드바를 구성할 수 있습니다.
## 폴더
관련 항목을 폴더로 묶으세요. 예를 들어 파이프라인 보기를 담은 "영업" 폴더, 티켓용 "지원" 폴더, 내부 객체용 "운영" 폴더를 만들 수 있습니다.
폴더를 만들려면 사이드바에서 마우스 오른쪽 버튼을 클릭하거나 `+` 버튼을 사용하세요.
## 객체 숨기기
사용하지 않는 객체는 사이드바에서 숨길 수 있습니다. 삭제되는 것이 아닙니다 — 단지 보이지 않게 될 뿐입니다. 설정 → 데이터 모델에서 언제든 다시 표시할 수 있습니다.
## 즐겨찾기
사이드바 상단의 즐겨찾기 섹션에 보기, 레코드 또는 검색을 고정하여 한 번의 클릭으로 접근하세요. 즐겨찾기는 개인별입니다 — 각 사용자가 자신만의 즐겨찾기를 관리합니다.
## 사용자 지정 링크
외부 도구에 대한 링크를 사이드바에 직접 추가하세요. 팀 위키, 다른 도구의 대시보드 또는 팀이 자주 사용하는 모든 URL을 링크하는 데 유용합니다.
## 명령 메뉴
`Cmd+K`(또는 `Ctrl+K`)를 눌러 명령 메뉴를 여세요 — 사이드바를 탐색하지 않고도 어떤 레코드, 보기 또는 작업으로도 빠르게 이동할 수 있는 빠른 액세스 검색창입니다.
## 사이드바 사용자 정의
사이드바를 사용자 정의하려면 사이드바의 "Workspace" 섹션 위에 마우스를 올린 다음 렌치 아이콘을 클릭하세요.
<img src="/images/user-guide/layout/navigation-edit-icon.png" alt="내비게이션 편집 아이콘" />

View File

@@ -0,0 +1,61 @@
---
title: 레코드 페이지
description: 탭과 위젯으로 개별 레코드 상세 페이지의 레이아웃을 사용자 지정하세요.
---
## 개요
Twenty에서 레코드를 열면 상세 페이지는 **탭**과 **위젯**으로 구성됩니다. 둘 다 오브젝트 유형별로 완전히 사용자 지정할 수 있습니다.
## 탭
각 레코드 페이지에는 여러 개의 탭을 둘 수 있습니다 — 브라우저의 탭과 비슷합니다. 이를 사용해 레코드의 다양한 측면을 구성하세요. 예를 들어 회사 레코드에는 개요, 커뮤니케이션, 작업, 파일용 탭이 있을 수 있습니다.
다음을 수행할 수 있습니다:
* 탭 추가 및 제거
* 탭 이름 변경
* 드래그하여 탭 재정렬
* 기본으로 표시할 탭 설정
## 위젯
위젯은 각 탭 내부의 기본 구성 요소입니다. 사용 가능한 위젯 유형:
| 위젯 | 표시 내용 |
| ------------- | ---------------- |
| **필드** | 레코드 필드(그룹 또는 개별) |
| **관련 레코드** | 관계로 연결된 레코드 표 |
| **이메일** | 연결된 계정의 이메일 기록 |
| **캘린더** | 레코드와 연관된 캘린더 이벤트 |
| **타임라인** | 활동 및 이벤트 기록 |
| **작업** | 연관된 작업 |
| **노트** | 서식 있는 텍스트 노트 |
| **파일** | 파일 첨부 |
| **차트** | 관련 레코드의 시각적 데이터 |
| **iFrame** | 임베드된 외부 콘텐츠 |
| **서식 있는 텍스트** | 정적 콘텐츠 또는 설명 |
## 레코드 페이지 맞춤 설정
1. 임의의 레코드를 여세요
2. `Cmd+K`를 누른 다음 "Edit record page layout"을 검색하세요
또는
1. 설정 → 데이터 모델 → 원하는 오브젝트 → 레이아웃으로 이동하세요
2. 해당 오브젝트에서 "레코드 페이지 사용자 지정" 버튼을 클릭하세요
3. 이제 맞춤 설정 모드입니다:
* **위젯 추가** — 위젯 선택기에서
* **위젯 드래그**하여 그리드에서 재배치하세요
* **위젯 크기 조절** — 가장자리를 드래그하세요
* **필드 구성** — 각 위젯에 표시되는 필드를 설정하세요
* **탭 관리** — 추가, 제거, 이름 변경, 재정렬
4. 변경 내용을 저장하세요 — 해당 오브젝트 유형의 모든 레코드에 적용됩니다
## 필드 가시성
필드 위젯에서 어떤 필드를 표시할지와 표시 순서를 제어할 수 있습니다. 이를 통해 집중된 레이아웃을 만들 수 있습니다 — 예를 들어 개요 탭에는 가장 중요한 필드만 표시하고, 자세한 필드는 별도의 탭에 배치할 수 있습니다.

View File

@@ -0,0 +1,45 @@
---
title: 레이아웃
description: Twenty에서 탐색하고 둘러보며 레코드를 보는 방식을 사용자 지정하세요.
---
Twenty의 레이아웃은 세 가지 수준에서 사용자 지정할 수 있습니다: 앱을 탐색하는 방식, 레코드 목록을 살펴보는 방식, 개별 레코드를 열 때 보이는 내용.
## 네비게이션
왼쪽 사이드바는 완전히 사용자 지정할 수 있습니다. 다음을 수행할 수 있습니다:
* **항목 재정렬** — 끌어서 놓기하여 순서를 바꿉니다
* **폴더 만들기** — 관련 개체와 보기를 그룹화합니다
* **개체 숨기기** — 사용하지 않는 개체를 숨깁니다
* **사용자 지정 링크 추가** — 외부 도구에 대한 링크를 추가합니다
* **즐겨찾기 고정** — 보기, 레코드 또는 검색에 빠르게 액세스할 수 있도록 고정합니다
[네비게이션 참조 →](/l/ko/user-guide/layout/capabilities/navigation)
## 보기
보기는 레코드 목록의 표시 방식을 제어합니다. Twenty는 세 가지 유형의 보기를 지원합니다:
| 보기 | 적합한 용도 |
| ------- | ------------------------------------ |
| **테이블** | 여러 레코드를 한 번에 다룰 때 — 스프레드시트 스타일의 행과 열 |
| **칸반** | 파이프라인 추적 — 단계별로 구성된 카드를 끌어서 놓으며 관리 |
| **캘린더** | 시간 기반 계획 — 날짜 필드를 기준으로 레코드를 배치 |
각 보기는 자체 필터, 정렬, 필드 가시성, 그룹화 구성을 저장합니다. 보기는 워크스페이스와 공유하거나 비공개로 유지할 수 있습니다.
[테이블 보기 →](/l/ko/user-guide/views-pipelines/capabilities/table-views) · [칸반 보기 →](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) · [캘린더 보기 →](/l/ko/user-guide/views-pipelines/capabilities/calendar-view)
## 레코드 페이지
레코드를 열면 상세 페이지는 구성 가능한 탭과 위젯으로 구성됩니다. 다음을 수행할 수 있습니다:
* **탭 추가, 제거 및 재정렬** — 모든 레코드 유형에서 수행할 수 있습니다
* **위젯 구성** — 필드, 관련 레코드, 이메일, 타임라인, 캘린더, 작업, 노트, 파일, 차트, iFrames 등
* **위젯 끌어 이동 및 크기 조절** — 그리드 레이아웃에서 수행할 수 있습니다
* **위젯별 필드 가시성 제어**
명령 메뉴(`Cmd+K` → "레코드 페이지 레이아웃 편집")에서 레이아웃 사용자 지정 모드로 진입하세요.
[레코드 페이지 참조 →](/l/ko/user-guide/layout/capabilities/record-pages)

View File

@@ -0,0 +1,125 @@
---
title: 법률 FAQ
description: 자주 묻는 법률 관련 질문입니다.
---
## 데이터 소재지 및 국제 전송
<AccordionGroup>
<Accordion title="우리 워크스페이스의 데이터, 첨부 파일, 로그 및 백업은 어느 국가와 지역에 저장되나요?">
Twenty Cloud는 독일 프랑크푸르트에 위치한 AWS 서버에서 운영됩니다.
</Accordion>
<Accordion title="우리 워크스페이스에 대해 호스팅 지역을 계약으로 고정할 수 있나요?">
호스팅 지역 선택은 2027년부터, 우선 새 워크스페이스를 대상으로 제공될 예정입니다. 사용자는 기존 워크스페이스에 대해서도 추후에 지역 변경을 요청할 수 있게 됩니다. 또는 인스턴스 설정을 도와줄 [our Partners](https://twenty.com/partners/list?categories=HOSTING)에게 문의하실 수도 있습니다.
</Accordion>
<Accordion title="어떤 서브프로세서가 우리 CRM 데이터의 처리 또는 접근을 할 수 있으며, 이들은 어느 국가에 위치해 있나요?">
모든 서브프로세서 목록은 [our Trust Center](https://trust.twenty.com/?tab=subprocessors)에서 확인하실 수 있습니다.
</Accordion>
<Accordion title="국제 데이터 전송에 어떤 보호 조치가 적용되나요?">
EU 표준 계약 조항(EU Standard Contractual Clauses)은 영국 부속서(UK Addendum) 및 스위스 개정 조항과 함께 EU 역외로 이루어지는 국제 데이터 전송에 적용되며, 모든 서브프로세서로의 전송도 포함됩니다.
</Accordion>
</AccordionGroup>
## 데이터 처리 계약(Data Processing Agreement) 및 법적 역할
<AccordionGroup>
<Accordion title="현재 데이터 처리 계약(Data Processing Agreement)은 어디에서 확인할 수 있나요?">
서명된 DPA는 https://{your-domain}/settings/legal/dpa (예: https://getting-started.twenty.com/settings/legal/dpa)에서 생성하실 수 있습니다.
</Accordion>
<Accordion title="우리 회사가 데이터 컨트롤러를 유지하는 동안, Twenty는 CRM에 저장된 머천트 및 연락처 정보에 대해 데이터 프로세서로서 역할을 하나요?">
[Privacy Policy](https://twenty.com/privacy-policy)에 따라, Twenty는 CRM에 저장된 머천트 및 연락처 정보에 대해 데이터 프로세서로서 역할을 하며, 귀사는 데이터 컨트롤러로 남습니다.
</Accordion>
<Accordion title="CRM 콘텐츠가 Twenty 또는 제3자 AI 모델을 학습시키는 데 사용되는 경우가 있나요?">
CRM 콘텐츠는 서브프로세서의 이용약관(Terms and Conditions)에 따라 AI 모델 학습에 사용될 수 있습니다. Twenty는 자체 AI 모델을 보유하고 있지 않으며, Twenty Cloud에서 제공되는 모든 AI 모델은 서브프로세서가 제공합니다.
</Accordion>
<Accordion title="선택적인 AI 처리가 있는 경우, 우리 워크스페이스에 대해 이를 완전히 비활성화할 수 있나요?">
Settings → AI → Models에서 모든 AI 모델을 끄면 AI 기능을 완전히 비활성화할 수 있습니다. 또한 사용자가 AI 채팅 또는 워크플로에서 AI 노드와 적극적으로 상호작용하지 않는 한, 어떤 데이터도 AI로 전송되지 않습니다.
</Accordion>
</AccordionGroup>
## 보안 및 액세스 제어
<AccordionGroup>
<Accordion title="전송 중 및 저장 중에 암호화가 사용되나요? 키 관리 방식은 어떻게 되며, 테넌트 데이터는 어떻게 격리되나요?">
모든 데이터는 전송 중 및 저장 중에 암호화됩니다. 테넌트 데이터는 테넌트별 스키마 구성(schema-per-tenant setup)을 통해 격리되며, 암호화 키는 주기적으로 순환(로테이션)됩니다.
</Accordion>
<Accordion title="어떤 Twenty 직원 또는 서브프로세서가 어떤 목적으로 고객 워크스페이스에 접근할 수 있으며, 해당 접근은 어떻게 승인 및 로그로 기록되나요?">
Twenty의 엔지니어링 및 지원 팀은 문제를 조사하고 해결하기 위해 고객 워크스페이스에 액세스할 수 있습니다. 워크스페이스 소유자가 이를 제어합니다. 지원 액세스는 언제든지 Settings → General → Security에서 비활성화할 수 있으며, 다시 켤 때까지 비활성화 상태로 유지됩니다.
</Accordion>
<Accordion title="우리 데이터에 영향을 미치는 보안 사건이 확정된 후, 귀사의 인시던트 통지 프로세스와 목표 통지 시간은 어떻게 되나요?">
귀하의 데이터에 영향을 미치는 개인정보 침해가 확정된 경우, 우리는 부당한 지체 없이, 그리고 어떤 경우에도 이를 인지한 시점으로부터 48시간 이내에 귀하에게 통지합니다. 당사의 통지에는, 당시 파악된 범위 내에서, 침해의 성격, 영향받은 데이터 및 정보주체의 범주와 대략적인 규모, 발생 가능한 결과, 그리고 취해졌거나 계획 중인 시정 및 완화 조치가 포함됩니다. 조사가 진행되는 동안 추가 업데이트를 제공하겠습니다.
</Accordion>
</AccordionGroup>
## 데이터 보관 및 삭제
<AccordionGroup>
<Accordion title="개별 CRM 레코드가 삭제되는 경우, 언제 활성 시스템에서 제거되나요?">
레코드가 삭제되면 먼저 소프트 삭제되며, 이 단계에서는 복원이 가능합니다. 보존 기간이 만료되거나 사용자가 수동으로 영구 삭제하면, 해당 레코드는 영구적으로 삭제되어 활성 시스템에서 제거됩니다.
</Accordion>
<Accordion title="소프트 삭제된 레코드는 시스템에 얼마나 오래 보관되나요?">
기본적으로 소프트 삭제된 레코드는 14일간 보관되며, 이후 시스템에서 영구적으로 삭제됩니다. 소프트 삭제된 레코드의 보존 기간은 Settings → General → Security에서 변경할 수 있습니다.
</Accordion>
<Accordion title="해당 레코드는 백업이나 기술 로그에 얼마나 오래 남아 있나요?">
삭제된 레코드는 30일 동안 백업에 남아 있으며, 이후 영구적으로 삭제됩니다.
</Accordion>
<Accordion title="워크스페이스가 닫히거나 전체 삭제가 요청되는 경우, 운영 데이터, 첨부 파일, 로그 및 백업에 어떤 구체적인 일정이 적용되나요?">
워크스페이스가 삭제되면, 서비스 종료 후 약 90일 이내에(대부분은 그보다 훨씬 더 빨리) 실시간 시스템에서 해당 데이터가 제거됩니다. 그 후 백업 및 보관용 사본은 추가로 90일 이내에 덮어써지거나 삭제되며, 이 시점 이후에는 모든 데이터가 영구적으로 삭제됩니다. 이 두 기간 내내 데이터는 어떠한 운영상 용도로부터도 분리되어 있습니다. 요청 시, 삭제 작업이 완료되면 서면 인증서를 제공해 드릴 수 있습니다. 전체 약관은 귀하의 Data Processing Agreement 제 4.9조를 참조하십시오.
</Accordion>
<Accordion title="백업 보관 기간 동안, 삭제된 데이터는 운영상 접근 및 사용으로부터 격리되나요?">
네, 백업 보관 기간 동안 삭제된 데이터는 운영상 사용으로부터 격리됩니다.
</Accordion>
<Accordion title="법률, 청구, 사기 방지, 보안 또는 감사 목적을 위해 더 오래 보관되는 데이터 범주가 있나요? 그렇다면, 어떤 데이터 범주가 얼마 동안 보관되나요?">
데이터 보관에 대한 자세한 정보는 [our Trust Center](https://trust.twenty.com/?tab=documents)에 제공된 Data Management and Retention Policy를 요청하여 확인하실 수 있습니다.
</Accordion>
<Accordion title="Twenty가 전체 삭제 요청이 완료되었을 때 서면 확인을 제공할 수 있나요?">
우리는 삭제 요청을 접수하고, 삭제가 완료되면 서면으로 확인을 제공합니다.
</Accordion>
</AccordionGroup>
## 백업 및 복원력
<AccordionGroup>
<Accordion title="백업 주기와 보관 기간은 어떻게 되나요?">
백업은 지속적으로 생성되며, 일 단위 스냅샷이 생성되고, 보존 기간은 30일입니다.
</Accordion>
<Accordion title="Twenty Cloud의 복구 시점 목표(RPO)와 복구 시간 목표(RTO)는 어떻게 되나요?">
RTO와 RPO는 모두 6시간입니다(DPA 기준).
</Accordion>
<Accordion title="복원을 요청하거나 수행하는 절차는 어떻게 되나요?">
복원을 요청하려면 지원 채팅을 통해 저희 팀에 문의하시거나 [contact@twenty.com](mailto:contact@twenty.com)으로 메일을 보내 주세요.
</Accordion>
<Accordion title="백업은 암호화되어 있으며 기본 워크스페이스 데이터와 동일한 지역에 저장되나요?">
모든 백업은 암호화되며 동일한 관할 구역 내의 지리적으로 분리된 위치에 저장됩니다(예: EU 데이터의 경우 EU 내).
</Accordion>
</AccordionGroup>
## 컴플라이언스
<AccordionGroup>
<Accordion title="Twenty는 GDPR을 준수하나요?">
네, Twenty는 [GDPR compliant](https://trust.twenty.com/?tab=securityControls\&frameworks=gdpr_v1)입니다.
</Accordion>
<Accordion title="Twenty는 SOC 2를 준수하나요?">
네, Twenty는 [SOC 2 compliant](https://trust.twenty.com/?tab=securityControls\&frameworks=soc2_v1)입니다.
</Accordion>
<Accordion title="Twenty는 HIPAA를 준수하나요?">
아니요, Twenty는 HIPAA 준수 요건을 충족하는 절차를 진행 중입니다.
</Accordion>
</AccordionGroup>
## 라이선스
<AccordionGroup>
<Accordion title="제 팀의 내부 사용을 위해서만 기능을 추가하도록 코드를 변경하는 경우, 이러한 변경 내용을 공개해야 하나요?">
아니요. 자신의 팀을 위해 수정된 버전을 실행하는 것은 배포에 해당하지 않으므로 공개할 의무가 없습니다. AGPL의 네트워크 조항은 귀하의 조직 외부의 사람들이 네트워크를 통해 수정된 인스턴스와 상호 작용할 때 적용됩니다.
</Accordion>
<Accordion title="별도의 프런트엔드를 만들고 Twenty를 변경하지 않은 백엔드로 사용하는 경우, 이러한 변경 사항을 공개해야 하나요?">
아니요. 귀하의 프런트엔드는 귀하가 소유한 별도의 저작물이며, Twenty의 API를 통해 Twenty와 통신한다고 해서 이 점이 달라지지는 않습니다. Twenty 자체는 수정되지 않았기 때문에 공개할 사항이 없습니다.
</Accordion>
<Accordion title="기능을 추가하여 코드를 변경한 뒤 이를 재판매하려는 경우, 이러한 변경 사항을 공개해야 하나요?">
예. 다른 사람에게 배포할 목적으로 코드를 수정하는 것이므로, 해당 변경 사항을 공개해야 합니다. 변경 사항을 공개하고 싶지 않다면 Organization 라이선스를 취득할 수 있습니다.
</Accordion>
</AccordionGroup>
추가로 궁금한 사항이 있으면 [Terms and Conditions](https://twenty.com/terms), [Privacy Policy](https://twenty.com/privacy-policy), [Trust Center](https://trust.twenty.com/)를 확인해 주세요. 여전히 해결되지 않은 질문이 있다면 [contact@twenty.com](mailto:contact@twenty.com)으로 메일을 보내거나 지원 채팅을 통해 문의해 주세요.

View File

@@ -0,0 +1,12 @@
---
title: 법무
description: 법무 관련 사항
---
[FAQ](/l/ko/user-guide/legal/how-tos/legal-faq)을 확인하세요.
## 유용한 링크
* [이용 약관](https://twenty.com/terms)
* [개인정보 처리방침](https://twenty.com/privacy-policy)
* [신뢰 센터](https://trust.twenty.com/)

View File

@@ -0,0 +1,213 @@
---
title: 권한
description: 역할 기반 권한을 통해 객체, 필드 및 설정에 대한 접근을 제어합니다.
---
Twenty의 권한 시스템은 세 가지 주요 영역에 대한 접근을 제어할 수 있게 해줍니다:
* **객체 및 필드**: 기록 및 개별 필드를 누가 볼 수 있고, 편집하거나 삭제할 수 있는지 제어
* **설정**: 워크스페이스 구성과 관리자 기능에 대한 접근을 관리합니다
* **작업**: 데이터 가져오기나 이메일 보내기와 같은 일반 작업 공간 작업을 제어
## 역할 생성
새로운 역할 생성하기:
1. **설정 → 구성원 → 역할**로 이동하세요
2. **모든 역할**에서 **+ 역할 생성** 클릭
3. 역할 이름 입력
4. 기본 **권한** 탭에서 [권한을 구성합니다](#customize-permissions)
5. **저장** 클릭하여 완료
## 역할 삭제
역할을 삭제하려면:
1. **설정 → 구성원 → 역할**로 이동하세요
2. 제거하려는 역할을 클릭합니다
3. **설정** 탭 열고 **역할 삭제** 클릭
4. 모달에서 **확인** 클릭
<Note>
역할이 삭제되면, 해당 역할이 할당된 워크스페이스 구성원은 기본 역할로 자동 재할당됩니다. **Admin** 역할을 제외한 모든 역할은 삭제할 수 있습니다. **Admin** 역할에는 항상 최소 한 명의 구성원이 할당되어 있어야 합니다.
</Note>
## 구성원에게 역할 할당
### 현재 할당 보기
* **설정 → 구성원 → 역할**로 이동하세요
* 모든 역할과 각 역할에 지정된 멤버 수 확인
* 어떤 회원이 어떤 역할을 가지고 있는지 보기
### 구성원에게 역할 할당
1. **설정 → 구성원 → 역할**로 이동하세요
2. 할당할 역할 클릭
3. **배정** 탭 열기
4. **+ 멤버에게 할당** 클릭
5. 목록에서 워크스페이스 구성원을 선택합니다
6. 할당 확인
### 기본 역할 설정
1. **설정 → 구성원 → 역할**로 이동하세요
2. **옵션** 섹션에서 **기본 역할**을 찾습니다
3. 새로운 멤버가 자동으로 받을 역할 선택
4. 새 작업 공간 회원이 가입 시 이 역할이 할당됩니다.
<Note>
기존 워크스페이스 구성원에게만 역할을 할당할 수 있습니다. To invite new members, use [Member Management](/l/ko/user-guide/settings/capabilities/member-management).
</Note>
## 권한 사용자 정의
권한은 작업 공간 객체, 레코드, 설정, 작업을 포함하여 각 역할이 작업 공간 내에서 어떤 항목에 접근하거나 수정할 수 있는지를 결정합니다.
### 객체 권한
**객체** 섹션에서는 이 역할이 워크스페이스 전반의 레코드에 대해 수행할 수 있는 작업을 제어합니다.
#### 기본 권한 설정(모든 객체)
먼저, 기본적으로 **모든 객체**에 적용되는 기준 권한을 구성합니다:
| 권한 | 설명 |
| ---------------- | --------------------- |
| **모든 객체의 기록 보기** | 목록 및 상세 페이지에서 레코드를 조회 |
| **모든 객체의 기록 편집** | 기존 레코드를 수정 |
| **모든 객체의 기록 삭제** | 레코드를 소프트 삭제(복원 가능) |
| **모든 객체의 기록 파기** | 레코드를 영구 삭제 |
이 역할의 기본 동작이 무엇이어야 하는지에 따라 선택 또는 선택 해제합니다.
<Note>
**예시 — 인턴 역할**: 인턴은 기본적으로 모든 객체를 볼 수 있지만 수정할 수는 없어야 합니다. "모든 객체에서 레코드 보기"를 활성화하고, "모든 객체에서 레코드 편집"은 선택 해제 상태로 둡니다.
</Note>
#### 객체 수준 예외 추가
기본값을 설정한 후, **객체 수준** 하위 섹션을 사용해 특정 객체에 대해 기본값을 재정의하는 규칙을 추가합니다.
**+ Add rule**를 클릭하고 예외를 만들 객체를 선택합니다.
**인턴 역할을 위한 예시 규칙:**
| 규칙 | 효과 |
| ----------------------------- | ------------------------------------- |
| Opportunities → "레코드 보기" 비활성화 | 인턴은 Opportunities 객체를 전혀 볼 수 없습니다 |
| People → "레코드 수정" 활성화 | 인턴은 People 레코드를 수정할 수 있습니다(다른 객체는 불가) |
### 행 수준 권한
<Note>
행 수준 권한은 **Organization** 요금제(Cloud 및 Self-Hosted)에서 제공되는 **Premium 기능**입니다.
</Note>
행 수준 권한을 사용하면 동적 기준을 기반으로 역할이 볼 수 있거나 편집할 수 있는 개별 레코드를 제한할 수 있습니다. 객체 유형 전체에 적용되는 객체 권한과 달리, 행 수준 권한은 각 레코드를 개별적으로 평가합니다.
**사용 예시:**
* 영업 담당자는 자신에게 할당된 영업 기회만 볼 수 있습니다.
* 관리자는 자신의 지역에 있는 모든 레코드를 볼 수 있습니다.
* 지원 담당자는 자신에게 할당된 티켓만 볼 수 있습니다.
행 수준 권한을 구성하려면 역할을 연 다음 **Objects** 탭으로 이동하여 **Row-Level** 섹션을 사용해 특정 객체에 대한 필터 조건을 정의합니다.
### 필드 권한
각 객체 수준 규칙 내에서 더 나아가 특정 필드에 대한 접근을 제어하기 위해 **필드 수준 권한**을 구성할 수 있습니다.
| 권한 | 설명 |
| --------- | ------------- |
| **필드 보기** | 필드 값을 조회 |
| **필드 수정** | 필드 값을 수정 |
| **접근 불가** | 필드가 완전히 숨겨집니다 |
**예시 — 민감한 필드 제한:**
People 수정 권한이 있는 인턴 역할의 경우, 특정 필드를 제한할 수 있습니다:
* People → Email → **필드 보기**만 허용(수정 불가)
* People → Address → **접근 불가**(완전히 숨김)
이렇게 하면 인턴이 People의 대부분 필드를 수정할 수 있으면서도 민감한 정보를 보호할 수 있습니다.
### 권한 상속 방식
권한은 일반에서 구체적으로 계단식으로 적용됩니다:
1. **All Objects** → 모든 객체에 대한 기준을 설정합니다
2. **Object-Level rules** → 특정 객체에 대해 기준을 재정의합니다
3. **Field-Level rules** → 특정 필드에 대해 객체 설정을 재정의합니다
보다 구체적인 설정이 항상 우선합니다.
### 권한 무시 관리
상속된 권한을 재정의하려면:
1. 상속된 규칙 제거하려면 **X** 클릭
2. 원하는 구체적인 권한을 선택합니다
3. 변경 사항을 되돌리려면 주황색 **실행 취소** 아이콘(원형 화살표)을 클릭
완료되면 **마침**, 역할 페이지로 리디렉션되면 **저장** 클릭.
### 작업 공간 설정 권한
워크스페이스 설정에 대한 접근은 두 가지 방식으로 제어할 수 있습니다:
* **Settings All Access**를 전환하여 전체 접근을 허용합니다
* 또는 특정 권한을 개별적으로 활성화합니다(예: API 키 생성, 워크스페이스 환경설정, 역할 할당, 데이터 모델 구성, 보안 설정, 워크플로 관리)
<Note>
**현재 제한 사항**: 워크플로를 수동으로 트리거하려면 현재 워크플로 관리 권한이 필요합니다. 이 동작은 향후 릴리스에서 변경될 수 있습니다.
</Note>
### 워크스페이스 작업 권한
일반적인 워크스페이스 작업에 대한 접근을 제어합니다:
* **Application All Access**를 전환하여 전체 권한을 부여합니다
* 또는 **Send Email**, **Import CSV**, **Export CSV**와 같은 개별 작업을 활성화합니다
## API 키 및 AI 에이전트에 역할 할당
워크스페이스 구성원뿐 아니라 **API 키** 및 **AI 에이전트**에도 역할을 할당할 수 있습니다. 이는 자동화 프로세스와 통합을 포함하여 워크스페이스에서 "누가" 무엇을 할 수 있는지를 정확히 제어하려는 팀에 특히 유용합니다.
### API 키와 AI 에이전트에 역할을 할당하는 이유
* **보안**: 자동화 프로세스가 접근하거나 수정할 수 있는 범위를 제한
* **규정 준수**: 통합이 필요한 데이터에만 접근하도록 보장
* **제어**: 잘못 구성된 자동화로 인한 우발적 데이터 변경 방지
* **감사 추적성**: 어떤 통합 또는 에이전트가 어떤 작업을 수행했는지 추적
### API 키에 역할 할당
1. **설정 → 구성원 → 역할**로 이동하세요
2. 할당할 역할 클릭
3. **배정** 탭 열기
4. **API 키**에서 **+ Assign to API key**를 클릭합니다
5. 목록에서 API 키를 선택합니다
6. 할당 확인
이제 해당 API 키는 그 역할에 정의된 모든 권한을 상속받습니다. 이 키로 수행되는 모든 API 호출은 그에 따라 제한됩니다.
<Note>
역할이 할당되지 않은 API 키는 기본 권한을 사용합니다. 보안을 강화하려면 운영 환경의 API 키에 항상 특정 역할을 할당하세요.
</Note>
### AI 에이전트에 역할 할당
1. **설정 → 구성원 → 역할**로 이동하세요
2. 할당할 역할 클릭
3. **배정** 탭 열기
4. **AI 에이전트**에서 **+ Assign to AI agent**를 클릭합니다
5. 목록에서 AI 에이전트를 선택합니다
6. 할당 확인
AI 에이전트는 할당된 역할에서 허용한 데이터와 작업에만 접근하고 수행할 수 있습니다.
<Note>
워크플로 내에서 실행되는 AI 에이전트의 경우, 워크플로에 더 넓은 권한이 있더라도 에이전트가 의도된 범위를 벗어난 데이터에 접근하거나 수정할 수 없도록 보장합니다.
</Note>

View File

@@ -0,0 +1,125 @@
---
title: SSO 구성
description: 안전한 엔터프라이즈 인증을 위해 Single Sign-On(SSO)을 구성하세요.
---
## SSO에 대하여
Single Sign-On(SSO)을 사용하면 팀 구성원이 조직의 아이덴티티 제공자(IdP)를 통해 Twenty에 로그인할 수 있습니다. 이는 다음을 제공합니다:
* **중앙집중식 액세스 제어**: 한 곳에서 액세스를 관리합니다
* **강화된 보안**: 기존 보안 정책을 활용합니다
* **향상된 사용자 경험**: 모든 도구에서 하나의 자격 증명만 사용합니다
## 지원되는 제공자
Twenty는 다음 제공자와 SSO를 지원합니다:
* **SAML 2.0**: 대부분의 엔터프라이즈 아이덴티티 제공자와 호환됩니다
* **Google Workspace**: Google을 사용하는 조직용
* **Microsoft Entra ID** (이전 명칭: Azure AD): Microsoft 환경용
## SSO 설정
### 사전 준비
* Organization 플랜(클라우드 및 셀프 호스팅 워크스페이스)
* 아이덴티티 제공자에 대한 관리자 권한
* Twenty 워크스페이스에 대한 관리자 권한
### 구성 단계
#### 1. SSO 설정에 액세스
1. **설정 → 보안**으로 이동하세요.
2. **SSO 구성** 섹션을 찾으세요
3. **SSO 구성**을 클릭하세요
#### 2) 제공자 선택
목록에서 아이덴티티 제공자를 선택하거나, 다른 제공자의 경우 "Custom SAML"을 선택하세요.
#### 3. 아이덴티티 제공자 구성
아이덴티티 제공자를 다음 정보로 구성해야 합니다:
* **Entity ID**: Twenty에서 제공
* **ACS URL**: 인증용 콜백 URL
* **Certificate**: 보안 통신용
#### 4. Twenty에 제공자 상세 정보 입력
* **SSO URL**: 제공자의 로그인 URL
* **Entity ID**: 제공자의 식별자
* **Certificate**: 제공자의 X.509 인증서
#### 5. 테스트 및 활성화
1. 구성을 확인하려면 **구성 테스트**를 클릭하세요
2. 테스트가 성공하면 SSO를 활성화하세요
3. 사용자 프로비저닝 설정을 구성하세요.
## 사용자 프로비저닝
### Just-in-Time(JIT) 프로비저닝
* 최초 로그인 시 사용자가 자동으로 생성됩니다
* 사용자에게 기본 역할이 자동으로 할당됩니다
* 사용자를 수동으로 생성할 필요가 없습니다
### 수동 프로비저닝
* 사용자가 로그인하기 전에 초대하세요
* 특정 역할을 사전 할당
* 워크스페이스에 액세스할 수 있는 대상을 보다 세밀하게 제어
## SSO 사용자 관리
### 역할 할당
SSO 사용자도 일반 사용자와 마찬가지로 역할을 할당할 수 있습니다:
1. **설정 → 구성원**으로 이동하세요.
2. 사용자를 찾으세요
3. 필요에 따라 역할을 변경하세요
### 액세스 권한 철회
SSO 사용자의 액세스를 제거하려면:
* 아이덴티티 제공자에서 제거하거나,
* Twenty 워크스페이스에서 제거하세요
## 모범 사례
### 보안
* **SSO 필수**: SSO 사용자에 대해 비밀번호 로그인을 비활성화
* **정기 감사**: 주기적으로 액세스를 검토
* **강력한 IdP 정책**: 아이덴티티 제공자에서 MFA를 적용
### 사용자 관리
* **명확한 명명**: 디렉터리에서 일관된 명명 규칙 사용
* **그룹 매핑**: IdP 그룹을 Twenty 역할에 매핑(가능한 경우)
* **오프보딩 프로세스**: 디프로비저닝 워크플로우에 Twenty를 포함
## 문제 해결
### 일반적인 문제
* **인증서 오류**: 인증서가 만료되지 않았는지 확인
* **URL 불일치**: ACS URL이 정확히 일치하는지 확인
* **사용자를 찾을 수 없음**: JIT 프로비저닝 설정을 확인
### 도움 받기
문제가 발생하면 다음 정보를 포함하여 지원팀에 문의하세요:
* 수신한 오류 메시지
* 사용 중인 아이덴티티 제공자
* 구성 세부 정보(민감한 데이터 제외)
<Tip>
조직에 SSO 구성이 필요하신가요? SSO 및 ID 설정을 전문으로 하는 [공인 Twenty 파트너를 찾아보세요](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-sso). *(Twenty와 직접 논의하길 원하시나요? [contact@twenty.com](mailto:contact@twenty.com))*
</Tip>

View File

@@ -0,0 +1,120 @@
---
title: 권한 FAQ
description: 역할과 권한에 관한 자주 묻는 질문입니다.
---
## 역할
<AccordionGroup>
<Accordion title="Twenty에는 기본적으로 어떤 역할이 제공되나요?">
Twenty에는 기본적으로 **Admin** 및 **Member** 역할이 포함되어 있습니다. 팀의 필요에 따라 추가 사용자 지정 역할을 만들 수 있습니다(예: 영업 담당자, 관리자, 읽기 전용 사용자).
</Accordion>
<Accordion title="Admin 역할을 삭제할 수 있나요?">
아니요, Admin 역할은 삭제할 수 없습니다. Admin 역할에는 항상 최소 한 명의 구성원이 할당되어 있어야 합니다.
</Accordion>
<Accordion title="역할을 삭제하면 어떻게 되나요?">
해당 역할이 할당된 워크스페이스 구성원은 기본 역할로 자동 재할당됩니다.
</Accordion>
<Accordion title="신규 구성원에게 기본 역할을 어떻게 설정하나요?">
**설정 → 구성원 → 역할**로 이동하여 **Default Role** 옵션을 찾은 뒤, 신규 구성원이 가입할 때 자동으로 부여될 역할을 선택하세요.
</Accordion>
<Accordion title="한 사용자에게 여러 역할을 할당할 수 있나요?">
아니요, 각 사용자는 한 번에 하나의 역할만 가질 수 있습니다. 권한 조합이 필요하다면 사용자 지정 역할을 생성하세요.
</Accordion>
</AccordionGroup>
## 권한
<AccordionGroup>
<Accordion title="객체 권한과 필드 권한의 차이점은 무엇인가요?">
* **객체 권한**: 전체 레코드에 대한 액세스를 제어합니다(예: People 레코드를 보기/편집/삭제 가능)
* **필드 권한**: 객체 내 특정 필드에 대한 액세스를 제어합니다(예: Salary 필드는 볼 수만 있고 편집은 불가)
필드 권한은 민감한 데이터에 대해 더 세밀한 제어를 가능하게 합니다.
</Accordion>
<Accordion title="권한 재정의는 어떻게 작동하나요?">
권한은 일반에서 구체적으로 계단식으로 적용됩니다:
1. **All Objects**는 모든 객체에 대한 기준을 설정합니다
2. **Object-Level Permissions**는 특정 객체에 대해 전역 설정을 재정의할 수 있습니다
3. **Field-Level Permissions**는 특정 필드에 대해 객체 설정을 재정의할 수 있습니다
보다 구체적인 설정이 항상 우선합니다.
</Accordion>
<Accordion title="다양한 권한 수준은 무엇을 의미하나요?">
객체의 경우:
* **See Records**: 목록 및 상세 페이지에서 레코드를 조회
* **Edit Records**: 기존 레코드 수정
* **Delete Records**: 레코드를 소프트 삭제(복원 가능)
* **Destroy Records**: 레코드를 영구 삭제
필드의 경우:
* **See Field**: 필드 값 조회
* **Edit Field**: 필드 값 수정
* **No Access**: 필드가 완전히 숨겨짐
</Accordion>
<Accordion title="특정 레코드에 대한 액세스를 제한할 수 있나요(행 수준 권한)?">
행 수준 권한은 **Organization** 요금제에서 제공됩니다. 이를 통해 기준에 따라 특정 레코드에 대한 액세스를 제한할 수 있습니다(예: 자신의 영업 기회만 보기).
</Accordion>
<Accordion title="일부 사용자에 대해 필드를 읽기 전용으로 설정하려면 어떻게 하나요?">
1. **설정 → 구성원 → 역할**로 이동하세요
2. 역할을 선택합니다
3. 해당 필드가 포함된 객체로 이동합니다
4. 필드 권한을 **See Field**로 설정합니다(**Edit Field** 없이)
</Accordion>
</AccordionGroup>
## 설정 및 작업
<AccordionGroup>
<Accordion title="사용할 수 있는 설정 권한은 무엇인가요?">
다음에 대한 액세스를 제어할 수 있습니다:
* API 키 생성
* 워크스페이스 환경설정
* 역할 할당
* 데이터 모델 구성
* 보안 설정
* 워크플로우 관리
**Settings All Access**를 사용하여 전체 액세스를 부여하거나, 특정 권한만 활성화하세요.
</Accordion>
<Accordion title="사용할 수 있는 작업 권한은 무엇인가요?">
다음을 제어할 수 있습니다:
* **Send Email**: Twenty에서 이메일을 보낼 수 있음
* **Import CSV**: CSV를 통해 데이터를 가져올 수 있음
* **Export CSV**: 데이터를 CSV로 내보낼 수 있음
**Application All Access**를 사용하여 모든 작업을 허용하거나, 필요한 항목만 활성화하세요.
</Accordion>
</AccordionGroup>
## SSO
<AccordionGroup>
<Accordion title="모든 요금제에서 SSO를 사용할 수 있나요?">
아니요, SSO는 **Organization** 요금제에서만 제공되는 프리미엄 기능입니다.
</Accordion>
<Accordion title="어떤 아이덴티티 제공자가 지원되나요?">
Twenty는 다음을 지원합니다:
* **SAML 2.0**(대부분의 엔터프라이즈 아이덴티티 제공자와 호환)
* **Google Workspace**
* **Microsoft Entra ID**(이전 명칭: Azure AD)
</Accordion>
<Accordion title="Just-in-Time(JIT) 프로비저닝이란 무엇인가요?">
JIT 프로비저닝을 사용하면, 사용자가 SSO로 처음 로그인할 때 Twenty에 사용자 계정이 자동으로 생성됩니다. 기본 역할이 자동으로 할당됩니다.
</Accordion>
<Accordion title="모든 사용자에게 SSO를 필수로 적용할 수 있나요?">
예. SSO 구성이 완료되면, 아이덴티티 제공자를 통한 인증을 강제하기 위해 SSO 사용자에 대한 비밀번호 로그인을 비활성화할 수 있습니다.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,34 @@
---
title: 권한 및 액세스
description: 워크스페이스에서 역할, 권한 및 액세스 제어를 관리합니다.
---
Twenty의 권한 시스템을 통해 워크스페이스에서 누가 데이터에 액세스하고 수정할 수 있는지 제어할 수 있습니다. 역할을 만들고 권한을 부여하며 보안 액세스를 위해 SSO를 구성하세요.
## 이 섹션의 내용
<CardGroup cols={2}>
<Card title="권한" icon="lock" href="/l/ko/user-guide/permissions-access/capabilities/permissions">
역할을 만들고 객체, 필드 및 설정 권한을 구성하세요.
</Card>
<Card title="SSO 구성" icon="key" href="/l/ko/user-guide/permissions-access/capabilities/sso-configuration">
ID 공급자와 함께 Single Sign-On(SSO)을 설정하세요.
</Card>
<Card title="자주 묻는 질문" icon="circle-question" href="/l/ko/user-guide/permissions-access/how-tos/permissions-faq">
역할, 권한 및 SSO에 대한 자주 묻는 질문.
</Card>
</CardGroup>
## 주요 기능
* **역할 기반 액세스**: 특정 권한을 가진 사용자 지정 역할 생성
* **객체 권한**: 누가 기록을 보고, 편집하거나 삭제할 수 있는지 제어
* **필드 권한**: 민감한 필드에 대한 액세스 제한
* **설정 권한**: 워크스페이스 구성에 대한 액세스 제어
* **SSO 통합**: 엔터프라이즈 보안을 위해 Single Sign-On(SSO) 구성(Organization 요금제)
## 빠른 링크
* [역할 생성](/l/ko/user-guide/permissions-access/capabilities/permissions#create-a-role)
* [SSO 구성](/l/ko/user-guide/permissions-access/capabilities/sso-configuration)
* [팀 구성원 관리](/l/ko/user-guide/settings/capabilities/member-management)

View File

@@ -0,0 +1,36 @@
---
title: 커뮤니티 설정
description: Twenty에서 얼리 액세스 기능을 활성화하세요.
---
## 커뮤니티 설정 정보
커뮤니티 섹션에서는 일반 제공되기 전에 얼리 액세스 기능을 활성화할 수 있으며 Twenty 파트너를 검색할 수도 있습니다.
## 얼리 액세스 기능
얼리 액세스 기능은 일반 제공 전에 아직 테스트 중인 기능입니다.
**현재 얼리 액세스:**
* **정션 관계** — 다대다 관계
### 얼리 액세스 기능 활성화 방법
1. **설정 → 커뮤니티**로 이동하세요
2. **기능** 섹션으로 이동합니다
3. 활성화하려는 기능을 찾으세요
4. 토글하여 활성화하세요
5. 해당 기능이 즉시 사용 가능해집니다
<Note>
얼리 액세스 기능은 사용자 피드백에 따라 변경될 수 있습니다. 여러분의 피드백은 Twenty를 개선하는 데 도움이 됩니다!
</Note>
## 기능 피드백
여러분의 피드백은 Twenty를 개선하는 데 도움이 됩니다:
* 얼리 액세스 기능 관련 문제를 보고하세요
* 새로운 기능을 어떻게 사용하고 있는지 공유하세요
* [커뮤니티 Discord](https://discord.gg/cx5n4Jzs57)를 통해 개선 사항을 제안하세요

View File

@@ -0,0 +1,52 @@
---
title: 도메인 설정
description: 작업 공간 도메인, 승인된 액세스 도메인 및 앱 사용자 지정 도메인을 구성하세요.
---
도메인 설정은 구성하려는 항목에 따라 세 가지 위치에 있습니다.
## 워크스페이스 도메인
**설정 → 일반**에서 구성하세요.
하위 도메인 이름을 편집하거나 작업 공간에 사용자 지정 도메인을 설정하세요.
### 도메인 사용자 지정
1. **하위 도메인**을 클릭하여 하위 도메인을 편집하세요(예: `yourcompany.twenty.com`)
2. 또는 **사용자 지정 도메인**을 클릭하여 사용자 지정 도메인을 설정하세요(예: `crm.yourcompany.com`)
사용자 지정 도메인의 경우 도메인 제공업체에서 DNS 설정을 구성해야 합니다.
## 승인된 도메인
**설정 → 구성원 → 초대**에서 구성하세요.
팀 구성원이 이 워크스페이스에 자동으로 가입할 수 있도록 회사 도메인을 추가하세요.
### 승인된 액세스 도메인 추가
1. **승인된 액세스 도메인 추가**를 클릭하세요
2. 회사 도메인을 입력하세요(예: `yourcompany.com`)
3. 저장
구성이 완료되면 해당 도메인의 이메일 주소를 가진 사람은 직접 초대 없이 작업 공간에 가입할 수 있습니다.
<Note>
작업 공간을 귀 조직으로 제한하면서 팀 전체가 자가 등록할 수 있도록 하는 데 유용합니다.
</Note>
## 앱 사용자 지정 도메인
**설정 → 앱 → 해당 앱 → 설정 → 앱 URL**에서 구성하세요.
웹에서 라우트를 노출하는 앱은 전용 URL에서 제공되며, 이 URL은 **App URL** 섹션에 표시됩니다. 대신 소유하고 있는 도메인에서 앱을 제공할 수 있습니다.
### 사용자 지정 도메인 추가
1. **사용자 지정 도메인**을 클릭하세요
2. 사용하려는 도메인을 입력하세요(예: `app.yourcompany.com`)
3. 안내에 따라 DNS 설정을 구성하세요
4. 도메인을 검증하세요
해당 앱의 라우트만 그 도메인에서 접근할 수 있습니다. SSL 인증서는 자동으로 프로비저닝됩니다.

View File

@@ -0,0 +1,38 @@
---
title: 경험 설정
description: 인터페이스 테마와 지역 설정을 사용자 정의하세요.
---
Twenty 사용 경험을 **설정 → 경험**에서 개인화하세요.
## 외관
화면 테마를 선택하세요:
* **라이트**: 깔끔하고 밝은 인터페이스
* **다크**: 저조도 환경에서 눈에 더 편안합니다
* **시스템 설정**: 기기의 테마에 자동으로 맞춥니다
## 언어
드롭다운 메뉴에서 Twenty 인터페이스에 사용할 선호 언어를 선택하세요.
## 형식
날짜, 시간, 숫자, 시간대 및 캘린더 시작 요일을 구성하세요.
| 설정 | 설명 |
| ------------- | --------------------------- |
| **시간대** | 정확한 타임스탬프 및 일정을 위한 로컬 시간대 |
| **날짜 형식** | 날짜 표시 방식(예: 2025년 12월 12일) |
| **시간 형식** | 12시간제(오후 7:22) 또는 24시간제 |
| **숫자 형식** | 소수점 및 천 단위 구분자(예: 1,234.56) |
| **캘린더 시작 요일** | 한 주의 시작 요일(일요일 또는 월요일) |
각 설정은 **시스템 설정**으로 지정해 기기 설정에 자동으로 맞추거나, 특정 형식을 선택할 수 있습니다.
## 업데이트 방법
1. **설정 → 경험**으로 이동
2. 각 섹션에서 기본 설정을 조정합니다.
3. 변경 사항은 자동으로 저장됩니다.

View File

@@ -0,0 +1,86 @@
---
title: 구성원 관리
description: 팀원을 초대하고 워크스페이스 접근 권한을 관리합니다.
---
**설정 → 구성원**에서 워크스페이스에 접근할 수 있는 사람을 관리하세요.
## 새 멤버 초대
### 이메일 초대 사용
1. **설정 → 구성원 → 초대**로 이동하세요
2. **+ 초대**를 클릭하세요.
3. 해당 사람의 이메일 주소를 입력하세요.
4. 새 구성원의 역할을 선택하세요.
5. **초대 보내기**를 클릭하세요.
초대받은 사람은 워크스페이스에 참여할 수 있는 링크가 포함된 이메일을 받습니다.
### 초대 링크 사용
1. **설정 → 구성원 → 초대**로 이동하세요
2. 작업 공간 초대 링크 복사
3. 새로운 팀 구성원에게 링크 공유
4. 가입 후 접근이 가능합니다
## 구성원 보기 및 관리
### 모든 구성원 보기
모든 활성 구성원을 보려면 **설정 → 구성원 → 팀**으로 이동하세요
대기 중인 초대를 보려면 **설정 → 구성원 → 초대**로 이동하세요
### 구성원 프로필 편집
구성원을 클릭하여 프로필 페이지를 엽니다. 관리자인 경우 다음을 수행할 수 있습니다:
* **이름** 변경
* **프로필 사진** 변경
* 해당 계정을 **가장하기** (문제 해결에 유용)
* 해당 계정 **삭제**
### 구성원 역할 변경
구성원 프로필 페이지에서:
1. **권한** 탭 열기
2. 현재 할당된 역할 보기
3. 드롭다운에서 다른 역할 선택
4. 변경 사항은 즉시 적용됩니다.
→ [역할과 권한에 대해 더 알아보기](/l/ko/user-guide/permissions-access/capabilities/permissions)
### 구성원 제거
1. 구성원을 클릭하여 프로필을 엽니다.
2. 워크스페이스에서 제거하려면 **계정 삭제**를 클릭하세요
<Warning>
제거된 구성원은 즉시 접근 권한을 잃습니다. 해당 구성원의 데이터(레코드, 노트, 작업)는 워크스페이스에 남아 있습니다.
</Warning>
<Note>
삭제된 멤버의 이메일과 캘린더 이벤트는 보관되며 다른 멤버가 열람할 수 있습니다.
</Note>
## 보류 중인 초대
수락되지 않은 초대를 관리합니다:
* **재전송**: 초대 이메일을 다시 보냅니다
* **취소**: 초대가 수락되기 전에 철회합니다
## 승인된 접근 도메인
팀원이 이메일 도메인에 따라 자동으로 참여할 수 있도록 허용합니다:
1. **설정 → 구성원 → 초대**로 이동하세요
2. 회사 도메인을 추가하세요(예: `yourcompany.com`).
3. 해당 이메일 도메인을 가진 사람은 초대 없이 참여할 수 있습니다.
## 관련 항목
* [권한](/l/ko/user-guide/permissions-access/capabilities/permissions) — 각 역할이 할 수 있는 작업을 구성합니다
* [도메인 설정](/l/ko/user-guide/settings/capabilities/domains-settings) — 승인된 도메인을 구성합니다

View File

@@ -0,0 +1,43 @@
---
title: 프로필 설정
description: 개인 프로필 및 보안 설정을 관리합니다.
---
## 개인 정보
### 이름 및 이메일
* **표시 이름**: 다른 워크스페이스 구성원에게 표시되는 이름을 업데이트하세요
* **이메일 주소**: 로그인 이메일을 변경하세요 (인증 필요)
* **프로필 사진**: 사용자 정의 아바타를 업로드하거나 이니셜을 사용하세요
## 보안 설정
### 이중 인증 (2FA)
계정에 추가 보안을 위한 2FA를 활성화하십시오:
1. **설정 → 프로필**로 이동하세요.
2. **인증 앱**을 클릭하세요.
3. 인증 앱으로 QR 코드를 스캔합니다
4. 확인을 위해 인증 코드를 입력합니다
### 비밀번호 관리
* **비밀번호 변경**: 현재 비밀번호를 업데이트합니다
* **비밀번호 요구사항**: 최소 8자 이상이어야 합니다
## 프로필 관리
### 계정 삭제
<Warning>
계정을 삭제하면 모든 워크스페이스에 대한 접근이 영구적으로 제거됩니다. 이 작업은 되돌릴 수 없습니다. 멤버인 모든 워크스페이스에 대한 액세스 권한을 잃게 됩니다. 특정 팀만 나가고 싶다면, 대신 개별 워크스페이스에서 나가는 것을 고려해 보세요.
</Warning>
계정을 삭제하려면:
1. **설정 → 프로필**로 이동하세요.
2. **위험 구역**까지 스크롤하세요.
3. **계정 삭제** 클릭
4. 이메일 주소를 입력하여 확인합니다

View File

@@ -0,0 +1,30 @@
---
title: 작업 공간 설정
description: 작업 공간 이름과 브랜딩을 사용자 지정합니다.
---
작업 공간 사진, 이름, 삭제 옵션은 모두 **Settings → General**에서 확인할 수 있습니다.
## 작업 공간 사진
* **로고 업로드**: 사용자 지정 작업 공간 로고 추가
* **지원 형식**: 10MB 이하의 PNG, JPEG 및 GIF 파일
* **제거**: 현재 작업 공간 로고 삭제
## 워크스페이스 이름
* **이름**: 작업 공간 표시 이름 변경
* 이 이름은 모든 작업 공간 구성원에게 표시됩니다.
## 위험 구역
<Warning>
작업 공간을 삭제하면 모든 데이터가 영구적으로 제거되고 모든 구성원의 액세스가 즉시 취소되며, 이 작업은 되돌릴 수 없습니다.
</Warning>
작업 공간을 삭제하려면:
1. **작업 공간 삭제** 버튼을 클릭합니다.
2. 확인 메시지가 표시되면 삭제를 확인합니다.
**참고**: 작업 공간 관리자만 작업 공간을 삭제할 수 있습니다.

View File

@@ -0,0 +1,171 @@
---
title: 설정 FAQ
description: Twenty 설정에 대한 자주 묻는 질문입니다.
---
## 작업 공간 설정
<AccordionGroup>
<Accordion title="워크스페이스 이름은 어떻게 변경하나요?">
1. **설정 → 일반**으로 이동하세요.
2. 워크스페이스 이름 필드를 찾으세요.
3. 새 이름을 입력하세요.
4. 변경 사항은 자동으로 저장됩니다.
</Accordion>
<Accordion title="워크스페이스 로고는 어떻게 변경하나요?">
1. **설정 → 일반**으로 이동하세요.
2. 현재 로고 또는 업로드 영역을 클릭하세요.
3. 10MB 이하의 PNG, JPEG 또는 GIF 이미지를 선택하세요.
4. 로고가 즉시 업데이트됩니다.
</Accordion>
<Accordion title="여러 개의 워크스페이스를 가질 수 있나요?">
네, 여러 워크스페이스를 생성하고 멤버가 될 수 있습니다. 각 워크스페이스는 고유한 데이터, 설정 및 구독을 가집니다.
</Accordion>
<Accordion title="워크스페이스를 삭제하려면 어떻게 해야 하나요?">
1. **설정 → 일반**으로 이동하세요.
2. 위험 구역까지 스크롤하세요.
3. **워크스페이스 삭제**를 클릭하세요.
4. 삭제를 확인하세요.
참고: 이 작업은 모든 데이터를 영구적으로 삭제하며 되돌릴 수 없습니다.
</Accordion>
<Accordion title="워크스페이스를 여러 개 실수로 생성했습니다. 어떻게 해야 하나요?">
필요하지 않은 워크스페이스는 **설정 → 일반 → 워크스페이스 삭제**에서 삭제하세요.
<Warning>
**계정**을 삭제하지 마세요(설정 → 프로필에서 접근 가능): 계정은 모든 워크스페이스에서 공유됩니다. 계정을 삭제하면 모든 워크스페이스에 대한 액세스가 제거됩니다.
</Warning>
</Accordion>
<Accordion title="삭제하지 않고 워크스페이스를 비활성화하려면 어떻게 하나요?">
워크스페이스를 일시적으로 비활성화하려는 경우(영구 삭제가 아님) **설정 → 결제**로 이동하여 **플랜 취소**를 클릭하세요. 데이터는 유예 기간 동안 보존됩니다.
</Accordion>
</AccordionGroup>
## 프로필 설정
<AccordionGroup>
<Accordion title="비밀번호는 어떻게 변경하나요?">
1. **설정 → 프로필**로 이동하세요.
2. 비밀번호 섹션을 찾으세요.
3. 현재 비밀번호를 입력하세요.
4. 새 비밀번호를 입력하세요.
5. 변경 사항을 저장하세요.
</Accordion>
<Accordion title="2단계 인증은 어떻게 활성화하나요?">
1. **설정 → 프로필**로 이동하세요.
2. 2단계 인증 섹션을 찾으세요.
3. **2FA 활성화** 클릭
4. 인증 앱으로 QR 코드를 스캔합니다
5. 인증 코드를 입력하세요.
</Accordion>
<Accordion title="이메일 주소를 변경할 수 있나요?">
이메일 주소를 변경하려면 [contact@twenty.com](mailto:contact@twenty.com)으로 문의해 주세요.
</Accordion>
<Accordion title="계정을 삭제하려면 어떻게 해야 하나요?">
1. **설정 → 프로필**로 이동하세요.
2. 위험 구역까지 스크롤하세요.
3. **계정 삭제** 클릭
4. 이메일 주소를 입력하여 확인하세요.
참고: 이 작업은 모든 워크스페이스에 대한 액세스를 제거하고 연결된 계정에서 동기화된 모든 이메일을 삭제합니다.
</Accordion>
</AccordionGroup>
## 경험 설정
<AccordionGroup>
<Accordion title="밝은 모드와 어두운 모드 간 전환은 어떻게 하나요?">
1. **설정 → 환경**으로 이동하세요.
2. 테마 섹션을 찾으세요.
3. 밝은 모드, 어두운 모드 또는 시스템을 선택하세요.
</Accordion>
<Accordion title="날짜 형식은 어떻게 변경하나요?">
1. **설정 → 환경**으로 이동하세요.
2. 날짜 형식 항목을 찾으세요.
3. 선호하는 형식을 선택하세요.
4. 변경 사항이 즉시 적용됩니다.
</Accordion>
<Accordion title="시간대는 어떻게 변경하나요?">
1. **설정 → 환경**으로 이동하세요.
2. 시간대 항목을 찾으세요.
3. 사용 중인 지역 시간대를 선택하세요.
4. 모든 타임스탬프가 조정됩니다.
</Accordion>
<Accordion title="언어를 변경할 수 있나요?">
1. **설정 → 환경**으로 이동하세요.
2. 언어 항목을 찾으세요.
3. 사용 가능한 언어 중에서 선택하세요.
4. 인터페이스가 선택한 언어로 업데이트됩니다.
</Accordion>
</AccordionGroup>
## 계정 설정
<AccordionGroup>
<Accordion title="이메일 계정은 어떻게 연결하나요?">
1. **설정 → 계정**으로 이동
2. **계정 추가**를 클릭
3. Google 또는 Microsoft를 선택하세요.
4. 액세스 권한을 승인하세요.
5. 동기화 설정을 구성하세요.
</Accordion>
<Accordion title="여러 이메일 계정을 연결할 수 있나요?">
네, 여러 이메일 계정을 연결할 수 있습니다. **설정 → 계정**으로 이동하여 필요한 계정을 추가하세요.
</Accordion>
<Accordion title="이메일 계정 연결을 해제하려면 어떻게 하나요?">
1. **설정 → 계정**으로 이동
2. 제거할 계정을 찾으세요.
3. **연결 해제**를 클릭하세요.
4. 작업을 확인하세요.
</Accordion>
</AccordionGroup>
## 도메인
<AccordionGroup>
<Accordion title="워크스페이스 도메인을 맞춤 설정할 수 있나요?">
예! **설정 → 일반 → 워크스페이스 도메인**으로 이동하여 **도메인 사용자 지정**을 클릭하세요. 다음 두 가지 옵션이 있습니다:
* **서브도메인**: `yourcompany.twenty.com`과 같은 Twenty 서브도메인을 사용합니다.
* **사용자 지정 도메인**: `crm.yourcompany.com`과 같은 본인 소유 도메인을 사용합니다(DNS 구성이 필요).
서브도메인은 빠르게 설정할 수 있고, 사용자 지정 도메인은 팀에 완전한 브랜드 경험을 제공합니다.
</Accordion>
<Accordion title="승인된 접근 도메인은 어떻게 작동하나요?">
승인된 접근 도메인을 구성하면 회사 이메일 주소를 가진 팀원이 워크스페이스에 자동으로 참여할 수 있습니다. **설정 → 구성원 → 초대**로 이동하여 회사 도메인(예: `yourcompany.com`)을 추가하세요.
</Accordion>
</AccordionGroup>
## 얼리 액세스 기능
<AccordionGroup>
<Accordion title="얼리 액세스 기능이란 무엇인가요?">
얼리 액세스 기능은 일반 출시 전에 테스트 중인 기능입니다.
</Accordion>
<Accordion title="얼리 액세스 기능을 사용해도 안전한가요?">
얼리 액세스 기능은 정상적으로 동작하고 안전하게 사용할 수 있지만, 정식 출시 전에 사용자 피드백에 따라 변경될 수 있습니다.
</Accordion>
<Accordion title="얼리 액세스 기능은 어떻게 활성화하나요?">
1. **설정 → 커뮤니티**로 이동하세요
2. 아래로 스크롤하여 **기능** 섹션으로 이동하세요
3. 원하는 기능을 찾으세요.
4. 토글하여 활성화하세요.
5. 해당 기능이 즉시 사용 가능해집니다.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,62 @@
---
title: 설정
description: 필수 구성으로 Twenty 워크스페이스를 설정하세요.
---
## 초기 설정
워크스페이스를 처음 만들 때 구성해야 할 몇 가지 핵심 설정이 있습니다.
### 워크스페이스 이름 및 로고
1. **설정 → 일반**으로 이동하세요.
2. 워크스페이스 이름을 업데이트하세요
3. 회사 로고를 업로드하세요
4. 변경 사항을 저장하세요
### 시간대 및 날짜 형식
1. **설정 → 환경**으로 이동하세요.
2. 시간대를 선택하세요
3. 선호하는 날짜 형식을 선택하세요
4. 변경 사항을 저장하세요
## 필수 구성
### 이메일 및 캘린더 연결
이메일 및 캘린더 동기화를 설정하세요:
1. **설정 → 계정**으로 이동
2. **계정 추가**를 클릭
3. Google 또는 Microsoft 계정을 연결하세요
4. 동기화 설정을 구성하세요
→ [전체 이메일 및 캘린더 설정 가이드](/l/ko/user-guide/calendar-emails/overview)
### 팀 초대
워크스페이스에 팀 구성원을 추가하세요:
1. **설정 → 구성원**으로 이동하세요.
2. **+ 초대**를 클릭하세요
3. 이메일 주소를 입력하세요
4. 적절한 역할을 할당하세요
<Note>
팀을 초대하기 전에 **설정 → 구성원 → 역할**에서 기본 역할을 확인하세요. 새 구성원은 가입하면 이 역할이 자동으로 할당됩니다.
</Note>
## 워크스페이스 설정 체크리스트
* 워크스페이스 이름 및 로고 구성됨
* 시간대 및 날짜 형식 설정됨
* 이메일 및 캘린더 연결됨
* 팀 구성원 초대됨
* 역할 및 권한 구성됨
## 다음 단계
* [워크스페이스 설정](/l/ko/user-guide/settings/capabilities/workspace-settings)
* [프로필 설정](/l/ko/user-guide/settings/capabilities/profile-settings)
* [사용자 경험 설정](/l/ko/user-guide/settings/capabilities/experience-settings)

View File

@@ -0,0 +1,46 @@
---
title: 캘린더 보기
description: 날짜 필드가 있는 레코드를 캘린더에 표시합니다.
---
## 캘린더 보기 소개
캘린더 보기는 날짜 필드를 기준으로 레코드를 캘린더에 표시합니다. 각 레코드는 해당 날짜에 이벤트로 표시됩니다.
<img src="/images/user-guide/views/calendar-view-zoom.png" style={{width:'100%'}} />
## 캘린더 보기 생성하기
1. 날짜 필드가 있는 오브젝트로 이동합니다.
2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭합니다.
3. 뷰에 이름을 지정하고 **생성**을 클릭합니다.
4. 오른쪽의 **옵션**을 엽니다.
5. 레이아웃으로 **캘린더**를 선택합니다.
6. 레코드의 배치를 위해 사용할 **날짜 필드**를 선택합니다.
7. **뷰 업데이트**를 클릭합니다.
## 캘린더 구성
### 날짜 필드 선택
**옵션**에서 캘린더에서 레코드가 표시될 위치를 결정하는 날짜 필드를 선택합니다.
### 표시 필드
각 캘린더 이벤트에 표시할 필드를 구성합니다:
1. **옵션 → 필드**를 클릭합니다.
2. 필드를 켜거나 끕니다.
3. 드래그하여 순서를 변경합니다.
## 사용 사례
* **회의 및 통화**: 예정된 일정을 확인합니다.
* **마감**: 마감일과 종료일을 추적합니다.
* **이벤트**: 예정된 활동을 계획하고 시각화합니다.
* **후속 조치**: 작업의 마감 시점을 확인합니다.
## 관련 항목
* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성 및 관리
* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 캘린더 데이터 필터링

View File

@@ -0,0 +1,52 @@
---
title: 필드 및 열
description: 표시할 필드를 선택하고 구성 방식을 정하세요.
---
## 표시할 필드 선택
각 보기마다 서로 다른 필드 세트를 표시할 수 있습니다. 중요한 정보에 집중할 수 있도록 표시 항목을 사용자 지정하세요.
### 필드 표시 또는 숨기기
1. 오른쪽 상단의 **옵션**을 클릭하세요
2. **Fields**를 클릭하세요
3. 각 필드 옆의 **눈 아이콘**을 클릭하여 표시/숨기기를 전환하세요
### 필드 재정렬
보기에서 필드가 표시되는 순서를 변경하세요:
1. **Options → Fields**를 클릭하세요
2. 필드를 위나 아래로 드래그하세요
3. 변경 사항은 자동으로 저장됩니다.
## 보기 유형별 필드 표시
### 테이블 뷰
* 필드는 열로 표시됩니다.
* 열 경계를 드래그하여 크기를 조정하세요.
### 칸반 보기
* 필드는 카드에 표시됩니다.
* Options → Fields에서 재정렬하세요
* 모든 필드를 숨기려면 컴팩트 보기를 사용하세요
### 캘린더 보기
* 선택한 필드가 캘린더 이벤트에 표시됩니다.
* Options → Fields에서 구성하세요
## 모범 사례
* **필요한 것만 표시** — 필드가 너무 많으면 보기가 복잡해집니다.
* **중요한 필드를 먼저 배치** — 자주 사용하는 열을 왼쪽에 두세요.
* **여러 보기를 만드세요** — 목적에 따라 서로 다른 필드 세트를 사용하세요.
* **보기별 필드 표시 설정을 사용하세요** — 동일한 객체라도 초점을 다르게 맞출 수 있습니다.
## 관련 항목
* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 목록 보기 기능
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 카드 기반 보기

View File

@@ -0,0 +1,78 @@
---
title: 필터 및 정렬
description: 필터링하고 정렬하여 필요한 레코드를 정확히 찾을 수 있습니다.
---
## 데이터 필터링
필터는 조건과 일치하는 레코드만 표시하여 특정 레코드에 집중할 수 있도록 도와줍니다.
### 필터 추가
1. 도구 모음에서 **필터** 버튼을 클릭합니다
2. 필터링할 필드를 선택합니다
3. 연산자(같음, 포함 등)를 선택합니다
4. 필터 값을 입력합니다
5. **적용**을 클릭합니다
### 필터 연산자
| 필드 유형 | 사용 가능한 연산자 |
| ----- | ---------------------- |
| 텍스트 | 같음, 포함, 시작함, 끝남, 비어 있음 |
| 숫자 | 같음, 초과, 미만, 비어 있음 |
| 날짜 | 같음, 이전, 이후, 비어 있음 |
| 선택 | 같음, 다음 중 하나, 비어 있음 |
| 체크박스 | 참, 거짓 |
| 관계 | 같음, 비어 있음 |
### 다중 필터
결과를 좁히기 위해 여러 필터를 결합합니다:
* 모든 필터는 AND 논리로 적용됩니다
* 필터를 추가할수록 결과가 더 제한됩니다
### 필터 제거
* 개별 필터 칩의 **X**를 클릭합니다
* 모든 필터를 제거하려면 **모두 지우기**를 클릭합니다
## 데이터 정렬
정렬은 레코드가 표시되는 순서를 결정합니다.
### 정렬 추가
1. 도구 모음에서 **정렬** 버튼을 클릭합니다
2. 정렬할 필드를 선택합니다
3. 오름차순(A-Z, 0-9) 또는 내림차순(Z-A, 9-0)을 선택합니다
4. **적용**을 클릭합니다
### 다중 정렬
여러 정렬 수준을 추가합니다:
* 첫 번째 정렬이 기본입니다
* 이후 정렬은 동일한 값 그룹 내에서 적용됩니다
### 빠른 열 정렬
정렬하려면 열 헤더를 클릭하세요:
* 첫 번째 클릭: 오름차순
* 두 번째 클릭: 내림차순
* 세 번째 클릭: 정렬 제거
## 필터 및 정렬 설정 저장
필터와 정렬은 뷰와 함께 저장됩니다:
1. 필터와 정렬을 구성합니다
2. 현재 뷰를 업데이트하려면 **저장**을 클릭합니다
3. 또는 변형을 만들려면 **새 뷰로 저장**을 클릭합니다
## 관련 항목
* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 그룹화 기능
* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성 및 관리

View File

@@ -0,0 +1,98 @@
---
title: 칸반 보드 보기
description: 칸반 보기를 사용하여 워크플로를 시각화하고 관리하는 방법을 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 칸반 보기에 대하여
칸반 뷰는 각 열이 개별 단계를 나타내고 각 카드가 레코드를 나타내는 프로세스 흐름을 시각적으로 나타냅니다.
## 단계 간 카드 이동
워크플로우 진행 중에는 각 카드를 클릭해 누른 채 드래그하여 다음 단계로 옮길 수 있습니다.
<VimeoEmbed videoId="927888627" title="동영상 시연" />
## 단계 추가 및 삭제
단계를 사용하여 워크플로우를 요구에 맞게 조정할 수 있으며, 각 단계는 선택 필드의 값을 나타냅니다:
### 단계 추가
단계를 추가하려면 설정 > 데이터 모델로 이동하여 개체를 선택한 다음, 칸반 보드가 의존하는 필드를 선택하여 선택 필드 설정에 액세스하세요.
<VimeoEmbed videoId="927890428" title="동영상 시연" />
### 단계 제거
단계를 제거하려면 단계 이름 또는 `⋮` 아이콘 위로 마우스를 올린 다음, 선택 필드 설정에서 `설정에서 편집`을 클릭하고 해당 단계 옆의 **삭제**를 클릭하세요.
## 필드 표시
칸반 보드에서 일부 필드를 표시하고 다른 필드를 숨기도록 구성할 수 있습니다. 필드를 표시하거나 숨기려면 오른쪽 상단의 **옵션**을 클릭한 다음 **필드**를 클릭하여 옵션 목록을 표시하고, 해당 필드 옆의 눈 아이콘을 클릭하여 표시 또는 숨김을 전환하세요.
필드명을 누른 상태로 끌어서 원하는 위치로 이동시키면 필드의 순서를 변경할 수 있습니다.
<img src="/images/user-guide/kanban-views/filter.png" style={{width:'100%'}} />
## 컴팩트 보기
모든 필드를 숨겨 모든 레코드를 한눈에 파악할 수 있습니다. 활성화하려면:
1. 오른쪽 상단의 **옵션**을 클릭하세요
2. **Compact view** 토글을 켜세요
<img src="/images/user-guide/kanban-views/compact-view.png" style={{width:'100%'}} />
## 열 집계
칸반 보기의 각 열은 상단에 집계 값을 표시할 수 있어 데이터를 한눈에 파악하는 데 도움이 됩니다.
### 사용 가능한 집계
| 집계 | 설명 |
| ------ | ------------------- |
| **개수** | 해당 열의 레코드 수 |
| **합계** | 숫자 필드의 총합(예: 거래 금액) |
| **평균** | 숫자 필드의 평균값 |
| **최소** | 최솟값 |
| **최대** | 최댓값 |
### 집계 구성
1. 열 상단의 단계 값 옆에 표시된 숫자를 클릭하세요
2. 집계 유형을 선택하세요
3. 집계할 필드를 선택하세요
**예시:** Amount를 Sum으로 집계하여 단계별 총 거래 금액을 표시합니다.
## 칸반 보기를 사용할 때
칸반 보기는 다음에 적합합니다:
* **영업 파이프라인**: 리드부터 계약 성사까지 단계별로 거래를 추적합니다
* **프로젝트 관리**: 워크플로 상태를 통해 작업을 모니터링합니다
* **채용**: 채용 단계 전반에서 지원자를 추적합니다
* **단계가 있는 모든 프로세스**: 정의된 단계가 있는 워크플로를 시각화합니다
## 모범 사례
### 단계 정리
* **단계 수 제한**: 가시성을 위해 5~7개 단계가 이상적입니다
* **명확한 이름 지정**: 설명적인 단계 이름을 사용하세요
* **논리적 순서**: 프로세스 순서대로 단계를 배열하세요
### 카드 표시 최적화
* **핵심 필드 표시**: 가장 중요한 정보만 표시하세요
* **컴팩트 보기 사용**: 상위 수준 개요에 적합합니다
* **색상 구분**: 상태를 빠르게 파악할 수 있도록 단계 색상을 사용하세요
### 데이터 품질 유지
* **정기적으로 업데이트**: 카드가 단계별로 진행되도록 유지하세요
* **완료 항목 보관**: 종료된 항목을 활성 뷰에서 제외하세요
* **오래된 카드 검토**: 단계에 정체된 카드에 후속 조치를 취하세요

View File

@@ -0,0 +1,64 @@
---
title: 테이블 뷰
description: 스프레드시트와 유사한 목록 형식으로 데이터를 표시하세요.
---
## 테이블 뷰에 대하여
테이블 보기는 스프레드시트처럼 사용자 지정 가능한 열을 갖춘 행으로 레코드를 표시합니다. 대부분의 개체에서 기본 보기 유형입니다.
<img src="/images/user-guide/table-views/table-view.png" style={{width:'100%'}} />
## 기능
### 열 구성
* 열(필드) 표시 또는 숨기기
* 열 너비 조정
* 드래그하여 열 재정렬
### 선택 유형 필드로 그룹화
선택 유형 필드를 기준으로 레코드를 접을 수 있는 그룹으로 구성하세요.
<img src="/images/user-guide/table-views/table-group-by.png" style={{width:'100%'}} />
1. **Options**를 클릭하세요
2. **Group**을 선택하세요
3. 선택 필드를 선택하세요
4. **Options → Group → Sort**에서 그룹 순서를 설정하세요:
* **Alphabetical** 또는 **Reverse alphabetical**
* **Manual order**: "Visible groups" 아래에서 그룹을 드래그해 순서를 변경하세요
* 그룹 옆의 **눈 아이콘**을 클릭하여 숨기세요
**사용 사례:**
* 회사를 유형별로 그룹화
* 영업 기회를 단계별로 그룹화
* 작업을 상태별로 그룹화
<Note>
**최상의 성능을 위해 표시되는 그룹을 10~15개로 제한하세요.** 더 필요하다면 대신 대시보드를 사용하는 것을 고려하세요.
</Note>
### 열 너비
더 많거나 더 적은 콘텐츠를 표시하도록 열 너비를 조정하세요:
1. 두 열 머리글 사이에 마우스를 올리세요
2. 열 경계를 클릭하여 드래그하세요
3. 마우스를 놓으면 새 너비가 설정됩니다
## 테이블 보기를 사용할 때
테이블 보기는 다음에 가장 적합합니다:
* **대용량 데이터셋 탐색** — 많은 레코드를 빠르게 훑어보기
* **데이터 입력** — 여러 레코드를 효율적으로 편집
* **자세한 분석** — 많은 필드를 한 번에 확인
* **정렬 및 필터링** — 특정 레코드를 찾기
## 관련 항목
* [필드 및 열](/l/ko/user-guide/views-pipelines/capabilities/fields-and-columns) — 표시할 필드를 구성하기
* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 레코드 범위 좁히기

View File

@@ -0,0 +1,74 @@
---
title: 보기 설정
description: 보기의 가시성, 이름, 아이콘 및 구성을 관리하세요.
---
## 뷰 가시성
사용자 지정 보기를 누가 볼 수 있는지 제어하세요.
### 가시성 옵션
| 설정 | 볼 수 있는 대상 |
| ---------- | ------------ |
| **워크스페이스** | 모든 워크스페이스 멤버 |
| **비공개** | 본인만 |
### 가시성 변경
1. 보기를 여세요.
2. **Options → Visibility**를 클릭하세요.
3. **워크스페이스** 또는 **비공개**를 선택하세요.
<Note>
기본 "All [Object Name]" 보기는 가시성을 변경할 수 없습니다.
</Note>
## 보기 이름 변경
1. 보기 드롭다운 메뉴를 여세요.
2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
3. **Edit**을 선택하세요.
4. 새 이름을 입력하세요.
## 보기 아이콘 변경
1. 보기 드롭다운 메뉴를 여세요.
2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
3. **Edit**을 선택하세요.
4. 아이콘을 클릭하여 변경하세요.
## 보기 재정렬
드롭다운에 표시되는 보기의 순서를 변경하려면:
1. 보기 드롭다운 메뉴를 여세요.
2. 핸들을 이용해 보기를 드래그하세요.
3. 원하는 위치에 놓으세요.
4. 순서는 자동으로 저장됩니다.
## 보기를 즐겨찾기에 추가하기
빠른 액세스를 위해 자주 사용하는 보기를 고정하세요:
1. 보기 드롭다운 메뉴를 여세요.
2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
3. **Add to favorites**를 선택하세요.
즐겨찾기에 추가된 보기는 손쉽게 액세스할 수 있도록 전용 섹션에 표시됩니다.
## 보기 삭제
1. 보기 드롭다운 메뉴를 여세요.
2. 보기 옆의 **⋮** 메뉴를 클릭하세요.
3. **Delete**를 선택하세요.
4. 삭제를 확인하세요.
<Warning>
삭제된 보기는 복구할 수 없습니다.
</Warning>
## 관련 항목
* [뷰 개요](/l/ko/user-guide/views-pipelines/overview) — 뷰 생성
* [액세스를 제한하는 방법](/l/ko/user-guide/views-pipelines/how-tos/restrict-access-to-your-view) — 단계별 가이드

View File

@@ -0,0 +1,61 @@
---
title: 마감 예정 작업을 위한 캘린더 보기 만들기
description: 캘린더에서 작업과 마감일을 시각화하세요.
---
<img src="/images/user-guide/views/calendar-view-zoom.png" style={{width:'100%'}} />
## 사전 준비
Tasks 객체에는 **Due Date** 필드가 필요합니다(Date 또는 Date & Time 유형).
## 단계
1. **Tasks**로 이동하세요
2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
3. 뷰의 이름을 지정하세요(예: "Tasks Calendar")
4. **Create**를 클릭하세요
5. **Options**를 클릭한 다음 레이아웃으로 **Calendar**를 선택하세요
6. 날짜 필드로 **Due Date**를 선택하세요
7. **저장** 클릭
## 캘린더 구성
### 이벤트에 표시할 필드
1. **Options → Fields**를 클릭하세요
2. **눈 아이콘**을 클릭하여 필드를 표시/숨기세요
3. 드래그하여 순서를 변경합니다
표시할 권장 필드:
* **Title** — 작업 이름
* **Assignee** — 담당자
* **Status** — 현재 진행 상태
### 캘린더 필터링
집중된 보기 만들기:
* **My Tasks**: Assignee = Me로 필터링
* **This Week**: Due Date = This week으로 필터링
* **기한 초과**: 마감일 < 오늘, 상태 ≠ 완료로 필터링
## 기타 캘린더 사용 사례
| 객체 | 날짜 필드 | 목적 |
| ---------- | ------ | ------------- |
| 기회 | 마감일 | 예상 마감일을 추적 |
| 사용자 지정 이벤트 | 이벤트 날짜 | 활동을 계획하기 |
| 프로젝트 | 마감일 | 프로젝트 일정을 모니터링 |
## 팁
* **주간 검토**: 매주 캘린더 뷰를 확인하는 것으로 시작하세요
* **테이블 뷰와 함께 사용**: 개요는 캘린더, 세부 정보는 테이블을 사용하세요
* **가시성 설정**: 개인 작업 캘린더는 Unlisted로 유지하세요
## 관련 항목
* [캘린더 뷰](/l/ko/user-guide/views-pipelines/capabilities/calendar-view) — 모든 캘린더 기능
* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 캘린더 필터링

View File

@@ -0,0 +1,80 @@
---
title: 프로젝트를 위한 칸반 보기 만들기
description: 시각적 보드를 사용해 단계별로 프로젝트를 추적하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
칸반 보기를 사용하여 프로젝트(또는 단계가 있는 모든 객체)를 열을 따라 이동하는 카드로 시각화하세요.
<VimeoEmbed videoId="927888627" title="동영상 시연" />
## 사전 준비
열로 사용할 **Select 필드**가 객체에 필요합니다(예: Status, Stage, Phase).
없다면:
1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요
3. 단계 옵션이 있는 Select 필드를 추가하세요
## 단계
1. 객체로 이동하세요(예: 프로젝트, 작업)
2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
3. 뷰의 이름을 지정하세요(예: "Project Board")
4. **Create**를 클릭하세요
5. **Options**를 클릭한 다음 레이아웃으로 **Kanban**을 선택하세요
6. 뷰는 Select 필드를 열로 자동으로 사용합니다
7. **저장** 클릭
## 보드 구성
### 카드에 주요 필드 표시
1. **Options → Fields**를 클릭합니다
2. "Hidden Fields" 섹션에서 필드를 찾으세요
3. **눈 아이콘**을 클릭하여 카드에 표시합니다
4. 드래그하여 순서를 변경합니다
<img src="/images/user-guide/kanban-views/filter.png" style={{width:'100%'}} />
### 컴팩트 보기 활성화
상위 수준에서 확인하려면:
1. **Options**를 클릭하세요
2. **Compact view** 토글을 켜세요
카드에는 레코드 이름만 표시됩니다.
<img src="/images/user-guide/kanban-views/compact-view.png" style={{width:'100%'}} />
### 집계 추가
각 열 상단에 개수 또는 합계를 표시합니다:
1. 열 이름 옆의 숫자를 클릭하세요
2. 집계(Count, Sum 등)를 선택하세요
3. 필요하면 필드를 선택하세요
## 카드 이동
열 사이로 카드를 드래그 앤 드롭하여 상태를 업데이트하세요.
<VimeoEmbed videoId="927888627" title="동영상 시연" />
## 예시: 작업 보드
| 열(상태) | 카드 |
| -------- | -------- |
| **할 일** | 새 작업 |
| **진행 중** | 진행 중인 작업 |
| **검토** | 승인 대기 중 |
| **완료** | 완료됨 |
## 관련 항목
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계, 컴팩트 보기, 단계
* [영업 파이프라인 설정 방법](/l/ko/user-guide/views-pipelines/how-tos/set-up-a-sales-pipeline) — 기회용 칸반

View File

@@ -0,0 +1,51 @@
---
title: 그룹화된 테이블 뷰 만들기
description: 필드 값별로 레코드를 접을 수 있는 그룹으로 구성하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
테이블 뷰를 Select 필드로 그룹화하여 레코드를 접을 수 있는 섹션으로 구성하세요.
<img src="/images/user-guide/table-views/table-group-by.png" style={{width:'100%'}} />
## 단계
1. 해당 객체(사람, 회사 등)로 이동합니다.
2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭합니다.
3. 뷰의 이름을 지정합니다(예: "유형별 회사").
4. **만들기**를 클릭합니다.
5. **옵션 → 그룹**을 클릭합니다.
6. 그룹 기준이 될 Select 필드를 선택합니다.
7. **저장** 클릭
## 그룹 순서 설정
**옵션 → 그룹 → 정렬**에서 그룹의 정렬 방식을 선택합니다:
| 옵션 | 설명 |
| ---------- | -------------------------------- |
| **알파벳순** | A부터 Z |
| **알파벳 역순** | Z부터 A |
| **수동 정렬** | "표시되는 그룹" 아래에서 그룹을 끌어 순서를 변경하세요. |
뷰에서 숨기려면 그룹 옆의 **눈 아이콘**을 클릭하세요.
<Note>
**최상의 성능을 위해 표시되는 그룹을 10~15개로 제한하세요.** 더 필요하다면 대신 대시보드를 사용하는 것을 고려하세요.
</Note>
## 예: 업종별 회사
1. **회사**로 이동합니다.
2. "업종별"이라는 새 뷰를 만듭니다.
3. **옵션 → 그룹**을 클릭합니다.
4. **업종** 필드를 선택합니다.
5. 저장
이제 회사가 업종별로 정리되어 한 번에 한 세그먼트에 집중하기가 쉬워집니다.
## 관련 항목
* [테이블 뷰](/l/ko/user-guide/views-pipelines/capabilities/table-views) — 모든 테이블 뷰 기능
* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 그룹화를 필터와 함께 사용하기

View File

@@ -0,0 +1,32 @@
---
title: 내 보기에 대한 액세스 제한하기
description: 사용자 지정 보기를 누가 볼 수 있는지 제어하세요.
---
각 보기(기본 "All [Object Name]" 보기 제외)에는 자체 가시성 설정이 있습니다.
## 단계
1. 제한하려는 보기를 엽니다
2. 오른쪽 상단의 **옵션**을 클릭합니다
3. **가시성**을 클릭합니다
4. **비공개**를 선택합니다
이제 보기는 본인에게만 표시됩니다.
## 가시성 옵션
| 설정 | 볼 수 있는 대상 |
| ---------- | ------------ |
| **워크스페이스** | 모든 워크스페이스 멤버 |
| **비공개** | 본인만 |
## 노트
* 기본 "All [Object Name]" 보기는 비공개로 설정할 수 없습니다
* 비공개 보기는 다른 사용자의 보기 드롭다운에 표시되지 않습니다
* 언제든 가시성을 워크스페이스로 되돌릴 수 있습니다
## 관련
* [보기 설정](/l/ko/user-guide/views-pipelines/capabilities/view-settings) — 모든 보기 구성 옵션

View File

@@ -0,0 +1,120 @@
---
title: 영업 파이프라인 설정
description: 영업 파이프라인을 구성하여 단계별로 기회를 추적하세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
Twenty의 영업 파이프라인은 기회 객체의 칸반 보기로, 각 열은 영업 프로세스의 단계를 나타냅니다.
## 1단계: 단계 구성
단계는 기회 객체의 **Stage** 필드에서 정의됩니다.
1. **설정 → 데이터 모델**로 이동
2. **Opportunities**를 선택하세요
3. **Stage** 필드를 찾아 클릭하세요
4. 프로세스에 맞게 단계를 추가, 제거 또는 이름 변경하세요
<VimeoEmbed videoId="927890428" title="동영상 시연" />
### 권장 단계
| 단계 | 목적 |
| --------------- | ------------ |
| **New** | 방금 식별된 신규 기회 |
| **Qualified** | 적합한 것으로 확인됨 |
| **Meeting** | 논의 진행 중 |
| **Proposal** | 제안서 발송됨 |
| **Negotiation** | 조건 협의 중 |
| **Closed Won** | 거래 성사 |
| **Closed Lost** | 거래 실패 |
<Note>
**5-7개 단계가 최적입니다.** 단계가 너무 많으면 파이프라인을 한눈에 파악하기 어렵고, 너무 적으면 거래 진행 상황의 가시성이 떨어집니다.
</Note>
## 2단계: 파이프라인 보기 만들기
1. **Opportunities**로 이동
2. 뷰 드롭다운에서 → **+ 뷰 추가**를 클릭하세요
3. "Sales Pipeline"으로 이름을 지정하세요
4. **Create**를 클릭하세요
5. **Options**을 열고 레이아웃으로 **Kanban**을 선택하세요
해당 보기는 열로 Stage 필드를 자동으로 사용합니다.
## 3단계: 보기 구성
### 핵심 필드 표시
1. **Options → Fields**를 클릭하세요
2. "Hidden Fields" 섹션에서 필드를 찾으세요
3. 눈 모양 아이콘을 클릭하여 다음을 표시하세요: Company, Amount, Close Date, Owner
### 집계 사용
각 열 상단에 합계를 표시합니다:
1. 열 상단의 Stage 이름 옆에 표시된 숫자를 클릭하세요
2. 집계 유형(Count, Sum, Average 등)을 선택하세요
3. 집계할 필드(예: Amount)를 선택하세요
**예시:** Amount를 Sum으로 집계하여 단계별 총 거래 금액을 표시합니다.
### Compact View 사용(선택 사항)
카드 내용을 최소화하고 한눈에 개요를 보려면:
1. **Options**를 클릭하세요
2. **Compact view** 토글을 켜세요
## 4단계: 개인 및 팀 보기 만들기
### "My Pipeline"
* **Filter**: Owner = Me
* **Visibility**: Unlisted (개인용 보기)
### "Team Pipeline"
* **Filter**: None (모두 표시)
* **Visibility**: Workspace (공유 보기)
### "Closing This Month"
* **Type**: Table
* **Filter**: Close Date = This month, Stage ≠ Closed Won, Stage ≠ Closed Lost
* **Sort**: Close Date ascending
## 기회 다루기
### 기회 만들기
* Opportunities 보기에서 **+ New**를 클릭하세요
* 또는 특정 단계 열에서 \*\*+\*\*를 클릭하세요
### 단계 진행
열 사이로 기회 카드를 드래그 앤 드롭하여 단계를 업데이트하세요.
<VimeoEmbed videoId="927888627" title="동영상 시연" />
## 모범 사례
### 파이프라인 위생 관리
* 거래 진행 상황을 매일 업데이트하세요
* 오래된 거래는 신속히 이동하거나 종료하세요
* 종결일을 현실적으로 유지하세요
### 단계 규율
* 각 단계에 대한 명확한 기준을 정의하세요
* 기준이 충족되면 거래를 신속히 이동하세요
* 거래가 단계에 너무 오래 머물지 않도록 하세요
## 관련 항목
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계 및 컴팩트 보기
* [필터 및 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting) — 필터된 보기 만들기

View File

@@ -0,0 +1,149 @@
---
title: 파이프라인에서 예상 금액 표시하기
description: 단계별 확률을 기준으로 거래 금액에 가중치를 적용하여 계산하고 표시합니다.
---
예상 금액은 계산된 값입니다: **Amount × Probability**. 이는 거래의 성사 가능성에 따른 가중치를 적용해 매출을 예측하는 데 도움이 됩니다.
<Tip>
이는 워크플로를 사용하여 [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields)를 만드는 예시입니다.
</Tip>
이 가이드는 파이프라인에서 예상 금액을 계산하고 표시하는 데 필요한 사용자 정의 필드와 워크플로를 설정하는 방법을 안내합니다.
## 1단계: 사용자 정의 필드 생성
Opportunities 객체에 사용자 정의 필드 두 개가 필요합니다.
### Probability 필드 만들기
1. **Settings → Data Model → Opportunities**로 이동합니다.
2. **+ 필드 추가**를 클릭합니다.
3. 구성:
* **이름**: Probability
* **유형**: 숫자
* **설명**: 단계 기반 확률(0~100%)
4. **저장** 클릭
### Expected Amount 필드 만들기
1. **+ 필드 추가**를 클릭합니다.
2. 구성:
* **이름**: Expected Amount
* **유형**: 통화
* **설명**: 계산식: Amount × Probability
3. **저장** 클릭
### 선택 사항: 사용자에 대해 필드를 읽기 전용으로 설정
사용자가 이러한 계산된 필드를 수동으로 편집하지 못하게 하려면:
1. **설정 → 구성원 → 역할**로 이동하세요
2. 구성할 역할을 선택합니다.
3. Opportunities 객체를 찾습니다.
4. **Probability** 및 **Expected Amount** 필드를 읽기 전용으로 설정합니다.
이렇게 하면 워크플로만 이러한 값을 업데이트할 수 있습니다.
## 2단계: 워크플로 #1 만들기 — 단계 변경 시 Probability 업데이트
이 워크플로는 Opportunities 레코드가 새 단계로 이동할 때 Probability를 자동으로 설정합니다.
### 워크플로 만들기
1. **Workflows**로 이동합니다.
2. **+ New Workflow**를 클릭합니다.
3. 이름을 "Update Probability on Stage Change"로 지정합니다.
### 트리거 구성
1. **Record Created or Updated** 트리거를 추가합니다.
2. 객체로 **Opportunities**를 선택합니다.
3. 다음으로 필터링: **Stage** 필드가 업데이트됨
### 각 단계별 분기 추가
각 단계에 해당 확률로 분기를 만듭니다:
| 단계 | 확률 |
| ----------- | ---- |
| 새로운 | 10% |
| Qualified | 25% |
| Meeting | 40% |
| Proposal | 60% |
| Negotiation | 80% |
| Closed Won | 100% |
| Closed Lost | 0% |
<Note>
새 분기를 만들려면 워크플로 캔버스를 마우스 오른쪽 버튼으로 클릭하고 **New action**을 클릭합니다. 그런 다음 이전 노드에서 이 새 액션으로 화살표를 드래그하여 이전 노드와 연결합니다.
</Note>
각 단계에 대해:
1. **Filter** 노드를 추가합니다: Stage = [단계 이름]
2. **Update Record** 액션을 추가합니다:
* 레코드: 트리거된 Opportunity
* 필드: Probability
* 값: [해당 단계의 확률]
### Expected Amount 계산
분기가 다시 합쳐진 후:
1. **Filter** 노드를 추가합니다: Amount가 비어 있지 않음
2. **Update Record** 액션을 추가합니다:
* 레코드: 트리거된 Opportunity
* 필드: Expected Amount
* 값: Amount × Probability
## 3단계: 워크플로 #2 만들기 — Amount 변경 시 재계산
이 워크플로는 거래의 Amount가 변경될 때 Expected Amount를 업데이트합니다.
### 워크플로 만들기
1. **Workflows**로 이동합니다.
2. **+ New Workflow**를 클릭합니다.
3. 이름을 "Recalculate Expected Amount on Amount Change"로 지정합니다.
### 트리거 구성
1. **Record Created or Updated** 트리거를 추가합니다.
2. 객체로 **Opportunities**를 선택합니다.
3. 다음으로 필터링: **Amount** 필드가 업데이트됨
### 로직 추가
1. **Filter** 노드를 추가합니다: Amount가 비어 있지 않음
2. **Update Record** 액션을 추가합니다:
* 레코드: 트리거된 Opportunity
* 필드: Expected Amount
* 값: Amount × Probability
## 4단계: 파이프라인에 표시
이제 칸반 보기에서 Expected Amount 합계를 표시합니다:
1. Sales Pipeline 칸반 보기를 엽니다.
2. 열 상단의 Stage 이름 옆 숫자를 클릭합니다.
3. **Sum**을 선택합니다.
4. Expected Amount를 선택합니다.
이제 각 열에는 해당 단계의 가중 파이프라인 총액이 표시됩니다.
## 요약
| 구성 요소 | 용도 |
| ---------------------- | ------------------------------------------------------------- |
| **Probability 필드** | 단계 기반 성공 확률을 저장합니다. |
| **Expected Amount 필드** | Amount × Probability 값을 저장합니다. |
| **워크플로 #1** | Stage가 변경되면 Probability를 업데이트하고, 이어서 Expected Amount를 재계산합니다. |
| **워크플로 #2** | Amount가 변경되면 Expected Amount를 재계산합니다. |
| **집계** | 단계별 Expected Amount의 합계를 표시합니다. |
## 관련 항목
* [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields) — 워크플로를 사용하여 계산된 필드를 생성
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 열 집계
* [사용자 정의 필드 만드는 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — 필드 구성

View File

@@ -0,0 +1,231 @@
---
title: 각 단계에서 영업 기회가 머무는 기간 추적
description: 영업 기회가 각 단계에 진입한 시점을 추적하여 거래 속도를 모니터링하세요.
---
<Tip>
이는 워크플로를 사용해 [수식 필드](/l/ko/user-guide/workflows/how-tos/crm-automations/formula-fields)를 만드는 예시로, 특히 날짜 계산에 관한 내용입니다.
</Tip>
영업 기회가 각 단계에 진입한 시점을 추적하면 병목을 파악하고 거래 속도를 측정할 수 있습니다.
이 가이드는 사용자 정의 필드와 워크플로를 구성하여 영업 기회가 각 단계로 이동한 시점을 자동으로 기록하고, 이전 단계에서 보낸 일수를 계산하는 방법을 안내합니다.
## 1단계: 사용자 정의 필드 생성
각 단계마다 두 가지 유형의 필드가 필요합니다:
* **날짜 및 시간 필드**: 영업 기회가 각 단계에 진입한 시점을 기록
* **숫자 필드**: 영업 기회가 각 단계에서 보낸 일수 저장
### "Last Entered" 필드 생성
1. **설정 → 데이터 모델 → Opportunities**로 이동
2. 각 단계에서 **+ Add Field**를 클릭하고 다음을 구성합니다:
* **Name**: Last Entered [단계 이름] (예: "Last Entered New", "Last Entered Qualified")
* **Type**: Date & Time
* **Description**: 이 단계에 영업 기회가 진입한 시각의 타임스탬프
3. **저장** 클릭
다음 필드를 생성합니다:
* Last Entered New
* Last Entered Qualified
* Last Entered Meeting
* Last Entered Proposal
* Last Entered Negotiation
* Last Entered Closed Won
* Last Entered Closed Lost
### "Days in Stage" 필드 생성
1. 각 단계에서 **+ Add Field**를 클릭하고 다음을 구성합니다:
* **Name**: Days in [단계 이름] (예: "Days in New", "Days in Qualified")
* **Type**: Number
* **Description**: 이 단계에서 보낸 일수
2. **저장** 클릭
다음 필드를 생성합니다:
* Days in New
* Days in Qualified
* Days in Meeting
* Days in Proposal
* Days in Negotiation
<Note>
"Closed Won"과 "Closed Lost"는 마지막 단계이므로 "Days in" 필드는 필요하지 않습니다.
</Note>
### 선택 사항: 필드를 읽기 전용으로 설정
사용자가 이 계산된 필드를 수동으로 편집하지 못하게 하려면:
1. **설정 → 구성원 → 역할**로 이동하세요
2. 구성할 역할을 선택합니다
3. Opportunities 오브젝트를 찾습니다
4. "Last Entered" 및 "Days in" 필드를 읽기 전용으로 설정합니다
## 2단계: 워크플로 생성
이 단일 워크플로가 두 가지 작업을 모두 처리합니다:
* 새 단계에 진입한 시각의 타임스탬프를 기록
* 이전 단계에서 보낸 일수를 계산
### 워크플로 생성
1. **Workflows**로 이동
2. **+ New Workflow**를 클릭
3. "Track Stage Time"으로 이름 지정
### 트리거 구성
1. **Record Updated** 트리거를 추가
2. 오브젝트로 **Opportunities**를 선택
3. 필터: **Stage** 필드가 업데이트됨
### 각 단계에 대한 브랜치 추가
<Note>
새 브랜치를 만들려면 워크플로 캔버스에서 마우스 오른쪽 버튼을 클릭하고 **New action**을 클릭합니다. 그런 다음 이전 노드에서 이 새 액션으로 화살표를 끌어 이전 노드와 이 액션을 연결합니다.
</Note>
---
**브랜치 1: Stage = New(첫 번째 단계)**
첫 번째 단계이므로 이전 단계가 없어 계산할 수 없으므로 진입 타임스탬프만 기록됩니다.
1. **Filter** 노드를 추가: Stage = New
2. **Code** 액션 추가:
```javascript
export const main = async (): Promise<object> => {
return { now: new Date().toISOString() };
};
```
3. **Update Record** 액션 추가:
* Record: 트리거된 Opportunity
* Field: Last Entered New
* Value: Code 노드의 `now`
---
**브랜치 2: Stage = Qualified**
Qualified로 이동할 때 진입 시각을 기록하고 New에서 보낸 일수를 계산합니다.
1. **Filter** 노드 추가: Stage = Qualified
2. **Code** 액션 추가:
```javascript
export const main = async (params: {
lastEnteredPreviousStage: Date;
}): Promise<object> => {
const { lastEnteredPreviousStage } = params;
const now = new Date();
const entryDate = new Date(lastEnteredPreviousStage);
const diffTime = Math.abs(now.getTime() - entryDate.getTime());
const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
return {
now: now.toISOString(),
daysInPreviousStage: daysInPreviousStage
};
};
```
3. Code 노드 입력 구성: `lastEnteredPreviousStage`를 **Last Entered New** 필드에 매핑
4. **Update Record** 액션 추가:
* Record: 트리거된 Opportunity
* 업데이트할 필드:
* Last Entered Qualified = `now`
* Days in New = `daysInPreviousStage`
---
**브랜치 3: Stage = Meeting**
Meeting으로 이동할 때 진입 시각을 기록하고 Qualified에서 보낸 일수를 계산합니다.
1. **Filter** 노드 추가: Stage = Meeting
2. **Code** 액션 추가:
```javascript
export const main = async (params: {
lastEnteredPreviousStage: Date;
}): Promise<object> => {
const { lastEnteredPreviousStage } = params;
const now = new Date();
const entryDate = new Date(lastEnteredPreviousStage);
const diffTime = Math.abs(now.getTime() - entryDate.getTime());
const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
return {
now: now.toISOString(),
daysInPreviousStage: daysInPreviousStage
};
};
```
3. Code 노드 입력 구성: `lastEnteredPreviousStage`를 **Last Entered Qualified** 필드에 매핑
4. **Update Record** 액션 추가:
* Record: 트리거된 Opportunity
* 업데이트할 필드:
* Last Entered Meeting = `now`
* Days in Qualified = `daysInPreviousStage`
---
**나머지 단계 계속:**
| 단계 | 기록 | 계산 |
| ----------- | ------------------------ | ------------------- |
| Proposal | Last Entered Proposal | Days in Meeting |
| Negotiation | Last Entered Negotiation | Days in Proposal |
| Closed Won | Last Entered Closed Won | Days in Negotiation |
| Closed Lost | Last Entered Closed Lost | Days in Negotiation |
브랜치는 다시 합칠 필요가 없습니다. 각 브랜치는 해당 단계 조건이 충족되면 독립적으로 실행됩니다.
## 3단계: 단계 체류 시간 분석
타임스탬프와 일수 기록을 바탕으로 이제 거래 속도를 분석할 수 있습니다.
### "Slow Deals" 보기 만들기
1. Opportunities의 테이블 보기 생성
2. 다음 열을 추가: Name, Stage, Days in [이전 단계], Amount
3. "Days in" 필드로 정렬(내림차순)
4. Stage로 필터링하여 한 번에 한 단계에 집중
상단의 거래가 이전 단계에서 보낸 시간이 가장 깁니다.
### 집계 사용
파이프라인 칸반 보기에서:
1. Stage 이름 옆의 숫자를 클릭합니다
2. **Average**를 선택합니다
3. "Days in" 필드를 선택합니다
그러면 거래가 각 단계에서 보낸 평균 시간이 표시됩니다.
## 요약
| 구성 요소 | 용도 |
| ------------------- | ---------------------------- |
| **Last Entered 필드** | 영업 기회가 각 단계에 진입한 시점을 저장 |
| **Days in 필드** | 각 단계에서 보낸 일수를 저장 |
| **워크플로** | 한 번의 실행으로 타임스탬프를 기록하고 일수를 계산 |
| **보기 및 집계** | 거래 속도를 분석하고 병목을 식별 |
## 관련
* [워크플로](/l/ko/user-guide/workflows/overview) — 자동화 기본
* [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) — 필드 구성
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views) — 집계

View File

@@ -0,0 +1,132 @@
---
title: 보기 및 파이프라인
description: Twenty에서 보기를 생성하고 관리하는 방법을 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 보기 이해하기
보기는 데이터가 어떻게 표시될지를 결정하는 저장된 구성입니다. 각 보기는 다음을 고유하게 가질 수 있습니다:
* **레이아웃**: 테이블, 칸반 또는 캘린더
* **필터**: 표시할 레코드
* **정렬**: 레코드의 정렬 방식
* **필드**: 표시할 열
## 보기 유형
### 테이블 보기
스프레드시트와 유사한 기본 보기로, 레코드를 행으로 표시하며 열을 사용자 지정할 수 있습니다.
### 칸반 보기
레코드가 단계별로 구성된 카드로 표시되는 보드형 시각적 보기입니다. 다음에 적합합니다:
* 영업 파이프라인
* 프로젝트 추적
* 정의된 단계가 있는 모든 워크플로
### 캘린더 보기
날짜 필드가 있는 레코드를 표시하는 캘린더 보기입니다. 다음에 적합합니다:
* 회의 및 행사
* 마감일 및 기한
* 시간 기반 계획
## 뷰 생성하기
새 뷰를 생성하는 두 가지 방법이 있습니다.
### 보기 드롭다운 메뉴 사용
1. 임의의 객체(사람, 회사 등)로 이동합니다.
2. 왼쪽 상단의 보기 이름을 클릭합니다(현재 보기가 드롭다운 화살표와 함께 표시됨).
3. **+ 보기 추가**를 클릭합니다.
4. 보기 이름을 입력하고 **만들기**를 클릭합니다.
5. **옵션**에서 레이아웃(테이블, 칸반 또는 캘린더)을 선택합니다.
6. 필요에 따라 필터와 정렬을 추가합니다.
7. 표시할 필드를 선택하고 순서를 재정렬합니다.
8. **저장** 클릭
<VimeoEmbed videoId="1145648745" title="동영상 시연" />
### 기존 보기를 편집하는 것부터 시작하세요
1. 임의의 객체(사람, 회사 등)로 이동합니다.
2. **Options**에서 레이아웃(Table, Kanban, Calendar)을 선택하고, 필요에 따라 필터와 정렬을 추가하세요
3. **새 보기로 저장**을 클릭합니다.
4. 보기 이름을 입력하고 **만들기**를 클릭합니다.
5. 새 보기를 계속 편집합니다.
6. 추가 구성 내용을 저장하려면 **보기 업데이트**를 클릭합니다.
<VimeoEmbed videoId="1145654005" title="동영상 시연" />
## 보기 관리
### 보기 편집
1. 드롭다운에서 보기를 선택합니다.
2. 변경 사항(필터, 정렬, 열)을 적용합니다.
3. 보기를 업데이트하려면 **저장**을 클릭합니다.
### 보기 이름 변경 또는 아이콘 변경
1. 보기 드롭다운을 엽니다.
2. 보기 이름 옆의 **⋮** 메뉴를 클릭합니다.
3. **편집**을 선택합니다.
4. 이름 또는 아이콘을 변경합니다.
5. **저장** 클릭
### 보기 재정렬
1. 보기 드롭다운을 엽니다.
2. 핸들을 클릭한 채로 보기를 드래그합니다.
3. 원하는 위치에 놓습니다.
4. 새 순서는 자동으로 저장됩니다.
### 즐겨찾기에 추가
자주 사용하는 보기를 고정하여 빠르게 액세스하세요:
1. 보기 드롭다운을 엽니다.
2. 보기 옆의 **⋮** 메뉴를 클릭합니다.
3. **즐겨찾기에 추가**를 선택합니다.
4. 해당 보기가 즐겨찾기 섹션에 표시됩니다.
### 보기 삭제
1. 삭제할 보기를 선택합니다.
2. 보기 드롭다운을 클릭합니다.
3. 보기 옆의 **⋮** 메뉴를 클릭합니다.
4. **삭제**를 선택합니다.
5. 삭제를 확인합니다.
<Warning>
삭제된 보기는 복구할 수 없습니다. 확인하기 전에 제거할지 반드시 확인하세요.
</Warning>
## 뷰 가시성
각 보기(기본 "모든 [객체 이름]" 보기 제외)에는 고유한 가시성 설정이 있습니다.
가시성을 변경하려면:
1. 보기를 엽니다.
2. **옵션 → 가시성**을 클릭합니다.
3. 다음을 선택합니다:
* **워크스페이스**: 모든 워크스페이스 구성원에게 표시
* **비공개**: 본인에게만 표시
<Note>
기본 "모든 [객체 이름]" 보기는 가시성을 변경할 수 없습니다.
</Note>
## 다음 단계
* [테이블 보기](/l/ko/user-guide/views-pipelines/capabilities/table-views)
* [칸반 보기](/l/ko/user-guide/views-pipelines/capabilities/kanban-views)
* [필터와 정렬](/l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting)
* [보기 설정](/l/ko/user-guide/views-pipelines/capabilities/view-settings)

View File

@@ -0,0 +1,167 @@
---
title: 워크플로우를 통해 이메일 보내기
description: 워크플로우 액션을 사용해 개인화된 이메일을 자동으로 보냅니다.
---
CRM에서 특정 이벤트가 발생하면 자동으로 이메일을 보냅니다—신규 연락처 환영, 기회 팔로업, 팀원 알림 등.
## 사전 준비
워크플로우에서 이메일을 보내기 전에:
1. **설정 → 계정**에서 이메일 계정을 연결하세요
2. 계정에 발송 권한이 활성화되어 있는지 확인하세요
## 기본 이메일 워크플로우
### 예시: 신규 연락처 환영 이메일
**목표**: CRM에 새 연락처가 추가되면 환영 이메일을 보냅니다.
**설정**:
1. **워크플로우 생성**: **설정 → 워크플로우**로 이동하여 **+ 새 워크플로우**를 클릭하세요
2. **트리거 추가**: **레코드가 생성됨** → **People**를 선택하세요
3. **이메일 보내기 액션 추가**:
* 액션을 추가하려면 \*\*+\*\*를 클릭하세요
* **이메일 보내기**를 선택하세요
* 이메일을 구성하세요:
| 필드 | 값 |
| --------- | -------------------------------------- |
| **받는 사람** | `{{trigger.object.email}}` |
| **제목** | `{{Your Company Name}}에 오신 것을 환영합니다` |
| **본문** | `Hi {{trigger.object.firstName}}, ...` |
4. **테스트 및 활성화**: 샘플 레코드로 테스트한 다음 활성화하세요
## 이메일에서 변수 사용
`{{variable}}` 구문을 사용하여 이전 단계의 데이터를 참조하세요:
```text
Hi {{trigger.object.firstName}},
Thank you for connecting with us!
Your company, {{trigger.object.company.name}}, is now in our system.
Best regards,
The Team
```
### 트리거에서 사용 가능한 변수
| 트리거 유형 | 공통 변수 |
| ---------------- | -------------------------------------- |
| **레코드 생성/업데이트됨** | `{{trigger.object.fieldName}}` |
| **수동** | `{{trigger.selectedRecord.fieldName}}` |
| **Webhook** | `{{trigger.body.fieldName}}` |
## 고급: 조건부 이메일
### 예시: 리드 소스에 따라 다른 이메일
**목표**: 리드의 유입 경로에 따라 서로 다른 환영 이메일을 보냅니다.
**설정**:
1. **트리거**: 레코드가 생성됨 (People)
2. **필터 액션 추가**:
* 조건: `{{trigger.object.source}}`가 "Website"와 같음
* 참이면 → 웹사이트 환영 이메일로 계속
3. **다른 소스를 위한 분기**:
* 서로 다른 소스에 대해 병렬 분기를 만드세요
* 각 분기에는 자체 이메일 보내기 액션이 있습니다
## 여러 수신자에게 이메일 보내기
### 예시: 거래 성사 시 팀에 알림
**목표**: 기회가 성사되면 영업 담당자와 해당 관리자에게 이메일을 보냅니다.
**설정**:
1. **트리거**: 레코드가 업데이트됨 (기회, 단계 = "Closed Won")
2. **레코드 검색**: 기회 소유자의 관리자를 찾으세요
3. **이메일 보내기 #1**: 기회 소유자에게
* 받는 사람: `{{trigger.object.owner.email}}`
* 제목: `Congratulations on closing {{trigger.object.name}}!`
4. **이메일 보내기 #2**: 관리자에게
* 받는 사람: `{{searchRecords.manager.email}}`
* 제목: `Deal Won: {{trigger.object.name}}`
## 예약된 후속 이메일
### 예시: 회의 3일 후 팔로업
**목표**: 회의가 기록된 후 3일 뒤에 팔로업 이메일을 보냅니다.
**설정**:
1. **트리거**: 레코드가 생성됨 (활동, 유형 = "회의")
2. **지연 액션**: 3일 대기
3. **이메일 보내기**:
* 받는 사람: 회의 참석자
* 제목: 우리의 대화에 대한 후속 안내
* 본문: 트리거에서 회의 세부 정보를 참조하세요
## 이메일 첨부 파일
워크플로우에서 발송되는 이메일에 파일을 첨부할 수 있습니다. 첨부 파일은 워크플로우를 구성할 때 업로드하는 정적 파일입니다.
### 첨부 파일 추가 방법
1. **이메일 보내기** 작업에서 **첨부 파일** 버튼을 클릭합니다
2. 클릭하여 컴퓨터에서 파일을 업로드합니다
3. 이 작업으로 전송되는 모든 이메일에 해당 파일이 첨부됩니다
### 일반적인 사용 사례
| 사용 사례 | 예시 파일 |
| ------------ | --------------- |
| **환영 이메일** | 회사 소개 브로셔(PDF) |
| **온보딩 시퀀스** | 시작 가이드 |
| **영업 후속 조치** | 제품 카탈로그 또는 가격표 |
| **이벤트 확인** | 이벤트 세부 정보 또는 일정 |
<Note>
첨부 파일은 정적입니다—모든 수신자에게 동일한 파일이 전송됩니다. 개인화된 견적서와 같은 동적 문서의 경우 [로직 함수](/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/generate-pdf-from-twenty)를 사용하여 파일을 생성하고 첨부합니다.
</Note>
## 모범 사례
### 이메일 콘텐츠
* 제목은 간결하고 관련성 있게 유지하세요
* 수신자 이름으로 개인화하세요
* 명확한 행동 유도를 포함하세요
* 활성화 전에 이메일을 테스트하세요
### 도달률
* 너무 많은 이메일을 너무 빠르게 보내지 마세요
* 전문적인 이메일 서명을 사용하세요
* 스팸 트리거 단어를 피하세요
* 마케팅 이메일에 수신 거부 옵션이 있도록 하세요
### 문제 해결
* 이메일 계정이 연결되어 있고 활성 상태인지 확인하세요
* 수신자 이메일 주소가 유효한지 확인하세요
* 워크플로우 실행 내역에서 오류 메시지를 확인하세요
* 먼저 자신의 이메일 주소로 테스트하세요
## 관련 항목
* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)

View File

@@ -0,0 +1,88 @@
---
title: 워크플로우에서 분기 사용
description: 분기가 어떻게 작동하는지와 어떤 경로가 실행될지 제어하는 방법을 이해하세요.
---
## 분기 작동 방식
워크플로우 편집기에서 단일 노드에서 여러 경로(분기)를 만들 수 있습니다. 이를 통해 서로 다른 결과를 갖는 복잡한 자동화를 구축할 수 있습니다.
**중요**: 워크플로우가 실행될 때, **기본적으로 모든 분기가 병렬로 실행됩니다**. 한 분기를 다른 분기보다 선택하는 내장된 "if/else" 로직은 없습니다—모든 경로가 동시에 실행됩니다.
## 어떤 분기가 실행될지 제어하기
특정 조건에 따라 하나의 분기만 실행하려면, **각 분기의 시작 부분에 필터 노드를 추가하세요**.
### 예시 설정
1. 단일 노드에서 여러 분기로 워크플로우를 생성하세요
2. 각 분기의 첫 단계로 **필터** 노드를 추가하세요
3. 각 필터에 조건을 설정하여 해당 분기를 언제 계속할지 결정하세요
4. 필터 조건을 충족하는 분기만 진행됩니다
### 필터 작동 방식
* 필터 조건이 **충족되면**: 분기가 계속 실행됩니다
* 필터 조건이 **충족되지 않으면**: 분기는 필터 노드에서 중지됩니다
이렇게 하면 데이터에 따라 해당되는 분기만 실행되는 조건부 로직이 사실상 만들어집니다.
## 예시: 거래 규모별 라우팅
**시나리오**: 거래가 마감되면 거래 규모에 따라 다른 알림을 보냅니다.
1. **트리거**: 기회가 업데이트됨 (단계 = Closed Won)
2. **분기 1**: 금액 > $10,000에 대한 필터 → Slack 메시지를 #big-deals에 보내기
3. **분기 2**: 금액 ≤ $10,000에 대한 필터 → 영업 관리자에게 이메일 보내기
두 분기 모두 시작되지만, 거래 금액과 일치하는 분기만 필터를 통과해 계속됩니다.
## 분기 생성
<Note>
기존 단계에서 새 분기를 만들려면 해당 단계의 **+** 버튼을 클릭하고 액션을 추가하세요. \*\*+\*\*를 여러 번 클릭하여 여러 분기를 추가할 수 있습니다.
</Note>
1. 워크플로우 편집기에서 분기를 만들고자 하는 단계를 선택하세요
2. 액션을 추가하려면 **+** 버튼을 클릭하세요
3. 이렇게 하면 하나의 분기가 생성됩니다
4. 같은 단계에서 \*\*+\*\*를 다시 클릭하여 추가 분기를 만드세요
5. 각 분기는 자체 액션 시퀀스를 가질 수 있습니다
## 분기를 다시 병합하기
병렬 분기가 작업을 완료한 후, 다시 하나의 경로로 병합할 수 있습니다:
1. 분기된 액션을 완료하세요
2. 모든 분기 이후에 실행되어야 하는 새 단계를 추가하세요
3. 각 분기의 마지막 단계에서 이 새 단계로 연결선을 드래그하세요
4. 병합된 단계는 연결된 모든 분기가 완료될 때까지 대기한 후 실행됩니다
### 예시: 처리 후 알림
```
Trigger
│
├── Branch A: Update Customer Record
│
└── Branch B: Create Support Ticket
↘ ↙
Merged Step: Send Confirmation Email
```
확인 이메일은 고객 업데이트와 티켓 생성이 모두 완료된 후에만 전송됩니다.
## 모범 사례
* 조건부 실행을 원할 때는 분기 시작에서 항상 **필터 노드**를 사용하세요
* 중복 액션을 피하려면 분기 조건을 **서로 배타적**으로 유지하세요
* 올바른 분기가 실행되는지 확인하기 위해 다양한 데이터로 워크플로우를 테스트하세요
* **분기 단계의 이름을 바꾸어** 각 경로가 무엇을 하는지 명확히 알 수 있도록 설명적으로 지정하세요
* 병렬 처리 후 최종 액션이 필요할 때는 **분기를 병합**하세요
## 관련 항목
* [워크플로우 FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq) — 병렬 실행에 대한 답변
* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions) — 분기에서 사용할 수 있는 액션

View File

@@ -0,0 +1,183 @@
---
title: Iterator 사용
description: 레코드 배열을 순회하여 각 항목에 대해 작업을 수행합니다.
---
Iterator를 사용하면 레코드 배열을 반복하면서 각 항목에 대해 작업을 수행할 수 있습니다. 이는 Search Records가 반환하거나 웹훅으로 수신한 여러 레코드를 처리해야 하는 워크플로우에 필수적입니다.
## Iterator 사용 시기
| 시나리오 | 예시 |
| ------------ | -------------------- |
| **검색 결과 처리** | 찾은 각 사람에게 이메일 보내기 |
| **웹훅 배열 처리** | 각 항목에 대해 순서대로 레코드 생성 |
| **대량 업데이트** | 계산된 값으로 여러 레코드를 업데이트 |
| **알림** | 이벤트에 대해 여러 사람에게 알림 |
## Iterator 이해하기
Iterator는 입력으로 **배열**을 필요로 합니다. 그다음:
1. 배열에서 첫 번째 항목을 가져옵니다
2. 해당 항목으로 Iterator 내부의 모든 액션을 실행합니다
3. 다음 항목으로 이동합니다
4. 모든 항목이 처리될 때까지 반복합니다
### 반복할 배열 선택하기
대부분의 배열 소스(레코드 검색, 웹훅 배열 필드, 일괄 수동 트리거)는 변수 선택기에서 직접 선택할 수 있습니다.
**Code** 또는 **Logic Function** 단계가 *최상위 배열*을 반환하면, 그 출력은 변수 선택기에서 인덱스가 매겨진 항목들(`0`, `1`, `2`, …)로 표시됩니다. 배열 전체를 순회하려면 해당 단계에서 **Whole list** 옵션을 선택하세요. 그러면 Iterator가 목록에서 각 항목의 구조를 자동으로 추론합니다.
## 기본 설정
### 예시: 검색 결과의 모든 사람에게 이메일 보내기
**목표**: 특정 회사의 모든 연락처를 찾아 각 사람에게 개인화된 이메일을 보냅니다.
### 1단계: 레코드 검색
1. **레코드 검색** 액션을 추가합니다
2. 오브젝트: **People**
3. 필터: Company가 "Acme Inc"와 같음
4. 이렇게 하면 사람들의 배열이 반환됩니다
### 2단계: 결과 존재 여부 확인
1. **필터** 액션을 추가합니다
2. 조건: `{{searchRecords.length}}`가 0보다 큼
3. 이렇게 하면 결과가 비어 있을 때 발생하는 Iterator 오류를 방지합니다
### 3단계: 이터레이터 추가
1. **Iterator** 액션을 추가합니다
2. 배열 입력: `{{searchRecords}}` 선택
3. 이렇게 하면 루프가 생성됩니다
### 4단계: Iterator 내부에 액션 추가
Iterator 아래에 배치된 액션은 각 항목에 대해 실행됩니다:
1. Iterator 내부에 **Send Email** 액션을 추가합니다
2. 받는 사람: `{{iterator.currentItem.email}}`
3. 제목: 안녕하세요 `{{iterator.currentItem.firstName}}`!
4. 본문: 현재 항목의 필드를 사용한 개인화 메시지
### 결과
Search Records가 5명의 사람을 반환하면, Iterator는 다음을 수행합니다:
* 사람 1에게 이메일을 보냅니다
* 사람 2에게 이메일을 보냅니다
* ... 5명 모두에 대해 계속 진행합니다
## 현재 항목 데이터에 접근하기
Iterator 내부에서 현재 레코드에 접근하려면 `{{iterator.currentItem}}`를 사용하세요:
| 변수 | 설명 |
| --------------------------------------- | ------------------- |
| `{{iterator.currentItem}}` | 현재 레코드 객체 전체 |
| `{{iterator.currentItem.id}}` | 레코드 ID |
| `{{iterator.currentItem.email}}` | 이메일 필드 |
| `{{iterator.currentItem.company.name}}` | 연관된 회사 이름 |
| `{{iterator.index}}` | 배열에서의 현재 위치(0부터 시작) |
변수 선택기에서 현재 항목의 특정 필드로 들어가거나, **Use the whole item**을 선택해 현재 항목 전체(`{{iterator.currentItem}}`)를 참조할 수 있습니다. 전체 항목을 선택하면, 필드를 하나씩 다시 구성하는 대신 전체 레코드를 그대로 후속 단계로 전달하고자 할 때 유용합니다.
## 일반적인 패턴
### 여러 레코드 업데이트
**목표**: 기한이 지난 모든 작업을 "Late"로 표시
```
1. Search Records (Tasks, Due Date < Today, Status ≠ Completed)
2. Filter (length > 0)
3. Iterator (searchRecords)
└── Update Record
- Object: Tasks
- Record: {{iterator.currentItem.id}}
- Status: Late
```
### 배열에서 레코드 생성
**목표**: 웹훅이 여러 항목이 있는 주문을 수신하면 각 항목에 대해 레코드를 생성
```
1. Webhook Trigger (receives items array)
2. Filter (items.length > 0)
3. Iterator (trigger.body.items)
└── Create Record
- Object: Order Items
- Name: {{iterator.currentItem.name}}
- Quantity: {{iterator.currentItem.qty}}
- Related Order: {{trigger.body.orderId}}
```
### 루프 내부 조건부 처리
**목표**: 유효한 이메일이 있는 연락처에게만 이메일 보내기
```
1. Search Records (People)
2. Iterator (searchRecords)
└── Filter (currentItem.email is not empty)
└── Send Email
- To: {{iterator.currentItem.email}}
```
## 문제 해결
### "Iterator는 배열을 필요로 합니다"
**원인**: 배열이 아닌 단일 레코드를 전달했습니다.
**해결 방법**: 단일 레코드가 아니라 Search Records의 결과 또는 배열 필드를 전달했는지 확인하세요.
```
✅ Correct: {{searchRecords}}
❌ Wrong: {{searchRecords[0]}}
```
### Iterator가 실행되지 않음
**원인**: 배열이 비어 있습니다.
**해결 방법**: 배열 길이를 확인하기 위해 Iterator 앞에 Filter를 추가하세요:
```
Filter: {{searchRecords.length}} > 0
```
### 액션이 너무 많이 실행됨
**원인**: Search Records가 예상보다 많은 레코드를 반환했습니다.
**해결 방법**:
* Search Records에 더 구체적인 필터를 추가하세요
* Search Records에 한도를 설정하세요(최대 200)
* 추가 조건을 위해 Iterator 내부에 Filter를 추가하세요
## 성능 고려 사항
* **크레딧 사용량**: 각 반복은 해당 액션 실행에 크레딧을 소모합니다
* **시간**: 큰 배열일수록 처리에 더 오래 걸립니다
* **제한**: 매우 큰 작업은 배치 처리하는 것을 고려하세요
* **요청 제한**: 반복이 많으면 외부 API 호출이 요청 제한에 걸릴 수 있습니다
## 모범 사례
1. 오류를 피하려면 Iterator 전에 **항상 배열 길이를 확인하세요**
2. 모든 항목을 처리할 필요가 없는 경우 **루프 내부에 필터를 추가하세요**
3. 순회 대상을 설명하도록 **Iterator 단계의 이름을 바꾸세요**
4. **작은 배열로 테스트하세요** 대용량 데이터를 처리하기 전에
5. 반복이 예상대로 완료되는지 확인하려면 **워크플로우 실행을 모니터링하세요**
## 관련 항목
* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
* [브랜치 사용 방법](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows)
* [워크플로우 FAQ](/l/ko/user-guide/workflows/how-tos/need-more-help/workflows-faq)

View File

@@ -0,0 +1,332 @@
---
title: 워크플로우 액션
description: Twenty 워크플로에서 사용할 수 있는 동작에 대해 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 동작 소개
트리거가 발생한 후의 동작 정의. 여러 동작을 서로 연결해 복잡한 자동화를 구축할 수 있습니다.
<Tip>
* 변수 선택기(`(x+)` 아이콘)을 클릭하여 이전 단계의 사용 가능한 데이터를 탐색하세요.
* 어떤 입력 필드 위에 마우스를 올려두면 변수가 어느 단계에서 왔는지 확인할 수 있습니다 — 동일한 필드(예: ID)가 여러 이전 단계에 존재하는 경우 유용합니다.
* 유지 관리를 쉽게 하려면 각 동작에 설명적인 이름을 지정하세요.
</Tip>
## 레코드 동작
<img src="/images/user-guide/workflows/workflow_actions.png" style={{width:'100%'}} />
### 레코드 생성
선택된 객체에 새 레코드 추가.
**구성**:
* 대상 객체 선택
* 필수 및 선택 필드 작성
* 이전 단계의 데이터를 사용하거나 값을 수동으로 입력하여 필드를 채우세요.
**출력**: 새로 생성된 레코드 데이터는 다음 단계에서 사용 가능.
### 레코드 업데이트
선택된 객체에서 기존 레코드 수정.
<img src="/images/user-guide/workflows/update_record.png" style={{width:'100%'}} />
**구성**:
* 대상 객체 선택
* 업데이트할 특정 레코드 선택.
* 사용 가능한 모든 레코드를 표시하는 드롭다운 메뉴에서 고정된 레코드를 선택할 수도 있습니다.
* 또는 `(x+)`를 사용해 이전 단계에서 찾은 레코드를 지정하여 레코드를 동적으로 선택하도록 할 수 있습니다. 이 단계에서는 서로 다른 기준으로 레코드를 검색할 수 없습니다. 아직 레코드를 식별하지 못한 경우, 이 `Update Record` 단계 전에 `Search Record` 단계를 추가하세요.
* 수정할 필드 선택 및 새 값 입력
**출력**: 업데이트된 레코드 데이터는 다음 단계에서 사용 가능.
### 레코드 삭제
선택된 객체에서 레코드를 제거.
**구성**:
* 대상 객체 선택
* 삭제할 특정 레코드 선택
**출력**: 삭제된 레코드 데이터는 다음 단계에서 사용 가능.
### 레코드 검색
필터 조건을 사용하여 선택된 객체 내에서 레코드 찾기.
**구성**:
* 검색할 객체 선택
* 결과 범위를 좁히기 위한 필터 기준 설정
* 정렬 및 제한 구성
**출력**: 매칭된 레코드를 반환하여 다음 단계에서 사용 가능.
<Note>
**제한**: Search Records는 최대 **200개 레코드**를 반환합니다. 더 많이 처리해야 하는 경우, 결과를 줄이기 위해 특정 필터를 추가하거나 예약된 워크플로를 사용해 배치로 처리하세요.
</Note>
**모범 사례**: Search Records 이후 [분기](/l/ko/user-guide/workflows/capabilities/workflow-branches)를 사용하여 "발견됨" vs "찾을 수 없음" 시나리오를 처리하세요.
### 레코드 업서트
일치 기준에 따라 새 레코드를 생성하거나 기존 레코드를 업데이트합니다. 레코드가 이미 존재하는지 확실하지 않을 때 유용합니다.
<img src="/images/user-guide/workflows/upsert_double_identifier.png" style={{width:'100%'}} />
**구성**:
* 대상 객체 선택
* 일치에 사용할 수 있는 필드를 확인하세요: People에는 이메일, Companies에는 도메인, 모든 오브젝트에는 ID, 또는 고유(Unique)로 표시된 임의의 필드. 아래 항목 중 최소 하나는 채워야 합니다.
* 필드 값을 입력하세요. 고유 식별자 중 최소 하나는 반드시 입력하세요.
<Note>
**고유 식별자를 하나만 추가하면 일치가 더 잘 작동하는 경우가 많습니다.** 예를 들어 아래 스크린샷은 도메인을 기준으로 회사를 일치시킵니다. ID가 반드시 필요한 것은 아닙니다.
</Note>
<img src="/images/user-guide/workflows/upsert_simple_identifier.png" style={{width:'100%'}} />
* 이전 단계의 데이터를 사용하여 필드 채우기
**작동 원리**:
1. 조건에 맞는 레코드를 검색합니다
2. 찾으면 → 기존 레코드를 업데이트합니다
3. 찾지 못하면 → 새 레코드를 생성합니다
**출력**: 생성되었거나 업데이트된 레코드 데이터를 이후 단계에서 사용할 수 있습니다.
## 플로우 작업
### 반복자
**이전 단계에서 반환된 레코드 배열을 반복 처리**하여 각 레코드에 대해 개별적으로 작업을 수행할 수 있습니다.
**구성**:
* 이전 단계의 레코드 배열을 선택합니다(예: Search Records 결과, 대량 사용이 가능한 수동 트리거, 코드 노드). Code 또는 Logic Function 단계가 최상위 배열을 반환하는 경우, **Whole list** 옵션을 선택하여 전체 출력에 대해 루프를 실행합니다.
* 반복 내에서 각 레코드에 대해 수행할 액션 정의.
<Note>
- 이터레이터 내에 여러 작업을 추가할 수 있습니다.
- 이터레이터 내부에 분기를 사용할 때, 각 분기의 마지막 단계가 루프를 닫도록 이터레이터로 다시 연결되는지 확인하세요.
</Note>
* `Current Item` 필드에 접근: 현재 처리 중인 레코드의 필드를 사용하려면 **Iterator** 단계에서 **Current item**을 선택하세요. 해당 레코드에서 사용 가능한 필드 목록이 표시되며, 이후 작업에서 사용하도록 선택할 수 있습니다. **Use the whole item**을 선택하여 현재 항목 전체를 다운스트림 단계로 전달할 수도 있습니다.
<VimeoEmbed videoId="1146577247" title="동영상 시연" />
### 필터
지정한 조건에 따라 레코드를 필터링하여 기준을 충족하는 레코드만 통과시킵니다.
**구성**:
* 필터링할 레코드를 선택합니다
* 필터 조건 및 기준 정의
* 다음 단계로 전달할 레코드 구성
<Note>
1. **출력**: 필터 노드는 데이터를 반환하지 않으며 게이트 역할을 합니다. 조건을 충족하면 워크플로우가 계속됩니다. 그렇지 않으면 해당 분기에서 워크플로우가 중지됩니다.
2. 숫자 필드에서 `IS` 연산자를 사용할 수 있습니다. 이는 `EQUAL`과 동일하게 동작합니다.
</Note>
### 지연
지정한 기간 또는 특정 날짜/시간까지 워크플로우 실행을 일시 중지합니다.
**지연 유형**:
| 유형 | 설명 |
| --------- | --------------------------- |
| **기간** | 지정한 시간(일, 시간, 분, 초)만큼 기다립니다 |
| **예약 날짜** | 특정 날짜와 시간까지 기다립니다 |
**기간 설정**:
* 일, 시간, 분 및/또는 초를 설정합니다
* 여러 단위를 조합할 수 있습니다(예: 2일 4시간).
**예약 날짜 설정**:
* 날짜와 시간을 선택합니다
* 이전 단계의 날짜 필드를 참조할 수 있습니다(예: 회의 3일 후에 후속 조치).
**사용 사례**:
* 후속 이메일을 보내기 전에 24시간 대기
* 영업 기회의 마감일까지 일시 중지
* 영업시간에 작업을 예약
<Note>
예약 날짜는 과거일 수 없습니다. 이전 단계의 날짜 필드를 사용했고 그 날짜가 이미 지났다면, 워크플로우가 실패합니다.
</Note>
**제한 및 크레딧**:
* **최대 기간 제한 없음**—분, 일, 주 또는 그 이상으로 지연을 설정할 수 있습니다
* 지속 시간과 무관하게 Delay 노드가 실행될 때 **크레딧 1개가 소모됩니다**
* 대기 중에는 **크레딧이 소모되지 않습니다**—5분 지연과 5일 지연의 비용은 동일합니다
## 커뮤니케이션 작업
### 이메일 보내기
워크플로우에서 이메일 전송. 템플릿이 있는 그룹 이메일에 적합합니다. 이메일은 사용자의 메일함에서 보내는 이메일과 동일하게 보입니다.
풍부한 서식이 필요한 뉴스레터나 자동 이메일 시퀀스에는 적합하지 않습니다.
**필수 조건**: 설정 > 계정에 이메일 계정 추가
**구성**:
* 발신 이메일 계정을 선택합니다
<Note>
자신의 Twenty 계정과 동기화된 메일함에서만 이메일을 보낼 수 있습니다. 다른 팀원의 메일함(예: 계정 소유자의 이메일)에서 보내는 기능은 향후 지원 예정입니다.
</Note>
이후 모든 단계에서 개인화를 위해 이전 단계의 변수를 참조할 수 있습니다.
* 수신자 이메일 주소 입력.
<Note>
현재는 수신자를 한 명만 지정할 수 있습니다.
</Note>
* 제목 설정.
* 메시지 본문 작성. 링크 서식 지정, 번호 매기기 목록 및 글머리 기호 목록 생성, 첨부 파일 추가가 가능합니다.
<Note>
현재는 HTML 서명을 추가할 수 없습니다.
</Note>
### 양식
워크플로우 실행 중에 양식을 표시하여 사용자 입력을 수집합니다. 이 응답은 이후 단계에서 입력을 기반으로 레코드 생성, 이메일 전송 또는 기타 작업 수행에 사용할 수 있습니다.
<Warning>
**양식은 수동 트리거 전용으로 설계되었습니다**. 다른 트리거 (레코드 생성, 업데이트 등)와 함께하는 워크플로우의 경우, 형식은 워크플로우 실행 인터페이스를 통해서만 접근 가능하여 기대와 달라짐. 2026년 자동 워크플로우에서 양식을 적절히 지원하기 위한 알림 센터가 출시될 예정입니다.
</Warning>
**구성**:
* 사용자가 입력해야 할 필드를 구성합니다. 각 필드에 대해 다음을 선택합니다
* 텍스트, 숫자, 날짜, 지정된 레코드, 선택 필드 중 유형 모든 오브젝트의 필드를 선택하여 사용할 수 있습니다.
* 라벨
* `Placeholder` 아래의 기본값(선택 사항)
* 양식 제목 편집
**출력**: 양식 응답은 다음 단계에서 사용 가능.
**예시**: "Quick Lead" 워크플로우는 모든 워크스페이스에서 기본으로 제공되며, 명령 메뉴 `Cmd+K` 어디에서나 사용할 수 있습니다.
**양식 작성 방법**:
* 명령 메뉴 `Cmd+K`에서 수동 워크플로우를 트리거하세요
* 사이드 패널에 표시된 양식을 작성하고 `Submit`을 클릭하세요.
<Note>
필드를 필수로 지정할 수 없습니다.
</Note>
<VimeoEmbed videoId="1147277989" title="동영상 시연" />
## 통합 작업
### 코드
워크플로우 내에서 사용자 정의 JavaScript를 실행합니다.
백그라운드에서는 각 Code 액션이 자체 **logic function**으로 지원됩니다. 이는 Twenty 플랫폼에서 실행되는 서버 측 TypeScript 함수입니다. Code 액션을 추가하면 Twenty가 해당 단계에 대한 전용 logic function을 생성하고 편집기를 인라인으로 노출하므로, 작성한 코드는 워크플로와 함께 존재하게 됩니다.
**구성**:
* 이전 단계의 변수에 접근. 변수 이름을 동적으로 편집할 수 있습니다.
<VimeoEmbed videoId="1147281795" title="동영상 시연" />
* 에디터에서 자바스크립트 코드 작성
* 다음 단계에서 사용할 변수를 반환
* 해당 단계에서 코드를 직접 테스트하세요
<Note>
코드에서 외부 API 키를 사용해야 하는 경우, 함수 본문에 직접 입력해야 합니다. 다른 곳에서 API 키를 구성한 뒤 로직 함수에서 참조할 수는 없습니다.
</Note>
<Tip>
**배열을 다루고 있나요?** 외부 시스템이나 이전 단계에서 전달된 배열이 문자열로 올 수 있습니다. 해결 방법은 [Code 액션에서 배열 처리하기](/l/ko/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)를 참조하세요.
</Tip>
<Tip>
코드 편집기 오른쪽 상단의 사각형 아이콘을 클릭하여 전체 화면으로 표시하세요 — 기본 편집기 너비가 제한되어 있어 유용합니다.
</Tip>
#### 워크플로 간에 logic function 재사용하기
인라인 Code 액션은 단발성 로직에는 유용하지만, 그 안의 코드는 해당 단일 단계에만 속합니다. 여러 워크플로 전반에서 동일한 로직을 공유하거나 앱에서 버전 관리되는 소스로 유지하려면, 각 Code 액션에 코드를 복사해 붙여넣는 대신 **재사용 가능한 logic function**을 정의하세요.
logic function은 앱에서 한 번(`defineLogicFunction`을 사용해) 정의되고, `workflowActionTriggerSettings`를 추가하여 워크플로 빌더에 노출됩니다. 앱이 설치되면, 해당 함수는 기본 제공 액션과 함께 워크플로 빌더에서 자체 액션으로 표시됩니다. 이를 선택하면 선언한 입력 스키마에서 렌더링된 입력 필드(다른 액션과 마찬가지로 변수 선택기 포함)가 표시되고, 인라인 JavaScript 없이 공유 코드를 실행합니다.
| | Code 액션 | 재사용 가능한 logic function |
| -------------- | ----------------------- | ------------------------ |
| **코드가 위치하는 곳** | 인라인 편집기, 단일 워크플로 단계에 연결 | 앱에서 정의되고, 소스 관리에서 버전 관리됨 |
| **재사용성** | 단계별로 복사해 붙여넣기 | 모든 워크플로에서 액션으로 추가 |
| **입력값** | 편집기에서 연결된 변수들 | 선언한 입력 스키마에서 렌더링된 필드 |
| **적합한 용도** | 빠른, 워크플로 전용 로직 | 여러 워크플로 전반에서 사용하는 공유 로직 |
둘 다 동일한 logic function 런타임에서 실행되므로, 인라인으로 프로토타이핑한 Code 액션은 최소한의 변경으로 재사용 가능한 logic function으로 승격할 수 있습니다.
<Tip>
logic function 정의 및 워크플로 빌더에 노출하는 방법에 대한 개발자용 레퍼런스는 [Logic Functions](/l/ko/developers/extend/apps/logic/logic-functions)를 참고하세요. 특히 **Exposing a function as an AI tool or workflow action** 섹션과 `workflowActionTriggerSettings`를 확인하세요.
</Tip>
### HTTP 요청
워크플로우의 일부로 외부 API에 요청을 보냅니다.
<img src="/images/user-guide/workflows/http_action.png" style={{width:'100%'}} />
**구성**:
* API 엔드포인트 URL 입력. 이전 단계의 매개변수를 사용할 수 있습니다.
* HTTP 메소드 선택 (GET, POST, PUT, PATCH, DELETE)
* 필수 헤더 및 값 추가
* 구조 미리보기를 위한 샘플 응답 제공
## AI 작업
### AI 에이전트 - 곧 제공 예정
워크플로우 내에서 AI 에이전트를 실행하여 지능형 작업을 수행합니다.
**구성**:
* **Agent**: 기존 AI 에이전트를 선택하거나 기본 에이전트를 사용합니다
* **Prompt**: AI 에이전트에 대한 지시문을 작성합니다
* 프롬프트에서 이전 단계의 변수를 참조합니다.
**AI 에이전트가 할 수 있는 일**:
* 데이터를 분석하고 요약합니다
* 레코드를 분류하거나 범주화합니다
* 텍스트 콘텐츠를 생성합니다
* 데이터를 기반으로 의사결정을 내립니다
* 도구를 사용하여 CRM 데이터와 상호작용합니다
**출력**: AI 에이전트의 응답을 이후 단계에서 사용할 수 있습니다. 에이전트에 구조화된 출력 스키마가 있는 경우 응답은 해당 형식을 따릅니다.
<Note>
AI 에이전트 작업은 사용된 AI 모델에 따라 워크플로우 크레딧을 소모합니다. 자세한 내용은 [워크플로우 크레딧](/l/ko/user-guide/workflows/capabilities/workflow-credits)을 참조하세요.
</Note>
<Note>
AI 에이전트는 역할 기반 권한을 준수합니다. **설정 → 멤버 → 역할**에서 에이전트에 특정 역할을 할당해 액세스할 수 있는 데이터를 제어할 수 있습니다. 자세한 내용은 [권한](/l/ko/user-guide/permissions-access/capabilities/permissions)을 참조하세요.
</Note>

View File

@@ -0,0 +1,64 @@
---
title: 워크플로우 분기
description: 워크플로우에서 병렬 경로와 조건부 로직을 생성하세요.
---
분기는 워크플로우를 여러 경로로 나누어 데이터에 따라 동시에 또는 조건부로 실행할 수 있게 해줍니다.
<img src="/images/user-guide/workflows/branches.png" style={{width:'100%'}} />
## 분기가 작동하는 방식
단일 노드에서 여러 연결을 만들면 각 경로가 분기가 됩니다. 기본적으로 **모든 분기는 병렬로 실행**되며—서로를 기다리지 않습니다.
## 분기 만들기
### 새 분기 추가
1. 워크플로우의 **메인 캔버스**(기존 노드가 아닌 곳)를 마우스 오른쪽 버튼으로 클릭하세요
2. **노드 추가**를 클릭하세요
3. 새 분기를 위한 노드 유형을 선택하세요
4. 이전 단계의 하단에서 이 새 작업의 상단으로 화살표를 드래그하세요
5. 같은 노드에서 더 많은 분기를 추가하려면 이 과정을 반복하세요
<Note>
각 분기는 독립적입니다. 분기를 추가해도 해당 노드의 다른 기존 경로에는 영향을 주지 않습니다.
</Note>
### 시각적 레이아웃
분기는 워크플로우 편집기에서 병렬 경로로 표시됩니다. 실행에 영향을 주지 않고 노드를 드래그하여 시각적 레이아웃을 재배치할 수 있습니다.
## 조건부 분기
모든 분기가 기본적으로 실행되므로, 실제로 어떤 경로를 실행할지 제어하려면 **Filter** 노드를 사용하세요:
| 분기 | 필터 조건 | 작업 |
| -- | --------- | ---------- |
| A | 단계 = "성공" | 축하 이메일 보내기 |
| B | 단계 = "실패" | 후속 작업 생성 |
| C | 단계 = "협상" | 관리자에게 알리기 |
1. 트리거 또는 작업에서 분기를 만드세요
2. 각 분기의 첫 단계로 **Filter** 노드를 추가하세요
3. 각 필터를 상호 배타적인 조건으로 구성하세요
4. 각 필터 뒤에 작업을 추가하세요
필터 조건을 충족하는 분기만 실행을 계속합니다.
## 분기 병합
**분기는 자동으로 병합되지 않습니다.** 각 분기는 끝날 때까지 독립적으로 실행됩니다. 처리 방식은 전적으로 유연합니다:
* **옵션 1: 분기를 분리된 상태로 유지**\n 각 분기는 후속 작업을 독립적으로 처리합니다. 분기가 합쳐질 필요가 없을 때 가장 간단한 접근 방식입니다.
* **옵션 2: 분기를 수동으로 병합**\n 워크플로우를 만들 때 여러 분기를 동일한 다운스트림 작업에 수동으로 연결할 수 있습니다. 각 분기의 끝에서 공통 노드로 화살표를 드래그하기만 하면 됩니다.
<Note>
실행을 일시 중지하려면 [Delay](/l/ko/user-guide/workflows/capabilities/workflow-actions#delay) 노드를 사용할 수 있지만, 현재는 "다른 분기가 끝날 때까지" 대기하도록 설정할 수 없습니다.
</Note>
## 관련 항목
* [워크플로우에서 분기 사용하는 방법](/l/ko/user-guide/workflows/capabilities/use-branches-in-workflows) - 단계별 가이드
* [워크플로우 작업](/l/ko/user-guide/workflows/capabilities/workflow-actions) - Filter를 포함한 사용 가능한 작업

View File

@@ -0,0 +1,75 @@
---
title: 워크플로우 크레딧
description: 워크플로우 크레딧 소모 및 관리 이해하기.
---
워크플로우 크레딧은 Twenty에서 자동화를 지원합니다. 작동 방식을 이해하면 비용을 최적화하고 자동화 예산을 효과적으로 관리할 수 있습니다.
## 크레딧 할당
워크플로우 크레딧은 요금제 티어가 아니라 청구 주기에 따라 할당됩니다:
| 청구 주기 | 크레딧 |
| --------- | --------- |
| **월간 구독** | 매월 5 크레딧 |
| **연간 구독** | 매년 50 크레딧 |
<Note>
표준 자동화에는 매월 5 크레딧이면 넉넉합니다. 대부분의 팀은 일반적인 워크플로우 사용으로 이 한도를 초과하지 않습니다. 추가 크레딧은 주로 고급 Code 작업 및 AI 기반 워크플로우에 필요합니다.
</Note>
## 크레딧 소비 방식 이해
워크플로우가 실행될 때 크레딧이 소모되며, 생성할 때는 아닙니다. 각 워크플로우 동작은 그 복잡성에 따라 크레딧을 소모합니다:
### 동작 유형별 크레딧 소비
* **기본 내부 작업**: 크레딧 소모량 매우 낮음
* 레코드 검색
* 레코드 생성
* 레코드 업데이트
* 레코드 삭제
* 양식 작업
* **복잡한 작업**: 높은 크레딧 소비
* 코드 작업 (JavaScript 실행)
* 외부 서비스로의 HTTP 요청
* **AI 기능**: 크레딧 소모량 높음
* AI 에이전트 작업은 사용된 AI 모델에 따라 워크플로우 크레딧을 소모합니다
* 더 복잡한 프롬프트와 더 긴 출력은 더 많은 크레딧을 사용합니다
* **Delay 작업**: 최소한의 크레딧 소모
* Delay 노드는 실행될 때 **크레딧 1개**를 소모합니다
* 대기 기간 동안에는 **크레딧이 소모되지 않습니다**
* 5분 지연은 5일 지연과 같은 크레딧이 소모됩니다
### 실시간 차감
워크플로우가 실행될 때 크레딧이 실시간으로 차감됩니다. 이는 다음을 의미합니다:
* 초안 워크플로우는 크레딧을 소모하지 않습니다
* 활성화된 실행 중인 워크플로우만 크레딧 할당을 사용합니다
* 실패한 워크플로우도 완료된 단계에 대해 크레딧을 소모합니다
## 크레딧 관리
### 크레딧 사용량 확인
1. **설정 → 결제**로 이동
2. 현재 크레딧 소비량과 잔액 확인
3. 사용 패턴을 모니터링하여 워크플로우 최적화
### 추가 크레딧 구입
플랜 할당을 초과하는 추가 크레딧이 필요한 경우:
1. **설정 → 결제**로 이동
2. 추가 크레딧 구매 옵션을 클릭합니다. 다양한 크기의 패키지가 제공됩니다.
3. 크레딧이 현재 잔액에 추가됩니다
## 모범 사례
* **배치 처리**: 대량 작업 및 이터레이터 작업을 효율적으로 사용하여 개별 작업 호출을 줄이세요
* **수동 트리거 최적화**: 수동 트리거의 경우, 한 번의 워크플로우 실행에서 여러 레코드를 처리하려면 `Bulk` 가용성을 선택하세요
* 효율성을 위한 코드 작업 최적화

View File

@@ -0,0 +1,93 @@
---
title: Workflow 실행들
description: 워크플로우 실행을 모니터링하고 관리합니다.
---
## 실행에 대하여
**실행**은 워크플로우 실행의 기록입니다. 레코드 이벤트, 일정, 수동 작업 또는 웹훅 등으로 워크플로우가 트리거될 때마다 새 실행이 생성됩니다.
## 실행 보기
### 워크플로우 편집기에서
1. 모니터링하려는 워크플로우를 엽니다
2. 오른쪽의 **실행** 패널을 클릭합니다
3. 최근 실행과 해당 상태 목록을 확인합니다
### 워크플로우 실행 보기에서
1. 사이드바에서 **워크플로우 실행**으로 이동합니다
2. 모든 워크플로우의 실행을 확인합니다
3. 상태, 워크플로우 또는 날짜로 필터링합니다
## 실행 상태
| 상태 | 설명 |
| -------- | --------------------------------------------- |
| **실행 중** | 워크플로우가 현재 실행 중입니다 |
| **완료됨** | 워크플로우가 성공적으로 완료되었습니다 |
| **실패** | 워크플로우에서 오류가 발생하여 중지되었습니다 |
| **대기 중** | 워크플로우가 일시 중지되었습니다(예: Delay 액션 대기 또는 양식 제출 대기) |
## 실행 세부정보
임의의 실행을 클릭하면 다음을 확인할 수 있습니다:
* **상태**: 실행의 현재 상태
* **시작 시각**: 실행이 시작된 시점
* **소요 시간**: 실행에 걸린 시간
* **트리거 데이터**: 워크플로우를 시작시킨 입력값
* **단계 출력**: 각 단계에서 반환된 데이터
* **오류 메시지**: 실행이 실패한 경우 어떤 문제가 있었는지
## 단계별 실행
각 실행에는 워크플로우의 진행 상황이 표시됩니다:
1. 성공적으로 완료된 단계를 확인합니다
2. 실패가 발생한 위치를 파악합니다
3. 단계 간에 전달된 데이터를 확인합니다
4. 단계 입력과 출력을 확인하여 문제를 디버깅합니다
## 오류 처리
실행이 실패한 경우:
1. 실패한 실행을 엽니다
2. 실패를 유발한 단계를 찾습니다
3. 오류 메시지에서 세부정보를 확인합니다
일반적인 문제:
* 필수 필드 누락
* 잘못된 데이터 형식
* 외부 API 오류
* 권한 문제
## 워크플로우 재실행
실행이 실패한 경우 다음을 수행할 수 있습니다:
* 근본 원인을 수정하고 다음 트리거를 기다립니다
* 수동 워크플로우의 경우 동일한 데이터 또는 업데이트된 데이터로 다시 트리거합니다
* 향후 실패를 방지하기 위해 워크플로우 논리를 점검합니다
## 성능 팁
### 실행 기록 관리
* 실행은 이력 참고를 위해 보관됩니다
* 매우 오래된 실행은 자동으로 보관될 수 있습니다
* 기록을 유지해야 하는 경우 실행 데이터를 내보냅니다
### 모니터링 모범 사례
* 새 워크플로우를 활성화한 후 실행을 정기적으로 확인합니다
* 실패한 실행을 검토하여 패턴을 파악합니다
## 관련 항목
* [워크플로우 트리거](/l/ko/user-guide/workflows/capabilities/workflow-triggers)
* [워크플로우 액션](/l/ko/user-guide/workflows/capabilities/workflow-actions)
* [워크플로우 문제 해결](/l/ko/user-guide/workflows/how-tos/need-more-help/workflow-troubleshooting)

View File

@@ -0,0 +1,137 @@
---
title: 워크플로우 트리거
description: 워크플로우를 시작하는 다양한 트리거에 대해 알아보세요.
---
## 트리거에 대하여
워크플로우는 항상 자동화가 실행되어야 하는 시기를 정의하는 단일 트리거로 시작합니다.
<img src="/images/user-guide/workflows/workflow_triggers.png" style={{width:'100%'}} />
<Tip>
**고급 객체도 지원됩니다!** 표준 CRM 객체(사람, 회사, 영업 기회) 외에도 다음 대상으로 워크플로우를 트리거하고 작업을 수행할 수 있습니다:
* 워크스페이스 구성원
* 캘린더 이벤트
* 메시지(이메일)
* 작업, 노트 및 기타 많은 시스템 객체
이렇게 하면 캘린더 이벤트가 생성될 때 팀 구성원에게 알림을 보내거나, 수신 이메일을 자동으로 처리하는 등의 강력한 자동화를 구현할 수 있습니다.
</Tip>
## 레코드 생성됨
선택한 객체(사람, 회사, 기회 또는 기타 사용자 정의 객체)에 새 레코드가 생성될 때 워크플로우를 시작합니다.
**구성**: 새 레코드를 모니터링할 객체 유형을 선택합니다.
<Note>
* 이 트리거는 CSV, 메일박스 및 캘린더 동기화 또는 API로 생성된 레코드에 적합합니다.
* **수동으로 생성된 레코드에는 권장되지 않습니다**: 이 트리거를 사용하면 레코드가 생성되는 즉시 워크플로우가 시작됩니다. Twenty UI는 실시간 자동 저장을 제공하므로(레코드를 저장하기 위한 별도의 편집 모드와 검증 단계가 없습니다), 사용자가 모든 필드를 입력하기 전에 워크플로우가 트리거됩니다.
수동으로 생성된 레코드에서 이 워크플로우를 트리거하려면, 대신 트리거 `Record is created or updated`를 사용하는 것이 좋습니다.
</Note>
## 레코드 업데이트됨
기존 레코드에 변경 사항이 있을 때 워크플로우를 시작합니다.
**구성**:
* 객체 유형을 선택합니다
* 변경 사항을 모니터링할 필드를 선택적으로 지정
## 레코드 업데이트 또는 생성됨
선택한 객체에서 레코드가 생성되거나 업데이트될 때 워크플로우를 시작합니다.
**중요한 이유**: 이 트리거는 다양한 방식으로 생성된 레코드가 서로 다르게 동작하기 때문에 특히 유용합니다:
* **API/CSV 가져오기**: 필드가 즉시 채워진 상태로 레코드가 생성됩니다
* **수동 생성**: 레코드는 먼저 생성되고, 그 후 필드가 추가됩니다
**구성**:
* 모니터링할 객체 유형을 선택
* 변경 사항을 모니터링할 필드를 선택적으로 지정
* 워크플로우는 초기 생성과 모든 후속 업데이트에서 트리거됩니다
## 레코드 삭제됨
객체에서 레코드가 제거될 때 워크플로우를 시작합니다.
**구성**: 삭제를 모니터링할 객체 유형을 선택합니다.
## 수동 트리거
사용자 작업에 의해 트리거될 때 워크플로우가 시작됩니다. 이 트리거는 `Cmd+K` 메뉴를 통해 액세스하거나, 레코드를 선택한 후 상단 내비게이션 바에 표시되는 사용자 정의 버튼을 통해 사용할 수 있습니다.
<img src="/images/user-guide/workflows/add_to_newsletter_button.png" style={{width:'100%'}} />
**가용성 구성**:
워크플로우가 레코드 선택을 어떻게 처리할지 선택합니다:
* **전역**: 이 워크플로우를 트리거하려면 레코드가 필요하지 않습니다. 워크플로우는 어디서든(어떤 객체에서도) 명령 메뉴 `Cmd+K`에서 트리거되며 레코드를 입력으로 사용하지 않습니다.
**Single** 및 **Bulk**에서 선택된 레코드가 워크플로우로 전달됩니다. 이는 특정 객체에 대해 구성되며, 워크플로우를 트리거하기 전에 여러 레코드를 선택할 수 있습니다.
* **Single**: 선택된 레코드 수만큼 워크플로우가 처음부터 끝까지 실행됩니다.
<Note>
**소프트 제한: 분당 100회 실행**. 이를 초과하면 워크플로우는 "Not Started" 상태로 유지되며, 백그라운드 작업에 의해 또는 다른 워크플로우가 대기열에 들어올 때 점진적으로 처리됩니다. 즉, 단일 트리거로 100개가 넘는 레코드를 선택할 수 있으며, 실행이 다소 느려질 뿐입니다.
</Note>
* **Bulk**: 전체 레코드 목록을 입력으로 하여 워크플로우가 한 번 실행됩니다. 이는 워크플로우에 [이터레이터 작업](/l/ko/user-guide/workflows/capabilities/workflow-actions#iterator)이 포함되어야 함을 의미합니다.
<Note>
이 방식은 더 고급이며, 워크플로우 실행 횟수를 최적화하려는 사용자에게 가장 적합합니다.
</Note>
<img src="/images/user-guide/workflows/manual_trigger.png" style={{width:'100%'}} />
**추가 구성**:
* 대상 객체 선택(단일 및 대량 사용 가능)
* 워크플로우 트리거를 위한 명령 아이콘 선택
* 내비게이션 바 배치 구성 (고정 또는 비고정)
**접근 방법**:
* `Cmd+K` 메뉴에서 수동 워크플로우 찾기 및 실행
* 상단 내비게이션 바의 사용자 정의 버튼 (구성된 경우)
## 시간 기반 트리거: 일정에 따라
정의한 일정에 따라 반복적으로 워크플로우를 시작합니다.
**구성**:
* 시간 단위 선택 (분, 시간, 일)
* 값을 입력하거나 고급 스케줄링을 위한 사용자 정의 크론 표현식을 사용
<Note>
**시간대**: 예약된 워크플로우는 **UTC**로 실행됩니다. 일일 일정의 시간을 설정할 때는 로컬 시간을 UTC로 변환하세요.
</Note>
## 외부 트리거: 웹훅
외부 서비스로부터 GET 또는 POST 요청을 수신하면 워크플로우를 시작합니다.
<img src="/images/user-guide/workflows/webhook_trigger.png" style={{width:'100%'}} />
**구성**:
* 워크플로우가 고유한 웹훅 URL을 제공합니다. 이를 복사하여 외부 시스템에서 호출할 엔드포인트로 추가하세요.
* POST 요청의 경우, Twenty가 어떤 데이터를 받을지 알 수 있도록 예상되는 본문 구조를 정의하세요. 이후 워크플로우에서 필요하게 될 수신 필드를 여기에서 추가하세요.
* 인증을 구성합니다(곧 지원 예정).
## 적합한 트리거 선택
| 사용 사례 | 권장 트리거 |
| ---------------- | --------------- |
| 새 리드 처리 필요 | 레코드 생성됨 |
| 데이터 변경 사항 동기화 필요 | 레코드 업데이트됨 |
| 가져오기/수동 데이터 처리 | 레코드 업데이트 또는 생성됨 |
| 삭제 후 정리 | 레코드 삭제됨 |
| 사용자에 의해 시작된 작업 | 수동 실행 |
| 반복 보고서 | 일정에 따라 |
| 외부 통합 | 웹훅 또는 일정에 따라 |

View File

@@ -0,0 +1,84 @@
---
title: Workflow 버전들
description: 워크플로 버전과 초안을 관리합니다.
---
## 버전 정보
워크플로를 활성화할 때마다 새 버전이 생성됩니다. 이를 통해 시간 경과에 따른 변경 사항을 추적하고 필요 시 이전 구성으로 되돌릴 수 있습니다.
## 버전 상태
| 상태 | 설명 |
| --------- | -------------------- |
| **초안** | 편집 중이며 아직 게시되지 않음 |
| **활성** | 트리거에 반응하는 라이브 버전 |
| **비활성화됨** | 이전에 활성화되었지만 수동으로 중지됨 |
| **보관됨** | 기록을 위해 보관된 이전 버전 |
## 초안 작업
활성 워크플로를 편집하면 변경 사항이 **초안**으로 저장됩니다. 업데이트 작업을 하는 동안에도 활성 버전은 계속 실행됩니다.
편집을 마치면 다음을 수행할 수 있습니다:
* **활성화**: 초안을 새 활성 버전으로 게시합니다(이전 버전은 보관됩니다)
* **폐기**: 초안을 삭제하고 현재 활성 버전을 유지합니다
## 버전 히스토리
### 이전 버전 보기
1. 워크플로를 엽니다
2. **버전** 탭을 클릭합니다
3. 타임스탬프와 함께 모든 이전 버전을 확인합니다
### 버전 복원
1. 복원하려는 버전을 찾습니다
2. **초안으로 사용**을 클릭합니다
3. 해당 버전이 새 초안으로 복사됩니다
4. 필요한 업데이트를 수행합니다
5. 준비되면 활성화합니다
## 모범 사례
### 버전 관리
* 운영 환경 준비가 되었을 때만 활성화합니다
* 버전 간에는 의미 있는 변경만 반영합니다
* 워크플로 이름이나 설명의 주요 변경 사항을 문서화합니다
* 활성화하기 전에 초안 모드에서 테스트합니다
### 변경 사항 되돌리기
* 새 버전에서 문제가 발생하면 이전 버전을 복원합니다
* 버전 기록을 사용해 무엇이 변경되었는지 추적합니다
* 복원한 버전은 항상 활성화 전에 테스트합니다
## 일반적인 워크플로
### 빠른 편집
1. 활성 워크플로에 소규모 변경을 적용합니다
2. 초안 모드에서 테스트합니다
3. 새 버전을 활성화합니다
### 대규모 수정
1. 이전 버전을 시작점으로 사용합니다
2. 초안에서 중요한 변경을 수행합니다
3. 모든 시나리오를 철저히 테스트합니다
4. 확신이 서면 활성화합니다
### 롤백
1. 현재 버전의 문제를 식별합니다
2. 기록에서 마지막으로 정상 동작한 버전을 찾습니다
3. **초안으로 사용**을 클릭합니다
4. 활성화하여 이전 동작을 복원합니다
## 관련 항목
* [워크플로 시작하기](/l/ko/user-guide/workflows/overview)
* [워크플로 실행](/l/ko/user-guide/workflows/capabilities/workflow-runs)

View File

@@ -0,0 +1,82 @@
---
title: Code 액션에서 배열 처리
description: 워크플로의 Code 액션에서 배열 입력을 올바르게 처리하는 방법을 알아보세요.
---
Code 액션에서 배열을 다룰 때 흔히 마주하는 두 가지 문제가 있습니다:
1. **문자열로 전달된 배열** — 외부 시스템이나 이전 단계에서 실제 배열이 아닌 문자열로 전달됨
2. **개별 항목을 선택할 수 없음** — 배열 전체만 선택할 수 있고, 그 안의 특정 필드는 선택할 수 없음
둘 다 Code 노드로 해결할 수 있습니다.
## 문자열에서 배열 파싱하기
배열은 워크플로 단계 간에 네이티브 배열이 아니라 문자열이나 JSON으로 전달되는 경우가 자주 있습니다. 다음과 같은 경우에 발생합니다:
* HTTP Request로 외부 API에서 데이터를 받을 때
* 웹훅 페이로드를 처리할 때
* 워크플로 단계 간에 데이터를 전달할 때
**해결책**: Code 액션의 시작 부분에 다음 패턴을 추가하세요:
```javascript
export const main = async (params: {
users: any;
}): Promise<object> => {
const { users } = params;
// Handle input that may come as a string or an array
const usersFormatted = typeof users === "string" ? JSON.parse(users) : users;
// Now you can safely work with usersFormatted as an array
return {
users: usersFormatted.map((user) => ({
...user,
activityStatus: String(user.activityStatus).toUpperCase(),
})),
};
};
```
핵심 구문 `typeof users === "string" ? `JSON.parse(users) : users\` 는 입력이 문자열인지 확인하고, 필요하면 파싱하며, 이미 배열인 경우 그대로 사용합니다.
## 배열에서 개별 필드 추출하기
웹훅이 `answers: [...]`와 같은 배열을 반환할 수 있지만, 이후 워크플로 단계에서는 **배열 전체**만 선택할 수 있고 그 안의 개별 항목은 선택할 수 없습니다.
**해결책**: 특정 필드를 추출하여 구조화된 객체로 반환하도록 Code 노드를 추가하세요:
```javascript
export const main = async (params: {
answers: any;
}): Promise<object> => {
const { answers } = params;
// Handle input that may come as a string or an array
const answersFormatted = typeof answers === "string"
? JSON.parse(answers)
: answers;
// Extract specific fields from the array
const firstname = answersFormatted[0]?.text || "";
const name = answersFormatted[1]?.text || "";
return {
answer: {
firstname,
name
}
};
};
```
Code 노드는 배열 대신 구조화된 객체를 반환합니다. 이후 단계에서는 변수 선택기에서 `answer.firstname` 및 `answer.name`과 같은 개별 필드를 선택할 수 있습니다.
<Tip>
**배열에서 필드를 추출하는 대신 배열을 순회(loop)하고 싶으신가요?** Code 또는 Logic Function 단계가 최상위 배열을 반환하는 경우, 해당 결과를 바로 [Iterator](/l/ko/user-guide/workflows/capabilities/use-iterator)에 전달할 수 있습니다. 해당 단계의 **Whole list** 옵션을 Iterator의 입력으로 선택한 다음, 루프 안에서 각 요소를 `{{iterator.currentItem}}`으로 참조하면 됩니다. 그 경우에는 배열을 객체로 변환할 필요가 없습니다.
</Tip>
<Tip>
코드 편집기 오른쪽 상단의 사각형 아이콘을 클릭하여 전체 화면으로 표시하세요 — 기본 편집기 너비가 제한되어 있어 유용합니다.
</Tip>

Some files were not shown because too many files have changed in this diff Show More