-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstants.py
More file actions
158 lines (133 loc) · 5.11 KB
/
constants.py
File metadata and controls
158 lines (133 loc) · 5.11 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
"""
Centralized constants for the Agentic Interview System.
This module contains all magic numbers, thresholds, and configuration values
that were previously hardcoded throughout the codebase.
"""
# ==============================================================================
# Scoring Thresholds
# ==============================================================================
# Mastery level thresholds (0-100 scale)
MASTERY_STRONG_THRESHOLD = 80 # Score >= 80 = "strong"
MASTERY_MIXED_THRESHOLD = 50 # Score >= 50 = "mixed", below = "weak"
# Overall performance assessment thresholds
PERFORMANCE_EXCELLENT_THRESHOLD = 80
PERFORMANCE_SOLID_THRESHOLD = 60
PERFORMANCE_BASIC_THRESHOLD = 40
# ==============================================================================
# LLM Settings
# ==============================================================================
# Default max tokens for LLM responses
DEFAULT_MAX_TOKENS = 1500
# Default rate limiting settings
DEFAULT_LLM_MAX_CALLS_PER_SESSION = 50
DEFAULT_LLM_MAX_CALLS_PER_MINUTE = 10
# ==============================================================================
# Input Validation Limits
# ==============================================================================
# Maximum lengths for text fields
MAX_NAME_LENGTH = 100
MAX_EMAIL_LENGTH = 254 # RFC 5321 limit
MAX_ROLE_LENGTH = 100
MAX_DEPARTMENT_LENGTH = 100
MAX_DESCRIPTION_LENGTH = 500
MAX_QUESTION_TEXT_LENGTH = 2000
MAX_KEYPOINT_LENGTH = 500
MAX_TAG_LENGTH = 50
MAX_ANSWER_LENGTH = 10000
# Lens configuration limits
MAX_CRITERION_NAME_LENGTH = 50
MAX_CRITERION_DEFINITION_LENGTH = 500
MAX_CRITERIA_COUNT = 20
# ==============================================================================
# UI Constants
# ==============================================================================
# Pagination
DEFAULT_PAGE_SIZE = 20
MAX_PAGE_SIZE = 100
# Chart dimensions
CHART_HEIGHT = 400
# ==============================================================================
# Database Constants
# ==============================================================================
# Default organization name
DEFAULT_ORGANIZATION_NAME = "Default Organization"
# ==============================================================================
# Session Status Values
# ==============================================================================
SESSION_STATUS_IN_PROGRESS = "in_progress"
SESSION_STATUS_COMPLETED = "completed"
SESSION_STATUS_ABANDONED = "abandoned"
# ==============================================================================
# Mastery Labels
# ==============================================================================
MASTERY_LABEL_STRONG = "strong"
MASTERY_LABEL_MIXED = "mixed"
MASTERY_LABEL_WEAK = "weak"
# ==============================================================================
# Evaluator Types
# ==============================================================================
EVALUATOR_TYPE_HEURISTIC = "heuristic"
EVALUATOR_TYPE_LLM = "llm"
# ==============================================================================
# Error Messages (User-Facing)
# ==============================================================================
ERROR_INVALID_EMAIL = "Please enter a valid email address"
ERROR_NAME_TOO_LONG = f"Name must be {MAX_NAME_LENGTH} characters or less"
ERROR_REQUIRED_FIELD = "This field is required"
ERROR_LLM_UNAVAILABLE = "AI evaluation is temporarily unavailable. Please try again later."
ERROR_RATE_LIMIT_EXCEEDED = "Too many requests. Please wait a moment before trying again."
ERROR_SESSION_NOT_FOUND = "Interview session not found"
ERROR_INVALID_CONFIG = "Invalid configuration. Please check your settings."
# ==============================================================================
# Public API
# ==============================================================================
__all__ = [
# Scoring thresholds
"MASTERY_STRONG_THRESHOLD",
"MASTERY_MIXED_THRESHOLD",
"PERFORMANCE_EXCELLENT_THRESHOLD",
"PERFORMANCE_SOLID_THRESHOLD",
"PERFORMANCE_BASIC_THRESHOLD",
# LLM settings
"DEFAULT_MAX_TOKENS",
"DEFAULT_LLM_MAX_CALLS_PER_SESSION",
"DEFAULT_LLM_MAX_CALLS_PER_MINUTE",
# Input limits
"MAX_NAME_LENGTH",
"MAX_EMAIL_LENGTH",
"MAX_ROLE_LENGTH",
"MAX_DEPARTMENT_LENGTH",
"MAX_DESCRIPTION_LENGTH",
"MAX_QUESTION_TEXT_LENGTH",
"MAX_KEYPOINT_LENGTH",
"MAX_TAG_LENGTH",
"MAX_ANSWER_LENGTH",
"MAX_CRITERION_NAME_LENGTH",
"MAX_CRITERION_DEFINITION_LENGTH",
"MAX_CRITERIA_COUNT",
# UI constants
"DEFAULT_PAGE_SIZE",
"MAX_PAGE_SIZE",
"CHART_HEIGHT",
# Database constants
"DEFAULT_ORGANIZATION_NAME",
# Status values
"SESSION_STATUS_IN_PROGRESS",
"SESSION_STATUS_COMPLETED",
"SESSION_STATUS_ABANDONED",
# Mastery labels
"MASTERY_LABEL_STRONG",
"MASTERY_LABEL_MIXED",
"MASTERY_LABEL_WEAK",
# Evaluator types
"EVALUATOR_TYPE_HEURISTIC",
"EVALUATOR_TYPE_LLM",
# Error messages
"ERROR_INVALID_EMAIL",
"ERROR_NAME_TOO_LONG",
"ERROR_REQUIRED_FIELD",
"ERROR_LLM_UNAVAILABLE",
"ERROR_RATE_LIMIT_EXCEEDED",
"ERROR_SESSION_NOT_FOUND",
"ERROR_INVALID_CONFIG",
]