refactor(subscribe): 统一 lack_episode 语义并暴露 completed_episode 派生字段 (#5817)

This commit is contained in:
InfinityPacer
2026-05-22 19:34:25 +08:00
committed by GitHub
parent 2b5528c0ac
commit 7daeb17d85
4 changed files with 135 additions and 43 deletions

View File

@@ -413,7 +413,6 @@ class SubscribeChainTest(TestCase):
current_priority=100,
)
self.assertEqual(SubscribeChain.get_best_version_lack_episode(subscribe), 3)
self.assertEqual(SubscribeChain.get_best_version_current_priority(subscribe), 90)
self.assertFalse(SubscribeChain.is_best_version_complete(subscribe))
@@ -424,7 +423,6 @@ class SubscribeChainTest(TestCase):
current_priority=90,
)
self.assertEqual(SubscribeChain.get_best_version_lack_episode(subscribe), 0)
self.assertEqual(SubscribeChain.get_best_version_current_priority(subscribe), 100)
self.assertTrue(SubscribeChain.is_best_version_complete(subscribe))
@@ -705,7 +703,8 @@ class SubscribeChainTest(TestCase):
payload = subscribe_oper.update.call_args.args[1]
self.assertEqual(payload["episode_priority"], {"1": 100, "2": 80, "3": 90, "4": 60})
self.assertEqual(payload["current_priority"], 90)
self.assertEqual(payload["lack_episode"], 3)
# update_subscribe_priority 不再回写 lack_episodelack 由下载链路末端的 __update_lack_episodes 维护
self.assertNotIn("lack_episode", payload)
self.assertEqual(subscribe.episode_priority, {"1": 100, "2": 80, "3": 90, "4": 60})
self.assertEqual(subscribe.current_priority, 90)
self.assertEqual(subscribe.lack_episode, 3)
@@ -743,7 +742,8 @@ class SubscribeChainTest(TestCase):
payload = subscribe_oper.update.call_args.args[1]
self.assertEqual(payload["episode_priority"], {"1": 100, "2": 100, "3": 100})
self.assertEqual(payload["current_priority"], 100)
self.assertEqual(payload["lack_episode"], 0)
# 完成判定仍由 __is_best_version_complete 走 episode_priority 字典做出lack_episode 不参与
self.assertNotIn("lack_episode", payload)
finish_mock.assert_called_once_with(subscribe=subscribe, meta=meta, mediainfo=mediainfo)
def test_full_best_version_updates_all_episodes_when_pack_has_no_episode_metadata(self):
@@ -776,7 +776,7 @@ class SubscribeChainTest(TestCase):
payload = subscribe_oper.update.call_args.args[1]
self.assertEqual(payload["episode_priority"], {"1": 100, "2": 100, "3": 100})
self.assertEqual(payload["current_priority"], 100)
self.assertEqual(payload["lack_episode"], 0)
self.assertNotIn("lack_episode", payload)
finish_mock.assert_called_once_with(subscribe=subscribe, meta=meta, mediainfo=mediainfo)
def test_episode_best_version_updates_all_episodes_when_full_pack_has_no_episode_metadata(self):
@@ -809,7 +809,7 @@ class SubscribeChainTest(TestCase):
payload = subscribe_oper.update.call_args.args[1]
self.assertEqual(payload["episode_priority"], {"1": 100, "2": 100, "3": 100})
self.assertEqual(payload["current_priority"], 100)
self.assertEqual(payload["lack_episode"], 0)
self.assertNotIn("lack_episode", payload)
finish_mock.assert_called_once_with(subscribe=subscribe, meta=meta, mediainfo=mediainfo)
def test_check_resets_current_priority_when_new_episodes_expand_target_range(self):