package domain import ( "git.cin.su/m/Assistant/contracts/interaction" "strings" ) // ParseConfigurationCommand recognises bounded human intent and never writes // configuration or invokes Authority/Commit. func ParseConfigurationCommand(message, principalID, sourceRef string) interaction.ConfigurationCommand { text := strings.TrimSpace(strings.ToLower(message)) if principalID == "" || sourceRef == "" { return interaction.ConfigurationCommand{} } if strings.Contains(text, "какая настройка") || strings.HasPrefix(text, "какое значение") { return interaction.ConfigurationCommand{Kind: interaction.ConfigurationCommandQuery, PrincipalID: principalID, SourceRef: sourceRef} } temporary := strings.Contains(text, "только сейчас") || strings.Contains(text, "на этот раз") || strings.Contains(text, "временно") if strings.Contains(text, "настрой") || strings.Contains(text, "установи") || strings.Contains(text, "сделай") { parts := strings.SplitN(message, "=", 2) if len(parts) == 2 { key := strings.TrimSpace(strings.TrimPrefix(strings.ToLower(parts[0]), "настройка")) value := strings.TrimSpace(parts[1]) for _, marker := range []string{"только сейчас", "на этот раз", "временно"} { value = strings.TrimSpace(strings.ReplaceAll(strings.ToLower(value), marker, "")) } return interaction.ConfigurationCommand{Kind: interaction.ConfigurationCommandSet, PrincipalID: principalID, DefinitionRef: key, TypedValue: value, TemporaryOverride: temporary, SourceRef: sourceRef} } } return interaction.ConfigurationCommand{} }