사람 검토
대부분의 콘텐츠는 엔진이 결과를 반환하는 즉시 배포할 수 있습니다. 하지만 예외도 있습니다. 규제 고지, 의료 안내문, 브랜드를 대표하는 헤드라인처럼 그런 콘텐츠는 고객이 불만을 제기한 뒤가 아니라, 실제로 공개되기 전에 사람이 번역을 읽고 승인해 주길 바라게 됩니다.
자동화된 흐름에 사람을 넣는 일반적인 방법은 대개 번거롭습니다. 누군가 읽는 동안 요청을 계속 열어 두거나, 자체 검토 대기열을 만들거나, 번역 벤더의 API를 직접 연동해야 하죠. 이 단계는 그 과정을 작업 내부에서 처리합니다. humanEdit이 활성화되면 비동기 작업은 엔진을 실행한 뒤 사람 단계에서 일시 중지됩니다. 이 사람은 사내 팀원일 수도, 외부 전문 인력일 수도 있습니다. 그리고 그들의 편집본으로 다시 이어서 진행되며, 그 결과는 뒤따르는 모든 단계로 전달됩니다.
이 단계는 로컬라이제이션 파이프라인에서 Rephrase 다음, Post-edit 이전에 실행되며, 다른 모든 단계와 마찬가지로 비동기 로컬라이제이션 API로 생성된 작업에만 적용됩니다. 파이프라인이 처음이신가요? 개요부터 시작하세요.
이 페이지에서 다루는 내용
일시 중지 방식#
기본 번역 단계가 끝난 뒤에는, 그리고 해당 단계가 켜져 있다면 Rephrase까지 끝난 뒤에는, 작업이 AI 번역을 사람이 하는 검토로 넘깁니다. 검토자는 내용을 읽고 그대로 승인하거나 수정본을 제출합니다. 그다음에야 작업이 계속 진행됩니다. 이렇게 나온 사람의 결과물은 승인본이든 수정본이든 이후 모든 단계의 입력이 되고, 최종적으로 작업의 outputData가 됩니다.
작업을 몇 분, 몇 시간, 심지어 하루 동안 멈춰 두는 데 가장 먼저 떠오르는 반론은 비용입니다. 아무 일도 일어나지 않는 동안 열린 요청이 자원을 계속 잡아먹기 때문이죠. 하지만 이 단계는 그런 방식으로 작동하지 않습니다.
대기는 연결 유지 방식이 아니라 이벤트 기반입니다
워크플로는 이벤트가 발생하면 다시 이어집니다. 즉, 검토자가 대시보드에서 제출할 때(내부 검토) 또는 번역 제공업체에서 콜백을 보낼 때(외부 검토) 재개됩니다. 촘촘한 루프로 폴링하지도 않고 연결을 계속 열어 두지도 않기 때문에, 긴 타임아웃이 있어도 백그라운드에서 컴퓨팅 자원을 소비하지 않습니다. 작업은 사람이 48시간 동안 응답하기를 기다릴 때도 모델을 기다리는 것과 같은 방식으로 대기합니다. 계속 도는 것이 아니라, 멈춰서 기다리는 것입니다.
각 언어와 디렉터리의 검토 담당자는 언어 및 디렉터리별로 설정합니다. 엔진의 휴먼 리뷰 설정에 따라 각각을 의사 결정 풀로 보내며, 자체 팀이나 외부 제공업체를 담당자로 지정할 수 있습니다. 어느 쪽이든 일시 중지, 재개, 이월 방식은 같으며, 담당 풀이 없는 번역은 검토 없이 배포됩니다.
내부 검토#
번역 검토는 Lingo.dev 대시보드에서 팀이 직접 진행합니다. 대기 중인 검토는 큐(/orgs/<org-id>/queue)에 사람이 하는 검토 항목으로 표시되며, 새 항목이 들어오면 검토자에게 알림이 전송됩니다. 검토자는 항목을 열어 필요한 키를 수정한 뒤 원문 그대로 승인을 누르거나, 수정이 있으면 수정 후 승인을 누릅니다. 버튼에는 수정 개수도 함께 표시되어 수정 2건 후 승인처럼 보입니다. 작업은 그 결과물을 받아 다시 진행됩니다.
선점이나 잠금은 없습니다. 검토가 어느 의사 결정 풀로 전달되는지에 따라 이메일 알림을 받을 사람이 정해집니다. 번역 검토 권한이 있는 사람은 누구나 아직 완료되지 않은 모든 검토를 확인하고 결정을 내릴 수 있습니다.
내부 검토는 Enterprise 플랜에서 사용할 수 있습니다. 이 기능이 포함된 플랜에서는 새 엔진이 내부 검토로 시작하고, 포함되지 않은 플랜에서는 외부 검토로 시작하며 내부 검토 옵션에는 Enterprise 태그가 표시됩니다. 팀 안에 언어 전문성이 있고, 외부 제삼자 없이 최종 문구를 완전히 직접 관리하고 싶을 때 적합합니다.
권한#
내부 검토는 조직 내 모든 사람에게 공개되지 않습니다. 검토 대기열은 권한 기반으로 접근이 제한되므로, 검토 중인 번역은 권한을 부여받은 사람에게만 표시됩니다. 조직 관리자는 역할(Settings → Roles)을 통해 접근 권한을 할당합니다:
| 권한 | 사용 가능해지는 기능 |
|---|---|
번역 검토 (engine:review_translations) | 큐에서 사람이 하는 검토 항목을 확인하고, 편집하고, 원문 그대로 또는 수정 후 승인할 수 있습니다 |
검토 관리 (org:manage_reviews) | 내부 검토의 이력과 통계를 볼 수 있습니다. 이 기능이 없으면 결정이 끝난 검토는 큐에 표시되지 않습니다 |
이 두 권한은 의도적으로 분리되어 있습니다. 검토자에게는 번역 검토만 있으면 됩니다. 이 하나의 권한으로 편집, 원문 그대로 승인, 수정 후 승인까지 모두 할 수 있습니다. 검토 관리는 운영을 총괄하는 사람을 위한 권한으로, 조직 전체의 검토 이력을 볼 수 있게 해 주지만 그 자체로는 큐 접근 권한이 포함되지 않습니다. 검토도 하고 보고도 하는 리드에게는 둘 다 부여하고, 큐에서만 작업하는 사람에게는 첫 번째만 부여하세요.
외부 검토#
특정 로캘을 담당할 내부 검토자가 없다면 외부 의사 결정 풀로 보내세요. Lingo.dev 명의의 계정이나 BLEND 같은 제공업체에 직접 개설한 계정을 이용하면 자격을 갖춘 전문 번역가에게 번역이 전달됩니다. 작업은 마찬가지로 일시 중지되며, 제공업체가 수정한 번역을 보내오면 재개됩니다. 코드는 전혀 바뀌지 않습니다. 달라지는 것은 문자열을 읽는 사람이지, 작업의 동작 방식이 아닙니다.
등급을 따로 선택할 필요는 없습니다. 마켓플레이스가 번역가의 등급을 직접 평가합니다. 외부 검토에는 단어당 요금이 부과됩니다. Lingo.dev 명의의 계정을 이용하면 Lingo.dev 요금제를 통해 청구되며, 제공업체에 직접 개설한 계정을 이용하면 해당 제공업체가 청구합니다.
외부 검토도 큐에 표시되며, 열면 검토자로 자격을 갖춘 번역가가 표시됩니다. 번역 검토 권한이 있는 사람은 이 항목을 열어 직접 이어받을 수 있습니다. 원문 그대로 승인 또는 수정 후 승인을 선택하면 번역가를 기다리지 않고 그 자리에서 작업이 종료됩니다. 이 검토 이어받기 확인 창에는 확정 전에 비용이 안내됩니다. 이어받기는 아직 어떤 번역가도 작업을 시작하지 않았을 때만 무료이며, 일단 시작한 뒤에는 그 결과를 사용하든 사용하지 않든 번역가 비용이 그대로 청구됩니다.
이 부분은 분명하게 짚고 넘어갈 필요가 있습니다. 외부 검토는 실제 사람 번역가가 반대편에 있는 방식이므로, 그에 따른 처리 시간과 비용이 듭니다. 더 빠른 모델이 아닙니다. 사람의 판단이 핵심인 경우, 즉 규제 문구나 리스크가 큰 카피에 사용하고, 그런 수준의 검토가 필요하지 않은 대부분의 콘텐츠에는 AI 전용 경로를 활용하세요.
품질 임계값#
모든 번역에 사람이 필요한 것은 아닙니다. 사람이 하는 검토 설정에서 품질 임계값(1–100)을 설정하면, 검토로 보내기 전에 AI 평가자가 각 번역에 점수를 매깁니다. 임계값 이상이면 사람을 거치지 않고 번역이 그대로 전달되며 humanEdit 단계는 skipped로 기록됩니다. 임계값보다 낮으면 번역은 평소처럼 검토로 넘어갑니다. 모든 항목을 검토하려면 이 필드를 비워 두세요. 구성에서는 qualityThreshold의 humanEdit입니다.
이 방식으로 전달된 번역에는 사람의 결과물이 없으므로 Post-edit는 실행되지 않습니다.
타임아웃#
사람이 개입하는 단계에는 AI 단계에는 없는 위험이 있습니다. 사람이 끝내 응답하지 않을 수 있다는 점입니다. 검토자가 휴가 중일 수도 있고, 제공업체가 밀려 있을 수도 있으며, 항목이 잊힐 수도 있습니다. 제한이 없다면 작업은 영원히 기다리게 됩니다.
그래서 대기 시간에는 상한이 있습니다. 사람이 하는 검토 설정에서 워크플로가 사람의 결과물을 얼마나 오래 기다릴지 시간 초과를 시간 단위로 설정할 수 있습니다. 구성에서는 timeoutHours입니다. 이 설정은 두 검토 모드 모두에 적용됩니다. 응답 없이 시간 초과가 지나면 해당 단계는 skipped로 표시되고 작업은 AI 번역을 최종 결과물로 사용해 계속 진행됩니다. 기본값은 48시간입니다. 큐에서는 시간 초과된 검토가 결정 없이 종료됨으로 표시됩니다.
대가를 분명히 말하자면, 타임아웃이 발생하면 검토되지 않은 AI 번역이 그대로 배포됩니다. 대부분의 콘텐츠에는 이것이 올바른 대체 동작입니다. 무기한 멈춰 있는 작업보다 배포된 번역이 낫기 때문입니다. 하지만 분명한 트레이드오프이기도 합니다. 어떤 경우에도 사람이 반드시 승인해야 하는 콘텐츠라면 넉넉한 타임아웃을 설정하고 스킵 시 알림을 받으세요. 검토가 있으면 좋은 정도인 콘텐츠라면 짧은 타임아웃이 파이프라인을 계속 움직이게 해줍니다.
타임아웃은 작업별이 아니라 단계별입니다
타임아웃은 이 단계가 사람의 결과물을 얼마나 오래 기다릴지만 제어합니다. 작업의 나머지 부분이 얼마나 오래 걸리는지와는 별개입니다. 대기가 이벤트 기반이므로, 타임아웃이 길어지면 검토자가 느릴 경우 최종 결과물까지의 지연 시간만 늘어날 뿐 백그라운드 컴퓨팅 비용은 절대 발생하지 않습니다.
단계 활성화#
humanEdit은 엔진의 파이프라인 탭에서 설정합니다. 파이프라인 단계 설정에 관한 일반적인 안내는 파이프라인 구성을 참고하세요. 이 단계의 설정 구조는 다음과 같습니다.
{
"humanEdit": {
"enabled": true,
"timeoutHours": 48,
"qualityThreshold": 85,
"routes": [
{ "pool": "<legal-reviewers-pool-id>", "match": { "locales": ["de"], "path": ["docs/legal/**"] } },
{ "pool": "<lingo-external-pool-id>", "match": { "locales": [] } }
]
}
}routes은 각 언어와 디렉터리를 의사 결정 풀로 보냅니다. locales이 비어 있으면 모든 언어를, path가 생략되면 모든 디렉터리를 의미합니다. 가장 구체적인 경로가 우선 적용되며, 어떤 경로에도 해당하지 않는 대상은 검토 없이 배포됩니다. provider 및 tier은 이전 방식의 필드로, routes이 비어 있을 때만 읽습니다. timeoutHours은 시간 초과에서 설정한 제한값이며, 선택 사항인 qualityThreshold(1~100)은 품질 임계값에서 설정한 값입니다.
경로가 보관 처리되었거나 삭제된 풀을 가리키면 작업을 시작할 수 없습니다. 엔진이 다른 풀로 보내도록 설정될 때까지 작업은 HumanReviewPoolUnusable 오류로 실패합니다.
이 단계가 실행되면 작업 아래의 stepId: "humanEdit"에 상태가 completed, failed, 또는 skipped로 기록됩니다. 이는 모든 단계가 생성하는 동일한 단계 레코드입니다. 이러한 레코드를 읽는 방법은 파이프라인 실행 관찰에서 다룹니다.