템플릿 병합 규칙
POST /templates/merge로 여러 소스를 병합할 때 적용되는 규칙입니다.
핵심 규칙
병합 결과는 다음 규칙에 따라 결정됩니다.
1. 앞 소스 우선 원칙
아래 항목들은 소스에 템플릿이 포함되어 있는지 여부에 따라 적용되는 값이 달라집니다.
| 항목 | 소스에 템플릿이 있는 경우 | 소스에 템플릿이 없는 경우 (파일만) |
|---|---|---|
| 템플릿 제목 | 가장 앞에 있는 템플릿의 제목 | 임시_템플릿_{날짜} |
| 문서 라벨 | 가장 앞에 있는 템플릿의 라벨 | 빈 배열 |
| 진본증명도장 | 가장 앞에 있는 템플릿의 설정 | 비활성화 |
| 외부 참조자 | 가장 앞에 있는 템플릿의 값 | 빈 배열 |
| 결재선 | 모든 소스가 동일해야 병합 가능 | 빈 값 |
2. 서명자 병합
서로 다른 소스의 서명자가 동일 인물인지 판단하여, 동일하면 병합, 아니면 별도 유지합니다.
서로 다른 소스의 서명자를 role → name → contact 순으로 비교하여, 3개의 속성이 모두 일치하면 병합합니다.
병합된 서명자의 설정은 앞 소스의 값을 따릅니다.
아래 속성 중 하나라도 불일치하면 분리합니다. 분리 시 앞 소스의 서명자는 원본 역할을 유지하고, 뒤 소스의 서명자부터
- 1, - 2 접미사가 추가됩니다.
비교 항목이 양쪽 모두 미설정인 경우 일치로 취급합니다. 예를 들어, 두 소스의 서명자 모두 이름이 비어 있으면 이름은 일치한 것으로 봅니다.
병합된 서명자의 설정 규칙:
| 항목 | 규칙 |
|---|---|
| 입력란(fields) | 양쪽 소스의 입력란이 합산됨 |
| 서명 방식(사인/도장) | 앞 소스의 설정으로 통일 |
한 번의 서명 옵션 | 앞 소스의 설정으로 통일 |
서명자 크기 조절 여부 | 앞 소스의 설정으로 통일 |
| 인증수단(verification) | 앞 소스의 설정만 적용 |
| 첨부파일 요청 | 모든 소스의 첨부파일 요청을 유지 |
분리된 서명자의 역할명 중복 처리:
병합되지 않은 서명자들 간에 역할명이 동일한 경우, 첫 번째 서명자는 원본 역할을 유지하고, 이후 중복되는 서명자부터 순서대로 역할에 - {숫자}가 추가됩니다.
예:
근로자,근로자 - 1,근로자 - 2
서명자 순서 결정:
서명자를 가진 소스 중 가장 앞 소스가 순서 있는 서명(ordered signing)이면, 소스 순서대로 서명 순서가 부여됩니다.
예: 템플릿 A(갑, 을, 병) + 템플릿 B(을, 무, 기) → 병합 결과: 갑, 을, 병, 무, 기 ("을"은 동일 인물로 병합, 나머지는 소스 순서대로 배치)
가장 앞 소스가 순서 없는 서명(unordered signing)이면, 서명 순서는 모두 1로 설정됩니다.
서명자가 1명인 템플릿은 순서 있는 서명으로 취급됩니다.
3. DataLabel 자동 변환
병합 전 템플릿의 데이터별 dataLabel을 시스템이 자동으로 변환하여 중복 가능성을 최소화합니다.
-
모든 소스의 dataLabel이 변환 대상입니다.
-
변환 형식:
{기존_dataLabel}_{템플릿_제목}_{템플릿_ID_앞_8자리} -
dataLabel 최대 길이: 100글자
각 구성 요소의 축약 규칙
| 구성 요소 | 축약 규칙 |
|---|---|
| 기존 dataLabel | 45자 초과 시 앞 42자 + ... (총 45자) |
| 템플릿 제목 | 45자 초과 시 앞 20자 + ... + 뒤 22자 (총 45자) |
| 템플릿 ID | 앞 8자 고정 |
변환된 dataLabel이 소스 간에 여전히 중복되는 경우 병합이 실패합니다. 서로 다른 소스에서 동일한 dataLabel과 유사한 템플릿 제목을 사용하는 경우 주의하세요.
체크박스 필드 그룹에 속하는 체크박스 필드의 dataLabel은 위 변환 규칙이 적용되지 않습니다.
상세 규칙
열람자 병합
열람자를 가진 소스 중 가장 앞에 있는 소스의 열람자를 사용합니다.
열람용 템플릿끼리 병합하는 경우, 열람자를 가진 소스 중 가장 앞에 있는 소스의 열람자 1명만 유지됩니다.
필드(Field) 처리
각 소스의 필드 위치(position.page)는 병합된 PDF의 페이지 오프셋에 맞게 자동으로 재계산됩니다. x, y 좌표(상대값 0~1)는 변경되지 않습니다.
서명 필드 처리
서명자가 병합된 경우, 뒤 소스의 서명 필드는 다음과 같이 조정됩니다.
| 항목 | 조정 규칙 |
|---|---|
| 서명 방식(사인/도장) | 앞 소스의 서명자 설정으로 통일 |
한 번의 서명 옵션 | 앞 소스의 서명자 설정으로 통일 |
| 필드 위치·크기 | 서명 방식 변경 여부에 따라 자동 조정 |
필드 그룹(Field Group) 처리
| 필드 그룹 타입 | 병합 규칙 |
|---|---|
CHECKBOX_GROUP | 모든 소스의 체크박스 그룹을 그대로 유지합니다. |
첨부파일(Attachment) 처리
| 첨부파일 유형 | 병합 규칙 |
|---|---|
| 요청자 첨부파일 | 소스 중 가장 앞에 있는 소스의 요청자 첨부파일을 사용합니다. |
| 서명자 첨부파일 | 모든 소스의 서명자 첨부파일을 유지합니다. |
인증수단(Verification) 처리
참여자 유형 | 병합 규칙 |
|---|---|
서명자 | 서명자가 병합된 경우, 앞 소스 서명자의 인증수단을 사용합니다. |
열람자 | 열람자를 가진 소스 중 가장 앞에 있는 소스의 인증수단을 사용합니다. |
주의사항
- 임시 템플릿 TTL: 2시간. 만료된 템플릿으로 서명 요청 시
404 Not Found가 발생할 수 있습니다. - 동일 임시 템플릿 ID로 유효기간 내 복수 서명 요청 가능합니다. (각각 별개 문서 생성)
- PDF 페이지 순서는
sources배열 순서를 따릅니다.
병합 제한
병합 실패 조건설정 관련
- 설정 고정 템플릿을 병합하는 경우
- 서명용 템플릿과 열람용 템플릿을 병합하는 경우
- 모든 소스의 결재선이 동일하지 않은 경우
파일 크기
- 병합된 문서 파일의 크기가 10MB를 초과하는 경우
필드 및 참여자 수
- 서명자 수가 30명을 초과하는 경우
- 전체 입력란이 2,000개를 초과하는 경우
- 서명 필드가 100개를 초과하는 경우
- 이미지 필드가 7개를 초과하는 경우
- 드롭다운 필드가 100개를 초과하는 경우
- 첨부파일이 30개를 초과하는 경우
Updated 4 days ago
