종료 리다이렉트
Terminal redirect는 Survey Link가 complete, screenout, quota full 같은 종료 상태에 도달한 뒤 응답자를 외부 URL로 보낼 때 사용합니다. <redirect> block이 없으면 현재 기본 종료 페이지를 사용하고, export되는 응답 데이터의 redirectGroup은 null로 저장됩니다.
최소 기본값
Redirect block은 선택 사항입니다. GUI Mode 또는 HTML Mode에서 활성화하면 정확히 하나의 default group이 있어야 합니다. 저장 시 group이 하나뿐이면 자동으로 default가 canonical source에 붙습니다.
<redirect>
<group title="Default Group" default />
</redirect>
규칙:
<redirect>는 survey source에 최대 한 번만 작성할 수 있습니다.<redirect>내부에는 여러<group>을 작성할 수 있습니다.<redirect>가 있으면 정확히 하나의 redirect group에default가 있어야 합니다.<redirect>가 없는 survey는 built-in terminal page를 유지하고redirectGroup을null로 저장합니다.<redirect>가 없는 survey에 redirect group path 또는?redirectGroup=이 들어오면 Survey Link 접속을 차단하고 응답을 저장하지 않습니다.
Group
Redirect group은 respondent에게 적용할 terminal route list를 선택합니다.
<redirect>
<group title="Default Group" default />
<group name="v1" title="Control list" />
<group name="v2" title="Partner list">
<route url="https://example.com/complete" if="$status.complete" />
<route url="https://example.com/screenout" if="$status.screenout" />
<route url="https://example.com/quotafull" if="$status.quotafull" />
</group>
</redirect>
| Attribute | 필수 여부 | 의미 |
|---|---|---|
name | No | URL에서 선택할 수 있는 group key입니다. 다른 변수명과 동일하게 letter로 시작하고 letter, number, _만 사용할 수 있습니다. |
title | No | GUI Mode에 표시되는 author-facing label입니다. |
default | group 하나 | 기본 Survey Link URL에서 사용할 fallback group입니다. |
Group 규칙:
- Redirect group에서는 group-level
if를 지원하지 않습니다. - 한
<redirect>안에서 groupname은 중복될 수 없습니다. name이 없는 group은 최대 하나만 허용됩니다.- 이름이 있는 group도 default가 될 수 있습니다.
name="v3" default이면 기본 Survey Link URL은/s/{surveyId}/v3으로 canonicalize되고redirectGroup은"v3"로 저장됩니다. - 이름이 없는 default group을 기본 Survey Link URL로 선택하면
redirectGroup은null로 저장됩니다.
Route
Route는 respondent가 complete, screenout, quota full 같은 terminal status에 도달한 뒤에만 평가됩니다.
<redirect>
<group name="v3" title="Template route" default>
<route
url="https://test.com?source={{ $params.source }}"
if="$status.complete && Q1.o1"
/>
</group>
</redirect>
| Attribute | 필수 여부 | 의미 |
|---|---|---|
url | Yes | Absolute http 또는 https destination입니다. Template Expression을 사용할 수 있습니다. |
if | Yes | 최종 응답과 $status helper로 평가하는 expression입니다. |
Route 규칙:
- Route는 source order대로 평가되며, 처음으로 true가 된 route가 선택됩니다.
- 매칭되는 route가 없으면 Survey Link는 built-in default terminal page를 표시합니다.
- 같은 group 안에서 중복된
ifexpression은 hard error입니다. - 최종 URL이 unsafe 또는 invalid이면 terminal save를 차단하고 redirect configuration error를 표시합니다.
- Route URL의 Template Expression 오류는 조용히 navigation하지 않고 redirect error로 처리합니다.
- Template Expression 값은 URL component로 인코딩된 뒤 삽입되므로 respondent answer와
$params값이 추가 query parameter를 만들거나 destination URL 구조를 바꿀 수 없습니다.
Route helper context
Redirect route는 최종 response status가 결정된 뒤 평가됩니다. Route if expression은 아래 값을 읽을 수 있습니다.
Q1.o1,AGE.value같은 final answer Question Object.$status.complete,$status.screenout,$status.quotafull.- Reserved system key가 제거된 Survey Link URL
$params. $now와Luxondate helper.- Registered safe script helper.
Route URL Template Expression은 동일한 answer/helper context를 사용합니다. 단, $status는 route matching에서만 의미가 있습니다. Redirect evaluation은 terminal 단계이며 current question에 묶여 있지 않으므로 $curr는 사용할 수 없습니다.
<route
url="https://example.com/complete?source={{$params.source}}&year={{$now.year}}"
if="$status.complete && Q1.o1"
/>
URL 선택과 저장 데이터
Survey Link는 path group을 먼저 보고, 없을 때 query string을 fallback으로 사용합니다.
| URL | 선택 group | 저장되는 redirectGroup |
|---|---|---|
/s/{surveyId} | Default group | Named default이면 group name. Unnamed default 또는 no redirect이면 null. |
/s/{surveyId}/v1 | name="v1" | "v1" |
/s/{surveyId}?redirectGroup=v2 | path group이 없을 때 name="v2" | "v2" |
/s/{surveyId}/v1?redirectGroup=v2 | name="v1" | "v1" |
redirectGroup은 response metadata이며 response export에도 포함됩니다. redirectGroup query key는 group selection 전용 예약 키이므로 $params에는 노출되지 않습니다.
TEST와 LIVE 동작
- TEST mode는 자동 이동하지 않습니다. Redirect preview card와 destination link를 표시합니다.
- LIVE mode는 response persistence가 성공하거나 기존 terminal runtime 정책에 따라 의도적으로 skip된 뒤에만 이동합니다.
- Redirect configuration, group selection, unsafe URL 오류는 persistence 이전에 progression을 차단하므로 잘못된 redirect response는 저장되지 않습니다.
GUI Mode 편집
Workbench의 기존 Survey Link settings dialog에서 설정합니다. Dialog는 현재 survey-config column을 유지하고 Redirect column을 추가합니다.
GUI Mode가 지원하는 항목:
- 기본 종료 페이지를 유지하는 disabled redirect state.
- Radio control을 통한 default group 선택.
name,titlefield를 가진 group accordion.url,ifroute editor.- Group과 route add/remove control.
- Route URL field의 Template Expression highlighting.
Group이 하나만 남으면 GUI Mode는 해당 group을 default로 유지하고, 다른 group을 추가하기 전까지 삭제를 비활성화합니다.