* 워크플로 개요
* 고급 과정 1편: “워크플로 빌더”에서 데이터 흐름과 분기/병합 전략 소개
* 목표: 노드 실행 순서 이해, 분기 나누기·병합, 루프와 배치 처리, 레이트 리밋 대응
* 노드/분기 실행 순서
* 기본 규칙: 분기는 **캔버스의 위→아래, 같은 높이면 좌→우** 순으로 **분기 단위로 완결 실행**
* 예시 실행 순서: Weight → Weight 1 → Weight 2 → Weight 3 → Weight 4 → Weight 5
-(workflow 옵션으로) **레벨별 실행**(각 분기의 1번째 노드→2번째 노드…)로 바꿀 수 있으나 **권장하지 않음**
* 분기들이 서로 출력에 의존한다면 **실행 순서를 바꾸기보다 병합 후 사용**이 권장
* 데이터 분기(나누기)
* **If 노드**: 조건(참/거짓)으로 두 분기
* **Switch 노드**: n개의 분기 + **fallback**(미매칭용) 포함, 입력 아이템을 여러 분기로 분배 (예: 10개 → 1/1/1/7)
* **하나의 노드에서 여러 출력으로 분기**: 해당 노드의 **모든 아이템이 각 분기로 복제 전달**(이후 상기 실행 순서 적용)
* 사용 예: 동일 대상에 대해 **서로 다른 작업 집합**을 병렬로 적용하고 싶을 때
* 데이터 병합(Merge 노드)
* 입력 **두 개**를 모두 대기 후 동작
* 모드:
* **Append**: 두 입력의 아이템을 **단순 연결**(유니온과 유사)
* **Choose**: 입력1/입력2/둘 다 안 통과 중 **선택** → **동기화/게이트** 용도(둘 이상 분기 완료 여부 확인)
* **Combine**:
* **필드 기준**(키 매칭), **위치 기준**(인덱스 매칭), **모든 조합**(카테시안)
* **SQL 조인 비유**:
* INNER/OUTER: 매칭 유지/비유지 선택
* **LEFT JOIN**: 입력1(첫 번째)을 확장
* **RIGHT JOIN**: 입력2(두 번째)을 확장
* **UNION**: Append
* 아이템 반복/배치 처리(Loop Over Items / Split In Batches)
* 대부분의 노드는 **아이템당 1회** 실행 → 별도 루프 불필요
* 유용한 상황:
* **대량 데이터** 또는 **단일 입력→다수 출력** 노드(예: Google Sheets 읽기)
* **레이트 리밋** 대응: 호출을 배치로 나누고 **Wait 노드**로 간격 조절
* 예: 분당 10회, 10초당 100회 같은 제한 분산
* 디버깅:
* 출력 패널의 **Run**에서 **각 실행(run)/반복(iteration)** 추적
* 루프 내 노드에 **초록 체크+숫자**: 현재 **반복 인덱스**
* 각 노드의 **출력 아이템**을 반복별로 확인 가능
* 데모 ①: 연락처 분류 후 단순 재결합(Append)
* 입력: 연락처 10개 → **If**로 personal(3) vs professional(7)
* 각 분기에서 **Edit Fields**로 `email_type: personal/professional` 태그 부여
* \*\*Merge(Append)\*\*로 재결합 → 다시 **10개** 아이템(위에서 personal이 먼저, 이어서 professional)
* 데모 ②: 회사 정보로 **풍부화(Enrichment)**(Combine)
* 별도 시트: 회사 `website`, `country`(및 `domain` 등) 보유
* **professional 분기**의 연락처를 회사 정보로 **확장**
* 연락처에 **간단 JS**로 이메일에서 **`@` 뒤 도메인** 추출 → `domain` 필드 생성
* 회사 시트에도 매칭 키(`domain` 등)가 존재
* **Merge(Combine·필드 기준)** 설정:
* 입력1: 회사 목록(예: `domain`/`website`/`country`)
* 입력2: 태깅된 연락처(`domain`)
* **유지 정책**: **입력2 전부 유지 + 입력1 데이터 추가**(LEFT JOIN)
* 결과: 예) *Marcus Bennett* → *Quantum* 소속, `website`/`country`가 연락처에 합쳐짐
* 실행 팁: 회사 목록 읽기는 **Execute Once**(한 번만 조회)로 설정
* 실무 팁 & 권장사항
* **분기 의존성**이 있으면 **병합 후 사용**(실행 순서 강제 변경 지양)
* **캔버스 배치**가 실제 **실행 순서**에 영향(위→아래, 좌→우)
* **Switch의 fallback**을 활용해 미매칭 처리
* 풍부화는 **필드 매칭(권장)**, 불가 시 **위치 매칭**이나 **API 호출+Combine**으로 대안 구성
* 대량/외부 API 처리 시 **배치+대기**로 레이트 리밋 준수 및 안정성 확보