You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
orquestrador/shared/contracts/system_functional_configura...

259 lines
10 KiB
Python

"""Define o escopo de configuracao funcional governada entre admin e product."""
from __future__ import annotations
from enum import Enum
from pydantic import BaseModel
from shared.contracts.access_control import AdminPermission
class FunctionalConfigurationDomain(str, Enum):
MODEL_CATALOG = "model_catalog"
ATENDIMENTO_RUNTIME = "atendimento_runtime"
TOOL_GENERATION_RUNTIME = "tool_generation_runtime"
BOT_POLICY = "bot_policy"
CHANNEL_OPERATION = "channel_operation"
CONFIG_PUBLICATION = "config_publication"
class FunctionalConfigurationMutability(str, Enum):
READ_ONLY = "read_only"
DIRECTOR_GOVERNED = "director_governed"
class FunctionalConfigurationSource(str, Enum):
PLATFORM_CATALOG = "platform_catalog"
ADMIN_GOVERNED_STATE = "admin_governed_state"
PRODUCT_EFFECTIVE_STATE = "product_effective_state"
class FunctionalConfigurationPropagation(str, Enum):
OBSERVATION_ONLY = "observation_only"
VERSIONED_PUBLICATION = "versioned_publication"
class FunctionalConfigurationFieldContract(BaseModel):
name: str
description: str
writable: bool = True
secret: bool = False
class FunctionalConfigurationContract(BaseModel):
config_key: str
domain: FunctionalConfigurationDomain
description: str
source: FunctionalConfigurationSource
read_permission: AdminPermission = AdminPermission.VIEW_SYSTEM
write_permission: AdminPermission | None = AdminPermission.MANAGE_SETTINGS
mutability: FunctionalConfigurationMutability = FunctionalConfigurationMutability.DIRECTOR_GOVERNED
propagation: FunctionalConfigurationPropagation = (
FunctionalConfigurationPropagation.VERSIONED_PUBLICATION
)
affects_product_runtime: bool = True
direct_product_write_allowed: bool = False
fields: tuple[FunctionalConfigurationFieldContract, ...]
SYSTEM_FUNCTIONAL_CONFIGURATIONS: tuple[FunctionalConfigurationContract, ...] = (
FunctionalConfigurationContract(
config_key="allowed_model_catalog",
domain=FunctionalConfigurationDomain.MODEL_CATALOG,
description="Catalogo de modelos liberados pela plataforma para atendimento e geracao de tools.",
source=FunctionalConfigurationSource.PLATFORM_CATALOG,
write_permission=None,
mutability=FunctionalConfigurationMutability.READ_ONLY,
propagation=FunctionalConfigurationPropagation.OBSERVATION_ONLY,
affects_product_runtime=False,
fields=(
FunctionalConfigurationFieldContract(
name="runtime_target",
description="Destino funcional do modelo, como atendimento ou geracao de tools.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="provider",
description="Provedor homologado para o modelo.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="model_name",
description="Nome tecnico do modelo liberado.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="capability_tags",
description="Capacidades suportadas pelo modelo homologado.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="status",
description="Estado de homologacao do modelo no catalogo da plataforma.",
writable=False,
),
),
),
FunctionalConfigurationContract(
config_key="atendimento_runtime_profile",
domain=FunctionalConfigurationDomain.ATENDIMENTO_RUNTIME,
description="Perfil funcional ativo para o bot de atendimento no servico de produto.",
source=FunctionalConfigurationSource.ADMIN_GOVERNED_STATE,
fields=(
FunctionalConfigurationFieldContract(
name="provider",
description="Provedor selecionado para o atendimento.",
),
FunctionalConfigurationFieldContract(
name="model_name",
description="Modelo selecionado para o atendimento.",
),
FunctionalConfigurationFieldContract(
name="temperature",
description="Temperatura aplicada nas respostas do atendimento.",
),
FunctionalConfigurationFieldContract(
name="max_output_tokens",
description="Limite de saida usado pelo atendimento.",
),
FunctionalConfigurationFieldContract(
name="prompt_profile_ref",
description="Referencia da estrategia de prompt publicada para o atendimento.",
),
FunctionalConfigurationFieldContract(
name="tool_policy_ref",
description="Referencia da politica de uso de tools pelo atendimento.",
),
),
),
FunctionalConfigurationContract(
config_key="tool_generation_runtime_profile",
domain=FunctionalConfigurationDomain.TOOL_GENERATION_RUNTIME,
description="Perfil funcional usado para geracao e validacao automatica de novas tools.",
source=FunctionalConfigurationSource.ADMIN_GOVERNED_STATE,
fields=(
FunctionalConfigurationFieldContract(
name="provider",
description="Provedor selecionado para a geracao de tools.",
),
FunctionalConfigurationFieldContract(
name="model_name",
description="Modelo selecionado para a geracao de tools.",
),
FunctionalConfigurationFieldContract(
name="reasoning_profile",
description="Perfil de raciocinio aprovado para geracao de codigo.",
),
FunctionalConfigurationFieldContract(
name="max_output_tokens",
description="Limite de saida usado na geracao de tools.",
),
FunctionalConfigurationFieldContract(
name="validation_profile_ref",
description="Referencia da politica de validacao automatica de tools.",
),
),
),
FunctionalConfigurationContract(
config_key="bot_behavior_policy",
domain=FunctionalConfigurationDomain.BOT_POLICY,
description="Politicas funcionais do fluxo do bot para fallback, handoff e uso de tools.",
source=FunctionalConfigurationSource.ADMIN_GOVERNED_STATE,
fields=(
FunctionalConfigurationFieldContract(
name="fallback_mode",
description="Modo funcional de fallback quando o bot nao conclui a tarefa.",
),
FunctionalConfigurationFieldContract(
name="handoff_enabled",
description="Sinaliza se o fluxo pode encaminhar para atendimento humano.",
),
FunctionalConfigurationFieldContract(
name="handoff_intents",
description="Lista de intencoes que forcam handoff humano.",
),
FunctionalConfigurationFieldContract(
name="max_tool_calls_per_turn",
description="Limite de chamadas de tools por turno de atendimento.",
),
FunctionalConfigurationFieldContract(
name="confirmation_policy",
description="Politica de confirmacao antes de acao critica no fluxo.",
),
),
),
FunctionalConfigurationContract(
config_key="channel_operation_policy",
domain=FunctionalConfigurationDomain.CHANNEL_OPERATION,
description="Politicas funcionais por canal, incluindo habilitacao, manutencao e janela operacional.",
source=FunctionalConfigurationSource.ADMIN_GOVERNED_STATE,
fields=(
FunctionalConfigurationFieldContract(
name="channel",
description="Canal operacional ao qual a politica se aplica.",
),
FunctionalConfigurationFieldContract(
name="enabled",
description="Indica se o canal esta habilitado para atendimento.",
),
FunctionalConfigurationFieldContract(
name="maintenance_mode",
description="Sinaliza se o canal esta em manutencao controlada.",
),
FunctionalConfigurationFieldContract(
name="default_route",
description="Rota funcional padrao usada pelo canal.",
),
FunctionalConfigurationFieldContract(
name="operation_window_ref",
description="Referencia da janela operacional aplicada ao canal.",
),
),
),
FunctionalConfigurationContract(
config_key="published_runtime_state",
domain=FunctionalConfigurationDomain.CONFIG_PUBLICATION,
description="Estado efetivo publicado no produto para auditoria de versao e aplicacao runtime.",
source=FunctionalConfigurationSource.PRODUCT_EFFECTIVE_STATE,
write_permission=None,
mutability=FunctionalConfigurationMutability.READ_ONLY,
propagation=FunctionalConfigurationPropagation.OBSERVATION_ONLY,
fields=(
FunctionalConfigurationFieldContract(
name="config_scope",
description="Escopo funcional da configuracao publicada.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="active_version",
description="Versao funcional atualmente ativa no produto.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="published_by",
description="Identificador administrativo de quem publicou a configuracao.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="published_at",
description="Momento da ultima publicacao governada.",
writable=False,
),
FunctionalConfigurationFieldContract(
name="applied_at",
description="Momento em que o produto aplicou a configuracao em runtime.",
writable=False,
),
),
),
)
def get_functional_configuration(config_key: str) -> FunctionalConfigurationContract | None:
normalized = str(config_key or "").strip().lower()
for configuration in SYSTEM_FUNCTIONAL_CONFIGURATIONS:
if configuration.config_key == normalized:
return configuration
return None