feat: polish generation demo workflow

This commit is contained in:
2026-04-18 14:06:38 +08:00
parent 5d8fb1ed50
commit 0f260f649c
15 changed files with 569 additions and 74 deletions

View File

@@ -9,6 +9,14 @@ from app.core.config import settings
from app.services.adapters.storybook.primary import Storybook, StorybookPage
def assert_legacy_generation_headers(response, successor: str) -> None:
"""Assert that compatibility generation endpoints point callers to the unified API."""
assert response.headers["Deprecation"] == "true"
assert response.headers["X-DreamWeaver-Successor-Endpoint"] == successor
assert response.headers["Link"] == f'<{successor}>; rel="successor-version"'
def build_storybook_output() -> Storybook:
"""Create a reusable mocked storybook payload."""
@@ -62,6 +70,7 @@ class TestStoryGenerate:
json={"type": "keywords", "data": "小兔子, 森林, 勇气"},
)
assert response.status_code == 200
assert_legacy_generation_headers(response, "/api/generations")
data = response.json()
assert "id" in data
assert "title" in data
@@ -317,6 +326,7 @@ class TestGenerateFull:
json={"type": "keywords", "data": "小兔子, 森林, 勇气"},
)
assert response.status_code == 200
assert_legacy_generation_headers(response, "/api/generations")
data = response.json()
assert "id" in data
assert "title" in data
@@ -394,6 +404,7 @@ class TestUnifiedGenerations:
)
assert response.status_code == 200
assert "Deprecation" not in response.headers
data = response.json()
assert data["id"] is not None
assert data["mode"] == "generated"
@@ -534,6 +545,10 @@ class TestImageGenerateSuccess:
):
response = auth_client.post(f"/api/image/generate/{test_story.id}")
assert response.status_code == 200
assert_legacy_generation_headers(
response,
f"/api/generations/{test_story.id}/retry-assets",
)
data = response.json()
assert data["image_url"] == "https://example.com/image.png"
assert data["generation_status"] == "completed"
@@ -557,6 +572,10 @@ class TestAssetRetry:
)
assert response.status_code == 200
assert_legacy_generation_headers(
response,
f"/api/generations/{degraded_story_with_text.id}/retry-assets",
)
data = response.json()
assert data["image_url"] == "https://example.com/image.png"
assert data["generation_status"] == "completed"
@@ -585,6 +604,10 @@ class TestAssetRetry:
)
assert response.status_code == 200
assert_legacy_generation_headers(
response,
f"/api/generations/{storybook_story.id}/retry-assets",
)
data = response.json()
assert data["generation_status"] == "completed"
assert data["image_status"] == "ready"