Merge Sync Verification

階層マージ同期の検証(#417/#420)

同一サービス(デモ環境)へ内容の異なる階層JSONを段階的に配信し、 蓄積・上書き・差し替え・移動・重複追加の各挙動を確認します。 上から順にリンクを開いてください(端末にVPOアプリが必要です)。

やり直すときは、アプリのサービス一覧から「VPOデモ」を削除して 手順1から再実行してください。

  1. 手順 1

    講座A 単元1 を取り込む(IDなし2本)

    期待結果: 講座A/単元1 に A-1・A-2 が追加されDLされる

    階層JSON: variant=a

    アプリで開く
  2. 手順 2

    講座A 単元2 を取り込む(部分JSON・単元1を含まない)

    期待結果: 【ケースA/E】単元2(A-3)が追加され、単元1(A-1・A-2)は消えずに残る

    階層JSON: variant=b

    アプリで開く
  3. 手順 3

    手順1と同じリンクをもう一度開く(完全同一の再受信)

    期待結果: 【ケースB+#420】行は増えない。A-1・A-2 が再ダウンロードされ差し替わる(DL済み表示は維持されたまま)

    階層JSON: variant=a

    アプリで開く
  4. 手順 4

    講座B(IDあり・期限2027)を取り込む

    期待結果: 講座B に B-1 が追加されDLされる。視聴期限 2027/03/31 と表示

    階層JSON: variant=c

    アプリで開く
  5. 手順 5

    同じIDで期限を2028へ延長して再配信

    期待結果: 【ケースC+#420】行は増えず1件のまま期限が 2028/03/31 に更新され、動画が再取得される

    階層JSON: variant=c2

    アプリで開く
  6. 手順 6

    同じIDで動画URLを別動画に差し替えて再配信

    期待結果: 【#420】行は増えず1件のまま、再生すると別の動画(A-1と同じ映像)に差し替わっている

    階層JSON: variant=cu

    アプリで開く
  7. 手順 7

    同じIDで期限を過去日時にして再配信(視聴停止)

    期待結果: 【ケースF】行は増えず「視聴期限切れ」表示になり、再生がブロックされる

    階層JSON: variant=d

    アプリで開く
  8. 手順 8

    講座C(IDなし・期限2026)を取り込む

    期待結果: 講座C に C-1 が追加されDLされる

    階層JSON: variant=e1

    アプリで開く
  9. 手順 9

    同じ動画をIDなしのまま期限だけ変えて再配信

    期待結果: 【ケースD】新しい期限の行が追加され2件になる(旧行も残る=マニュアルどおりの重複)

    階層JSON: variant=e2

    アプリで開く
  10. 手順 10

    並び替え+IDあり動画をフォルダへ移動して再配信

    期待結果: 【ケースG】A-1/A-2 は並び順が変わるだけで増えない。B-1 は講座B直下から「移動先フォルダ」へ1件だけ移動している

    階層JSON: variant=f

    アプリで開く
  11. 手順 11

    期限が昨日の動画を登録

    期待結果: 「視聴期限切れ」と表示され、再生できない

    階層JSON: variant=expiry-yesterday

    アプリで開く
  12. 手順 12

    同じ動画の期限を1年後へ更新

    期待結果: 行が増えず、期限が1年後へ更新され、ダウンロード・再生できる

    階層JSON: variant=expiry-next-year

    アプリで開く

補足

  • 手順3・5・6では再取得(差し替え)中もDL済み表示・再生が維持される こと、DL状況画面で中止しても既存の動画が消えないことを確認できます。
  • このページは旧バージョン(全置換型)との比較にも使えます: 旧アプリでは手順2で単元1が消えます。
  • 手順11・12では、同じvideo_id・同じ動画を使い、期限切れから 有効期限内へ更新できることを確認します。必ず11→12の順に開いてください。