refactor(api): isolate trial app and workflow detail previews (#42659)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
非法操作andautofix-ci[bot] authored and GitHub committed 2026-09-22 05:03:49 +00:00
1 parent 6f61401a91
commit 2da0db7df5
21 files changed
+2536 -491

No files matched your search

@@ -19,7 +19,8 @@ from extensions import ext_application_services
from extensions.ext_redis import RedisClientWrapper
from machinery.context import RequestContext
from models.account import Account
from models.model import AccountTrialAppRecord, App, DifySetup, TrialApp
from models.enums import CustomizeTokenStrategy
from models.model import AccountTrialAppRecord, App, DifySetup, Site, TrialApp
from repositories.account_activation_repository import SQLAlchemyAccountActivationRepository
from repositories.account_integration_repository import SQLAlchemyAccountIntegrationRepository
from repositories.account_oauth_repository import (
@@ -765,6 +766,43 @@ def test_app_previews_use_the_configured_catalog_and_app_owner(
services.app_previews.get_access(app_id=other_id)
def test_app_preview_details_use_the_configured_database_without_request_globals(
sqlite_session_factory: sessionmaker[Session],
) -> None:
services = ext_application_services.build_application_services(
database_client=sqlite_session_factory,
deployment_edition=DeploymentEdition.COMMUNITY,
initialization_password="",
redis=MagicMock(spec=RedisClientWrapper),
)
app_id, owner_id, viewer_workspace_id = str(uuid4()), str(uuid4()), str(uuid4())
account = Account(name="Preview viewer", email="preview@example.com")
with sqlite_session_factory.begin() as session:
session.add_all(
[
account,
App(id=app_id, tenant_id=owner_id, name="Preview", mode="chat", enable_site=True, enable_api=False),
Site(
app_id=app_id,
title="Preview site",
default_language="en-US",
customize_token_strategy=CustomizeTokenStrategy.UUID,
),
]
)
detail = services.app_preview_details.get_detail(
app=AppPreviewRef(app_id=app_id, tenant_id=owner_id),
account_id=account.id,
active_workspace_id=viewer_workspace_id,
)
assert detail.id == app_id
assert detail.name == "Preview"
assert detail.site.title == "Preview site"
assert detail.model_config is None
def test_build_application_services_adapts_enterprise_webapp_access_mode(
sqlite_session_factory: sessionmaker[Session],
) -> None: