Skip to content

口袋模式

在手機或平板上標註。觸屏裝置會被自動路由到可滑動的卡片流,控制元件落在拇指夠得著的區域,支援帶同步的離線標註,還能作為 PWA 安裝到主螢幕。

v2.7.0 新增

Potato 支援在手機和平板上標註。啟用口袋模式(Pocket Mode)後,開啟任務的觸屏裝置會被自動路由到移動端介面:卡片流、位於拇指區的標籤按鈕、滑動切換、帶自動同步的離線標註,以及作為 PWA 安裝到主螢幕。桌面端使用者看到的仍是常規介面,對他們沒有任何變化。

手機上的可滑動卡片流,帶拇指區按鈕和離線同步。

並不是所有標註類型都適合放到手機上。片段高亮和邊界框是桌面端的活兒。Potato 對此毫不含糊:支援觸屏的任務會拿到移動端介面,不支援的任務會得到一條明確的警告而不是一個湊合的介面;無論哪種情況,管理儀表板都會顯示誰在用哪類裝置標註。

配置

yaml
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)

哪些標註類型適合移動端

支援觸屏(會在移動端提供)僅限桌面端
radiomultiselectlikertslidernumbertext/textboxpure_displayspan、影像與邊界框、影片、音訊、multirate,以及其餘全部

一個任務只有在所有方案都屬於左列時才算支援觸屏。只要混入一個僅限桌面端的方案,任務就不會被降級到觸屏上:手機不會被重定向,它們看到的是一條可關閉的提示,說明該任務未針對移動端最佳化。

如果你預期會有移動端標註者,就按移動端來設計。最理想的情況是隻有一個 radio 的任務,一次點選就等於一個標好的條目。

裝置路由如何工作

裝置任務支援觸屏且已啟用 pocket任務不支援觸屏
桌面端常規介面常規介面
手機 / 平板重定向到移動端介面常規介面 + 一條可關閉的警告

檢測分兩層進行。

  1. 服務端(User-Agent)。 手機和大多數平板會表明自己的身份,在桌面頁面渲染之前就被重定向。API 客戶端和無法識別的 agent 算作桌面端,因此指令碼和各類整合永遠不會被重定向。
  2. 客戶端(指標檢測)。 有些平板會偽裝成桌面端。比如 iPadOS 上的 Safari 就把自己報告成 Mac。標註頁面上的一段指令碼會檢查裝置的主要指標是不是粗指標(手指),並把這類裝置也重定向過去。觸屏筆記本不受影響,因為它們的主要指標是觸控板。

路由只作用於處在標註階段的標註者。同意書頁、說明頁和問卷頁不受影響。

桌面端使用者可以主動切換:在支援 pocket 的任務上,導航欄會顯示一個指向 /pocket緊湊檢視連結,在那裡卡片流會變成每條一次點選的快速標註檢視。移動端使用者可以用桌面版網站連結切回去,這個選擇在本次會話內一直有效。

移動端介面

  • 卡片流 —— 一條一張卡片。向左滑動到下一條,向右滑動回上一條,另有箭頭按鈕供非觸屏使用。在支援的裝置上,每次儲存都會有一下觸覺反饋作為確認。
  • 拇指區控制元件 —— 標籤按鈕位於螢幕下方三分之一處,也就是拇指真正夠得著的地方。觸控目標不小於 48px,在劉海屏上會遵守安全區域內邊距,同時尊重 prefers-reduced-motion
  • 方案渲染 —— 只有一個 radio 或 likert 的任務點選後自動前進。多方案卡片會顯示全部控制元件,外加一個明確的儲存並下一條。
  • 離線標註 —— 當前批次會預取並映像到 localStorage。連線中斷後標註仍可繼續,介面上的提示條會顯示“離線 —— 已排隊 N 條儲存”,重新聯網後佇列自動回傳。Service Worker 會在首次訪問後快取應用外殼,因此斷網也能開啟頁面。可以在 wifi 下預取一批,然後到任何地方標註,等裝置回到有訊號的地方再同步。
  • 安裝為應用 —— 頁面附帶 Web 應用清單,因此“新增到主螢幕”會得到一個帶獨立圖示的獨立應用。

儲存走的是和桌面頁面完全相同的 /updateinstance 端點和載荷。口袋模式沒有新增寫入路徑,因此匯出、一致性統計、管理儀表板和品質控制看到的都是普通標註。

裝置標籤頁

管理儀表板新增了一個裝置標籤頁,按標註者顯示:最近一次見到的裝置、按裝置類別統計的訪問次數、使用移動端介面的次數,以及最後一次出現的時間。頂部有一行彙總(“12 位使用者中有 3 位從手機或平板訪問過”)。

這在兩個方向上都有用。如果你的任務支援觸屏,而裝置標籤頁卻顯示仍有標註者在用手機,那說明這些人看到警告後照做不誤,他們的產出值得看一看。另外,由於無論是否啟用口袋模式都會記錄訪問,這個標籤頁能在你開啟開關之前就回答“啟用口袋模式會有幫助嗎”。

資料儲存在 <output_annotation_dir>/pocket/device_visits.json,只有按使用者的聚合值。沒有按條目的追蹤。

問題排查

  • 手機沒有被重定向。 檢查 pocket.enabledpocket.auto_redirect 是否為 true、任務是否支援觸屏(GET /pocket/api/routing 返回 capable: true),以及該使用者本次會話是否選擇過“桌面版網站”。
  • iPad 首次載入拿到的是桌面頁面。 iPadOS 上的 Safari 把自己報告成 Mac,服務端抓不到它。等頁面指令碼執行起來,客戶端的指標檢測會把它重定向過去。
  • 某個使用者在移動端顯示“已完成”,但桌面頁面還顯示有剩餘條目。 他們可能有尚未同步的離線儲存。同步提示條會顯示這個佇列,裝置重新聯網後佇列會回傳。

延伸閱讀