|
from core.app.app_config.base_app_config_manager import BaseAppConfigManager
|
|
from core.app.app_config.common.sensitive_word_avoidance.manager import SensitiveWordAvoidanceConfigManager
|
|
from core.app.app_config.entities import WorkflowUIBasedAppConfig
|
|
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
|
|
from core.app.app_config.features.text_to_speech.manager import TextToSpeechConfigManager
|
|
from core.app.app_config.workflow_ui_based_app.variables.manager import WorkflowVariablesConfigManager
|
|
from models.model import App, AppMode
|
|
from models.workflow import Workflow
|
|
|
|
|
|
class WorkflowAppConfig(WorkflowUIBasedAppConfig):
|
|
"""
|
|
Workflow App Config Entity.
|
|
"""
|
|
pass
|
|
|
|
|
|
class WorkflowAppConfigManager(BaseAppConfigManager):
|
|
@classmethod
|
|
def get_app_config(cls, app_model: App, workflow: Workflow) -> WorkflowAppConfig:
|
|
features_dict = workflow.features_dict
|
|
|
|
app_mode = AppMode.value_of(app_model.mode)
|
|
app_config = WorkflowAppConfig(
|
|
tenant_id=app_model.tenant_id,
|
|
app_id=app_model.id,
|
|
app_mode=app_mode,
|
|
workflow_id=workflow.id,
|
|
sensitive_word_avoidance=SensitiveWordAvoidanceConfigManager.convert(
|
|
config=features_dict
|
|
),
|
|
variables=WorkflowVariablesConfigManager.convert(
|
|
workflow=workflow
|
|
),
|
|
additional_features=cls.convert_features(features_dict, app_mode)
|
|
)
|
|
|
|
return app_config
|
|
|
|
@classmethod
|
|
def config_validate(cls, tenant_id: str, config: dict, only_structure_validate: bool = False) -> dict:
|
|
"""
|
|
Validate for workflow app model config
|
|
|
|
:param tenant_id: tenant id
|
|
:param config: app model config args
|
|
:param only_structure_validate: only validate the structure of the config
|
|
"""
|
|
related_config_keys = []
|
|
|
|
|
|
config, current_related_config_keys = FileUploadConfigManager.validate_and_set_defaults(
|
|
config=config,
|
|
is_vision=False
|
|
)
|
|
related_config_keys.extend(current_related_config_keys)
|
|
|
|
|
|
config, current_related_config_keys = TextToSpeechConfigManager.validate_and_set_defaults(config)
|
|
related_config_keys.extend(current_related_config_keys)
|
|
|
|
|
|
config, current_related_config_keys = SensitiveWordAvoidanceConfigManager.validate_and_set_defaults(
|
|
tenant_id=tenant_id,
|
|
config=config,
|
|
only_structure_validate=only_structure_validate
|
|
)
|
|
related_config_keys.extend(current_related_config_keys)
|
|
|
|
related_config_keys = list(set(related_config_keys))
|
|
|
|
|
|
filtered_config = {key: config.get(key) for key in related_config_keys}
|
|
|
|
return filtered_config
|
|
|