Retry failed rewrite batches in smaller chunks

This commit is contained in:
Mimikko-zeus
2026-06-04 17:42:08 +08:00
parent 22cdd71a08
commit 2671aee850
2 changed files with 69 additions and 5 deletions

View File

@@ -132,6 +132,42 @@ class Stage4RewriteTests(unittest.TestCase):
self.assertEqual([item.title for item in rewritten], ["OpenAI launches GPT-5 API", "OpenAI launches GPT-5 API"])
self.assertEqual(report["fallback_count"], 2)
def test_rewrite_items_retries_failed_large_batch_as_smaller_batches_by_default(self):
items = [news_item(str(index)) for index in range(30)]
calls = []
def llm_call(prompt):
payload = json.loads(prompt)
ids = [item["id"] for item in payload["items"]]
calls.append(ids)
if len(ids) == 30:
return "not json"
return json.dumps(
{
"rewrites": [
{
"id": item_id,
"title": f"title {item_id}",
"summary": f"summary {item_id}",
"section": "模型与能力",
"flags": [],
}
for item_id in ids
]
},
ensure_ascii=False,
)
rewritten, report = rewrite_items(items, llm_call=llm_call)
self.assertEqual([len(call) for call in calls], [30, 10, 10, 10])
self.assertEqual(report["rewritten_count"], 30)
self.assertEqual(report["llm_section_count"], 30)
self.assertEqual(report["fallback_count"], 0)
self.assertEqual(report["batch_retry_count"], 3)
self.assertEqual(report["blocking_errors"], [])
self.assertEqual(rewritten[0].title, "title 0")
def test_rewrite_items_keeps_partial_batch_rewrites_when_some_ids_are_missing(self):
items = [news_item("a"), news_item("b"), news_item("c")]