feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""预览参数解析(对标 JNPF parameterData 子集)"""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date, datetime
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
|
||||
def _today_str() -> str:
|
||||
return date.today().isoformat()
|
||||
|
||||
|
||||
def _now_str() -> str:
|
||||
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
|
||||
def build_system_params(
|
||||
*,
|
||||
user_id: Optional[str] = None,
|
||||
user_name: Optional[str] = None,
|
||||
dept_id: Optional[str] = None,
|
||||
dept_name: Optional[str] = None,
|
||||
tenant_id: Optional[str] = None,
|
||||
) -> Dict[str, Any]:
|
||||
"""系统变量,与 JNPF parameterData 常用键对齐。"""
|
||||
params: Dict[str, Any] = {
|
||||
"currentDate": _today_str(),
|
||||
"currentTime": _now_str(),
|
||||
"currentUserId": user_id or "",
|
||||
"currentUserName": user_name or "",
|
||||
"currentDeptId": dept_id or "",
|
||||
"currentDeptName": dept_name or "",
|
||||
"currentTenantId": tenant_id or "",
|
||||
}
|
||||
# 兼容 #{userName} / #{deptName} 简写
|
||||
if user_name:
|
||||
params.setdefault("userName", user_name)
|
||||
if dept_name:
|
||||
params.setdefault("deptName", dept_name)
|
||||
return params
|
||||
|
||||
|
||||
def merge_preview_params(
|
||||
query_defaults: Optional[Dict[str, Any]] = None,
|
||||
request_params: Optional[Dict[str, Any]] = None,
|
||||
system_params: Optional[Dict[str, Any]] = None,
|
||||
) -> Dict[str, Any]:
|
||||
"""合并顺序:query 默认 → 系统变量 → 请求参数(请求优先)。"""
|
||||
merged: Dict[str, Any] = {}
|
||||
for src in (query_defaults or {}, system_params or {}, request_params or {}):
|
||||
for k, v in src.items():
|
||||
if v is not None and v != "":
|
||||
merged[k] = v
|
||||
return merged
|
||||
Reference in New Issue
Block a user