feat: add session-level publish and comment flow

This commit is contained in:
theshy
2026-04-14 16:00:17 +08:00
parent 862db502b0
commit d5d9693581
42 changed files with 2478 additions and 181 deletions

View File

@ -4,6 +4,7 @@ import unittest
from types import SimpleNamespace
from unittest.mock import patch
from biliup_next.core.errors import ModuleError
from biliup_next.app.task_runner import process_task
from biliup_next.core.models import TaskStep
@ -97,6 +98,39 @@ class TaskRunnerTests(unittest.TestCase):
self.assertEqual(repo.task_updates[0][1], "running")
self.assertEqual(result["processed"][0]["step"], "transcribe")
def test_process_task_marks_publish_failed_retryable_on_module_error(self) -> None:
task = SimpleNamespace(id="task-1", status="split_done", updated_at="2026-01-01T00:00:00+00:00")
steps = [
TaskStep(None, "task-1", "publish", "pending", None, None, 0, None, None),
]
repo = FakeRunnerRepo(task, steps)
state = {
"repo": repo,
"settings": {
"ingest": {},
"paths": {},
"comment": {"enabled": True},
"collection": {"enabled": True},
"publish": {"retry_schedule_minutes": [15], "rate_limit_retry_schedule_minutes": [30]},
},
}
with patch("biliup_next.app.task_runner.ensure_initialized", return_value=state), patch(
"biliup_next.app.task_runner.record_task_action"
), patch("biliup_next.app.task_runner.apply_disabled_step_fallbacks", return_value=False), patch(
"biliup_next.app.task_runner.next_runnable_step", return_value=("publish", None)
), patch(
"biliup_next.app.task_runner.execute_step",
side_effect=ModuleError(code="PUBLISH_RATE_LIMITED", message="rate limited", retryable=True),
):
result = process_task("task-1")
self.assertEqual(result["processed"][-1]["retry_status"], "failed_retryable")
self.assertEqual(result["processed"][-1]["next_retry_delay_seconds"], 1800)
self.assertEqual(repo.step_updates[-1][1], "publish")
self.assertEqual(repo.step_updates[-1][2], "failed_retryable")
self.assertEqual(repo.task_updates[-1][1], "failed_retryable")
if __name__ == "__main__":
unittest.main()