포켓 모드
휴대폰이나 태블릿에서 주석 작업을 합니다. 터치 기기는 엄지 영역에 컨트롤을 둔 스와이프 카드 스택으로 자동 연결되며, 동기화가 붙은 오프라인 주석과 PWA 홈 화면 설치를 지원합니다.
v2.7.0의 새 기능
Potato는 휴대폰과 태블릿에서 하는 주석 작업을 지원합니다. 포켓 모드를 켜면 작업을 여는 터치 기기가 자동으로 모바일 인터페이스로 연결됩니다. 엄지 영역에 라벨 버튼을 둔 카드 스택, 스와이프 이동, 자동 동기화가 붙은 오프라인 주석, PWA 홈 화면 설치를 제공합니다. 데스크톱 사용자는 평소의 인터페이스를 그대로 보며 달라지는 것이 없습니다.

모든 주석 유형이 휴대폰에 어울리는 것은 아닙니다. 스팬 강조와 바운딩 박스는 데스크톱 작업입니다. Potato는 이 점을 분명히 다룹니다. 터치 가능한 작업은 모바일 인터페이스를 받고, 그렇지 않은 작업은 품질이 떨어진 UI 대신 분명한 경고를 받으며, 어느 쪽이든 관리자 대시보드에서 누가 어떤 종류의 기기로 주석하고 있는지 확인할 수 있습니다.
구성
pocket:
enabled: true # master switch for the mobile interface (default: false)
auto_redirect: true # send phones/tablets to /pocket automatically (default: true)
batch_size: 25 # items fetched per batch; also the offline queue depth (1-200)어떤 주석 유형이 모바일에 적합한가
| 터치 가능(모바일에서 제공) | 데스크톱 전용 |
|---|---|
radio, multiselect, likert, slider, number, text/textbox, pure_display | span, 이미지 및 바운딩 박스, 비디오, 오디오, multirate, 그 밖의 모든 것 |
작업이 터치 가능하려면 그 작업의 스킴이 전부 왼쪽 열에 있어야 합니다. 데스크톱 전용 스킴이 하나라도 섞인 작업은 터치로 낮춰 제공되지 않습니다. 휴대폰은 연결이 전환되지 않고, 이 작업이 모바일에 최적화되어 있지 않다는 닫을 수 있는 알림을 보게 됩니다.
모바일 어노테이터를 염두에 두고 있다면 그에 맞게 설계하십시오. 라디오 스킴 하나짜리 작업이 가장 이상적이며, 한 번의 탭이 곧 라벨이 붙은 항목 하나가 됩니다.
기기 연결이 결정되는 방식
| 기기 | 터치 가능한 작업, 포켓 모드 켜짐 | 터치 가능하지 않은 작업 |
|---|---|---|
| 데스크톱 | 평소 인터페이스 | 평소 인터페이스 |
| 휴대폰 / 태블릿 | 모바일 인터페이스로 전환 | 평소 인터페이스 + 닫을 수 있는 경고 |
감지는 두 개의 층에서 이루어집니다.
- 서버 측(User-Agent). 휴대폰과 대부분의 태블릿은 스스로를 밝히므로, 데스크톱 페이지가 그려지기도 전에 전환됩니다. API 클라이언트와 알 수 없는 에이전트는 데스크톱으로 간주되므로 스크립트와 연동은 전환되는 일이 없습니다.
- 클라이언트 측(포인터 확인). 일부 태블릿은 데스크톱인 척합니다. 예컨대 iPadOS Safari는 자신을 Mac이라고 알립니다. 주석 페이지의 스크립트가 기기의 주 포인터가 거친 포인터(손가락)인지 확인해 그런 기기도 전환합니다. 터치스크린 노트북은 주 포인터가 트랙패드이므로 영향을 받지 않습니다.
이 전환은 주석 단계에 있는 어노테이터에게만 적용됩니다. 동의, 안내, 설문 페이지는 그대로입니다.
데스크톱 사용자도 직접 선택할 수 있습니다. 포켓 모드를 쓸 수 있는 작업에서는 내비게이션 바에 /pocket으로 가는 간편 보기 링크가 표시되며, 여기서 카드 스택은 항목당 클릭 한 번으로 빠르게 라벨을 붙이는 화면이 됩니다. 모바일 사용자는 데스크톱 사이트 링크로 빠져나갈 수 있고, 그 선택은 세션 동안 유지됩니다.
모바일 인터페이스
- 카드 스택 — 카드 하나에 항목 하나입니다. 왼쪽으로 밀면 다음, 오른쪽으로 밀면 이전이며, 터치가 아닌 환경을 위한 화살표 버튼도 있습니다. 지원하는 기기에서는 저장할 때마다 짧은 진동으로 확인해 줍니다.
- 엄지 영역 컨트롤 — 라벨 버튼은 엄지가 실제로 닿는 화면 아래 3분의 1에 놓입니다. 터치 대상은 48px 이상이고, 노치가 있는 휴대폰에서는 안전 영역 여백을 지키며,
prefers-reduced-motion을 따릅니다. - 스킴 렌더링 — 라디오 하나짜리 작업과 likert 작업은 탭하면 자동으로 다음으로 넘어갑니다. 스킴이 여럿인 카드는 모든 컨트롤과 함께 명시적인 저장 후 다음 버튼을 보여줍니다.
- 오프라인 주석 — 현재 배치를 미리 받아 localStorage에 복사해 둡니다. 연결이 끊겨도 주석 작업은 이어지고, 칩에 "Offline — N saves queued"가 표시되며, 다시 연결되면 대기열이 자동으로 전송됩니다. 첫 방문 이후에는 서비스 워커가 앱 셸을 캐시하므로 연결이 없어도 페이지가 열립니다. 와이파이에서 배치를 미리 받아 두면 어디서든 주석할 수 있고, 기기가 다시 통신 범위에 들어오면 동기화하면 됩니다.
- 앱으로 설치 — 페이지가 웹 매니페스트를 함께 제공하므로 "Add to Home Screen"을 누르면 자체 아이콘을 가진 독립 앱이 됩니다.
저장은 데스크톱 페이지와 같은 /updateinstance 엔드포인트와 페이로드를 씁니다. 포켓 모드는 새로운 쓰기 경로를 더하지 않으므로 내보내기, 일치도 통계, 관리자 대시보드, 품질 관리 모두 평범한 주석으로 봅니다.
기기 탭
관리자 대시보드에 기기 탭이 생겨 어노테이터별로 마지막으로 확인된 기기, 기기 종류별 방문 횟수, 모바일 인터페이스를 사용한 횟수, 마지막 접속 시각을 보여줍니다. 요약 줄이 핵심을 알려 줍니다("12명 중 3명이 휴대폰이나 태블릿으로 접속했습니다").
이는 양쪽 방향으로 쓸모가 있습니다. 작업이 터치 가능하지 않은데도 기기 탭에 휴대폰을 쓰는 어노테이터가 보인다면, 그들은 경고를 보고도 그대로 진행한 것이므로 결과물을 한 번 들여다볼 만합니다. 그리고 방문 기록은 포켓 모드를 켜든 켜지 않든 남기 때문에, 켜기 전에 "포켓 모드를 켜면 도움이 될까?"라는 물음에 이 탭이 답해 줍니다.
데이터는 <output_annotation_dir>/pocket/device_visits.json에 사용자별 집계로만 저장됩니다. 항목 단위 추적은 없습니다.
문제 해결
- 휴대폰이 전환되지 않습니다.
pocket.enabled와pocket.auto_redirect가 true인지, 작업이 터치 가능한지(GET /pocket/api/routing이capable: true를 보여주는지), 그리고 사용자가 이번 세션에서 "데스크톱 사이트"를 고르지 않았는지 확인하십시오. - iPad가 처음 열 때 데스크톱 페이지를 받습니다. iPadOS Safari는 자신을 Mac이라고 알리므로 서버가 잡아낼 수 없습니다. 페이지의 스크립트가 실행되고 나면 클라이언트 측 포인터 확인이 전환해 줍니다.
- 모바일에서는 "끝났다"고 하는데 데스크톱 페이지에는 남은 항목이 보입니다. 동기화되지 않은 오프라인 저장이 남아 있을 수 있습니다. 동기화 칩이 대기열을 보여주며, 기기가 다시 온라인이 되면 전송됩니다.
추가 자료
- 작업 할당 — 모바일 사용자도 다른 사람들과 같은 대기열에서 항목을 받습니다
- 관리자 대시보드 — 기기 탭이 있는 곳
- Prolific과 MTurk에서 연구 진행하기
- 원본 문서