37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from app.action_catalog import ACTION_CODES, get_action_config
|
|
from app.schemas import ActionDecision, ActionResult
|
|
|
|
|
|
# Apenas normalizações benignas de formato/typo. Códigos legados operacionais
|
|
# não são convertidos: se aparecerem, a tarefa vai para revisão.
|
|
ACTION_CODE_ALIASES = {
|
|
"SENDO_INVOICE": "SEND_INVOICE",
|
|
"SENDING_INVOICE": "SEND_INVOICE",
|
|
}
|
|
|
|
|
|
def normalize_action_code(value: str) -> str:
|
|
code = str(value or "").strip().upper()
|
|
code = ACTION_CODE_ALIASES.get(code, code)
|
|
if code not in ACTION_CODES:
|
|
return "REVIEW_MANUALLY"
|
|
return code
|
|
|
|
|
|
def map_action_decision(decision: ActionDecision) -> ActionResult:
|
|
code = normalize_action_code(decision.action_code)
|
|
config = get_action_config(code)
|
|
|
|
note = str(decision.note or "").strip()
|
|
if not note:
|
|
note = config["action"]
|
|
|
|
return ActionResult(
|
|
action_code=code,
|
|
route=config["route"],
|
|
action_required=config["action_required"],
|
|
action=config["action"],
|
|
note=note,
|
|
safe_to_post=config["safe_to_post"],
|
|
)
|