Improve AI daily report operations and dedupe observability

This commit is contained in:
Ubuntu
2026-06-10 21:55:29 +08:00
parent b46cef2c7b
commit 2159ee733b
23 changed files with 761 additions and 57 deletions

View File

@@ -1,5 +1,6 @@
import json
import unittest
from email.message import Message
from urllib.error import HTTPError
from unittest.mock import patch
@@ -65,6 +66,20 @@ class ClientTests(unittest.TestCase):
self.assertEqual(client.create_post({"title": "t"})["slug"], "ai-2026-06-04")
client.publish_post("ai-2026-06-04")
def test_blog_api_client_slug_lookup_falls_back_to_query_endpoint(self):
responses = [
HTTPError("https://blog.example/api/service/posts/ai-2026-06-10", 404, "Not Found", Message(), None),
FakeResponse(json.dumps({"items": [{"slug": "ai-2026-06-10", "content": "body"}]}).encode("utf-8")),
]
with patch("urllib.request.urlopen", side_effect=responses) as urlopen:
client = BlogApiClient(base_url="https://blog.example", token="token")
post = client.get_post_by_slug("ai-2026-06-10")
self.assertIsNotNone(post)
assert post is not None
self.assertEqual(post["slug"], "ai-2026-06-10")
self.assertEqual(urlopen.call_count, 2)
if __name__ == "__main__":
unittest.main()