File size: 2,000 Bytes
2bfc495
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import re
from utils import log

class ValidationEngine:
    def __init__(self):
        pass

    def validate_parameters(self, intent_def, variables):
        """
        Checks all parameters defined in the intent against provided variables.
        Returns: (is_valid, error_messages)
        """
        is_valid = True
        error_messages = []

        for param_def in intent_def.get("parameters", []):
            name = param_def.get("name")
            expected_type = param_def.get("type", "string")
            regex = param_def.get("regex")
            validation_message = param_def.get("validation_message", f"Invalid value for {name}.")

            value = variables.get(name)

            # Check existence
            if value is None:
                continue  # Missing parameters are handled elsewhere

            # Type check
            if expected_type == "string":
                if not isinstance(value, str):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected a string.")
                    continue
            elif expected_type == "int":
                if not isinstance(value, int):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected an integer.")
                    continue
            elif expected_type == "float":
                if not isinstance(value, float):
                    is_valid = False
                    error_messages.append(f"{validation_message} Expected a float.")
                    continue

            # Regex check
            if regex and isinstance(value, str):
                if not re.match(regex, value):
                    is_valid = False
                    error_messages.append(validation_message)

        if is_valid:
            log("βœ… Parameter validation passed.")
        else:
            log(f"❌ Parameter validation failed: {error_messages}")

        return is_valid, error_messages