From e3dfec1b4b75568a1f1ca186252c080349e4d537 Mon Sep 17 00:00:00 2001 From: Marsway Date: Thu, 26 Mar 2026 11:50:56 +0800 Subject: [PATCH] update --- extensions/sync_ehr_to_oa/job.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/extensions/sync_ehr_to_oa/job.py b/extensions/sync_ehr_to_oa/job.py index eea645f..2a334da 100644 --- a/extensions/sync_ehr_to_oa/job.py +++ b/extensions/sync_ehr_to_oa/job.py @@ -149,6 +149,8 @@ def _extract_staff_code(staff_profile: dict[str, Any]) -> str: return str( staff_profile.get("staffCode") or staff_profile.get("StaffCode") + or staff_profile.get("code") + or staff_profile.get("Code") or staff_profile.get("employeeNo") or "" ).strip() @@ -720,6 +722,17 @@ class SyncEhrToOaFormJob(BaseJob): manager = _prefer_non_empty(manager, _cell_value(existing_field_map.get(display_to_code["汇报人"]))) hrbp_show = _prefer_non_empty(hrbp_show, _cell_show_value(existing_field_map.get(display_to_code["HRBP"]))) manager_show = _prefer_non_empty(manager_show, _cell_show_value(existing_field_map.get(display_to_code["汇报人"]))) + # HRBP/汇报人强制走“EHR userId -> 工号 -> OA memberId”链路; + # 不再回退旧值,避免把历史错误的 EHR userId 继续写回 OA 成员字段。 + if not hrbp and verbose_trace: + logger.warning("HRBP 映射为空:job_no=%s hrbp_uid=%s hrbp_code=%s", job_no, hrbp_uid, hrbp_code) + if not manager and verbose_trace: + logger.warning("汇报人映射为空:job_no=%s manager_uid=%s manager_code=%s", job_no, manager_uid, manager_code) + # 重新覆盖,取消上面的旧值回退效果 + hrbp = str(hrbp_member.get("id") or "") + manager = str(manager_member.get("id") or "") + hrbp_show = str(hrbp_member.get("name") or hrbp_code) + manager_show = str(manager_member.get("name") or manager_code) is_leaving = _prefer_non_empty(is_leaving, _cell_value(existing_field_map.get(display_to_code["在离职"]))) domain_account = _prefer_non_empty(domain_account, _cell_value(existing_field_map.get(display_to_code["域账号"])))