145 lines
3.9 KiB
Python
145 lines
3.9 KiB
Python
"""Shared imports/helpers for AI PMO decision runtime."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
from typing import Any
|
|
|
|
from ..ai_pmo_intent import (
|
|
INTENT_FOLLOWUP_CONFIRM,
|
|
INTENT_FOLLOWUP_CONTINUE,
|
|
INTENT_PROJECT_CREATE,
|
|
INTENT_PROJECT_UPDATE,
|
|
INTENT_PROJECT_ARCHIVE,
|
|
INTENT_PROJECT_REOPEN,
|
|
INTENT_PROJECT_DELETE,
|
|
INTENT_QUERY,
|
|
INTENT_TASK_CREATE,
|
|
INTENT_TASK_UPDATE,
|
|
INTENT_TASK_ASSIGN,
|
|
INTENT_TASK_PRIORITIZE,
|
|
INTENT_TASK_STATUS_TRANSITION,
|
|
INTENT_TASK_DELETE,
|
|
INTENT_PERSONNEL_ROLE_UPDATE,
|
|
INTENT_PERSONNEL_WORKLOAD_UPDATE,
|
|
INTENT_PERSONNEL_AVAILABILITY_UPDATE,
|
|
INTENT_KNOWLEDGE_DOC_UPSERT,
|
|
INTENT_KNOWLEDGE_CHUNK_UPSERT,
|
|
INTENT_KNOWLEDGE_LINK_UPSERT,
|
|
INTENT_KNOWLEDGE_REINDEX,
|
|
INTENT_NOTIFICATION_CREATE,
|
|
INTENT_NOTIFICATION_ACK,
|
|
INTENT_NOTIFICATION_CLOSE,
|
|
INTENT_SIGNAL_CREATE,
|
|
INTENT_SIGNAL_SOURCE_ONBOARD,
|
|
ROUTE_FAMILY_KNOWLEDGE,
|
|
ROUTE_FAMILY_NOTIFICATION,
|
|
ROUTE_FAMILY_PERSONNEL,
|
|
ROUTE_FAMILY_PROJECT,
|
|
ROUTE_PROJECT_SIGNAL_CANCEL,
|
|
ROUTE_PROJECT_SIGNAL_COMMIT,
|
|
ROUTE_PROJECT_SIGNAL_DISCOVER,
|
|
ROUTE_PROJECT_SIGNAL_REFRESH,
|
|
ROUTE_PROJECT_UPDATE,
|
|
ROUTE_PROJECT_ARCHIVE,
|
|
ROUTE_PROJECT_REOPEN,
|
|
ROUTE_PROJECT_DELETE,
|
|
ROUTE_TASK_UPDATE,
|
|
ROUTE_TASK_ASSIGN,
|
|
ROUTE_TASK_PRIORITIZE,
|
|
ROUTE_TASK_STATUS_TRANSITION,
|
|
ROUTE_TASK_DELETE,
|
|
ROUTE_PERSONNEL_ROLE_UPDATE,
|
|
ROUTE_PERSONNEL_WORKLOAD_UPDATE,
|
|
ROUTE_PERSONNEL_AVAILABILITY_UPDATE,
|
|
ROUTE_KNOWLEDGE_DOC_UPSERT,
|
|
ROUTE_KNOWLEDGE_CHUNK_UPSERT,
|
|
ROUTE_KNOWLEDGE_LINK_UPSERT,
|
|
ROUTE_KNOWLEDGE_REINDEX,
|
|
ROUTE_NOTIFICATION_CREATE,
|
|
ROUTE_NOTIFICATION_ACK,
|
|
ROUTE_NOTIFICATION_CLOSE,
|
|
CanonicalIntent,
|
|
)
|
|
|
|
|
|
def normalize_workload_ratio(value: Any) -> float:
|
|
try:
|
|
ratio = float(value or 0.0)
|
|
except (TypeError, ValueError):
|
|
return 0.0
|
|
if ratio <= 0:
|
|
return 0.0
|
|
return ratio / 100.0 if ratio > 1.0 else ratio
|
|
|
|
|
|
def safe_int(value: Any) -> int | None:
|
|
try:
|
|
if value is None or value == "":
|
|
return None
|
|
return int(value)
|
|
except (TypeError, ValueError):
|
|
return None
|
|
|
|
|
|
__all__ = [
|
|
"Any",
|
|
"CanonicalIntent",
|
|
"INTENT_FOLLOWUP_CONFIRM",
|
|
"INTENT_FOLLOWUP_CONTINUE",
|
|
"INTENT_PROJECT_CREATE",
|
|
"INTENT_PROJECT_UPDATE",
|
|
"INTENT_PROJECT_ARCHIVE",
|
|
"INTENT_PROJECT_REOPEN",
|
|
"INTENT_PROJECT_DELETE",
|
|
"INTENT_QUERY",
|
|
"INTENT_TASK_CREATE",
|
|
"INTENT_TASK_UPDATE",
|
|
"INTENT_TASK_ASSIGN",
|
|
"INTENT_TASK_PRIORITIZE",
|
|
"INTENT_TASK_STATUS_TRANSITION",
|
|
"INTENT_TASK_DELETE",
|
|
"INTENT_PERSONNEL_ROLE_UPDATE",
|
|
"INTENT_PERSONNEL_WORKLOAD_UPDATE",
|
|
"INTENT_PERSONNEL_AVAILABILITY_UPDATE",
|
|
"INTENT_KNOWLEDGE_DOC_UPSERT",
|
|
"INTENT_KNOWLEDGE_CHUNK_UPSERT",
|
|
"INTENT_KNOWLEDGE_LINK_UPSERT",
|
|
"INTENT_KNOWLEDGE_REINDEX",
|
|
"INTENT_NOTIFICATION_CREATE",
|
|
"INTENT_NOTIFICATION_ACK",
|
|
"INTENT_NOTIFICATION_CLOSE",
|
|
"INTENT_SIGNAL_CREATE",
|
|
"INTENT_SIGNAL_SOURCE_ONBOARD",
|
|
"ROUTE_FAMILY_KNOWLEDGE",
|
|
"ROUTE_FAMILY_NOTIFICATION",
|
|
"ROUTE_FAMILY_PERSONNEL",
|
|
"ROUTE_FAMILY_PROJECT",
|
|
"ROUTE_PROJECT_SIGNAL_CANCEL",
|
|
"ROUTE_PROJECT_SIGNAL_COMMIT",
|
|
"ROUTE_PROJECT_SIGNAL_DISCOVER",
|
|
"ROUTE_PROJECT_SIGNAL_REFRESH",
|
|
"ROUTE_PROJECT_UPDATE",
|
|
"ROUTE_PROJECT_ARCHIVE",
|
|
"ROUTE_PROJECT_REOPEN",
|
|
"ROUTE_PROJECT_DELETE",
|
|
"ROUTE_TASK_UPDATE",
|
|
"ROUTE_TASK_ASSIGN",
|
|
"ROUTE_TASK_PRIORITIZE",
|
|
"ROUTE_TASK_STATUS_TRANSITION",
|
|
"ROUTE_TASK_DELETE",
|
|
"ROUTE_PERSONNEL_ROLE_UPDATE",
|
|
"ROUTE_PERSONNEL_WORKLOAD_UPDATE",
|
|
"ROUTE_PERSONNEL_AVAILABILITY_UPDATE",
|
|
"ROUTE_KNOWLEDGE_DOC_UPSERT",
|
|
"ROUTE_KNOWLEDGE_CHUNK_UPSERT",
|
|
"ROUTE_KNOWLEDGE_LINK_UPSERT",
|
|
"ROUTE_KNOWLEDGE_REINDEX",
|
|
"ROUTE_NOTIFICATION_CREATE",
|
|
"ROUTE_NOTIFICATION_ACK",
|
|
"ROUTE_NOTIFICATION_CLOSE",
|
|
"normalize_workload_ratio",
|
|
"re",
|
|
"safe_int",
|
|
]
|