mirror of
https://github.com/langgenius/dify.git
synced 2026-11-12 22:31:24 +08:00
Keep original App/provider configuration and historical AppModelConfig rows while excluding model references that normal hosted credits access never permits. Opt-in saved_system_dependencies_v3 matches exact-name and empty-list access semantics, freezes explicit policy exclusions and rechecks all classified provider-selection digests against a fresh snapshot, including BYOK changes. Historical v1/v2 payloads, hashes, revisions and prepared/active state stay unchanged. No database schema, Stripe, grant, source identity, credential trust, Tokener routing or runtime access change. Dev-first consumer deployment only; new revision configuration and real original-provider migration E2E remain separate gates.
67 lines
3.3 KiB
Python
67 lines
3.3 KiB
Python
"""Composition root for tenant-owned migration dependency evidence."""
|
|
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
from configs import dify_config
|
|
from repositories.app.agent_app_repository import AgentAppRepository
|
|
from repositories.app.console_repository import ConsoleAppRepository
|
|
from repositories.knowledge.dataset_repository import SQLAlchemyDatasetRepository
|
|
from repositories.model_billing_dependency_repository import ModelBillingDependencyRepository
|
|
from services.model_billing_dependency_adapters import PluginAgentStrategySelectorQuery, TypedModelDependencyExtractor
|
|
from services.model_billing_dependency_inventory import ModelBillingDependencyInventory
|
|
from services.model_billing_dependency_provenance import (
|
|
AccessCheckedSavedModelMigrationIntent,
|
|
SavedModelDependencyProvenance,
|
|
StableSavedModelMigrationIntent,
|
|
)
|
|
from services.model_billing_dependency_runtime import (
|
|
CompositeModelDependencyDocuments,
|
|
KnowledgeModelDependencyDocuments,
|
|
RevisionModelDependencyInventoryPolicies,
|
|
RevisionModelDependencyRetirements,
|
|
SavedModelSelectionRuntimeQuery,
|
|
)
|
|
from services.model_billing_migration_inventory import ModelBillingMigrationInventory
|
|
from services.model_billing_migration_inventory_gateway import (
|
|
HistoricalMigrationInventoryGateway,
|
|
SavedDependencyMigrationEvidenceGateway,
|
|
)
|
|
|
|
|
|
def build_model_billing_dependencies(*, database_client: sessionmaker[Session]) -> ModelBillingDependencyInventory:
|
|
records = ModelBillingDependencyRepository(session_factory=database_client)
|
|
return ModelBillingDependencyInventory(
|
|
documents=CompositeModelDependencyDocuments(
|
|
(
|
|
ConsoleAppRepository(session_factory=database_client).collect_model_dependency_documents,
|
|
AgentAppRepository(session_factory=database_client).collect_model_dependency_documents,
|
|
KnowledgeModelDependencyDocuments(
|
|
datasets=SQLAlchemyDatasetRepository(session_factory=database_client)
|
|
).collect,
|
|
records.collect_model_dependency_documents,
|
|
)
|
|
),
|
|
extractor=TypedModelDependencyExtractor(strategies=PluginAgentStrategySelectorQuery()),
|
|
provenance=SavedModelDependencyProvenance(selections=SavedModelSelectionRuntimeQuery(records=records)),
|
|
retirements=RevisionModelDependencyRetirements(),
|
|
stable_provenance=StableSavedModelMigrationIntent(selections=SavedModelSelectionRuntimeQuery(records=records)),
|
|
policies=RevisionModelDependencyInventoryPolicies(),
|
|
access_checked_provenance=AccessCheckedSavedModelMigrationIntent(
|
|
selections=SavedModelSelectionRuntimeQuery(records=records)
|
|
),
|
|
)
|
|
|
|
|
|
def build_model_billing_migration_inventory(
|
|
*, database_client: sessionmaker[Session], dependencies: ModelBillingDependencyInventory
|
|
) -> ModelBillingMigrationInventory:
|
|
records = ModelBillingDependencyRepository(session_factory=database_client)
|
|
return ModelBillingMigrationInventory(
|
|
dependencies=dependencies,
|
|
evidence=SavedDependencyMigrationEvidenceGateway(
|
|
selections=SavedModelSelectionRuntimeQuery(records=records), records=records
|
|
),
|
|
historical=HistoricalMigrationInventoryGateway(),
|
|
policy_json=dify_config.TOKENER_LEGACY_DEPENDENCY_INVENTORIES_JSON,
|
|
)
|