From adb93ae6ccac3354c2d515766f2128bec370a7c8 Mon Sep 17 00:00:00 2001 From: Marsway Date: Thu, 14 May 2026 16:00:39 +0800 Subject: [PATCH] update --- extensions/sync_ehr_to_ad/README.md | 3 ++- extensions/sync_ehr_to_ad/job.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/extensions/sync_ehr_to_ad/README.md b/extensions/sync_ehr_to_ad/README.md index 13b6966..a2c4bcb 100644 --- a/extensions/sync_ehr_to_ad/README.md +++ b/extensions/sync_ehr_to_ad/README.md @@ -16,6 +16,7 @@ - EHR 目标值为空时不会清空 AD 字段。 - 如果配置了 `target_sam_accounts`,只对列表中的 AD 账号执行同步。 - 不同步 AD `title` 字段,不再往 AD 写入职务。 +- `proxyAddresses` 只在 AD 当前为空时写入;AD 已有值时跳过,不比较也不覆盖。 - `displayName` 取 `employeeInfo.customProperties.extDDNIC_606508_303466862`。 - `department` 写入“EHR 部门编码 + EHR 部门名称”,例如 `V000076 IT`。 - `streetAddress` 默认取 `translateProperties.extgzddxx1_606508_892394263Text`。 @@ -81,7 +82,7 @@ | --- | --- | --- | --- | | `qjjdizcpjk` | 上海 | 上海 | 上海张江 | | `j1lw6k13ya` | 陕西 | 西安 | 西安环普 | -| `uzwlfke8vd` | 广州 | 深圳 | 深圳田厦 | +| `uzwlfke8vd` / `uyglfkg8vd` | 广东 | 深圳 | 深圳田厦 | | `mrtkjjhoxx` | 上海 | 上海 | 上海徐汇 | | `t21uyq5qvx` | 北京 | 北京 | 北京 | | `nhu45qlh80` | 四川 | 成都 | 成都 | diff --git a/extensions/sync_ehr_to_ad/job.py b/extensions/sync_ehr_to_ad/job.py index 0049ccc..d7f78d8 100644 --- a/extensions/sync_ehr_to_ad/job.py +++ b/extensions/sync_ehr_to_ad/job.py @@ -310,11 +310,19 @@ def _location_from_workspace_value(value: str, mappings: dict[str, Any] | None = "l": "西安", "office": "西安环普", }, + "uzwlfke8vd": { + "co": "China", + "c": "CN", + "countryCode": 156, + "st": "广东", + "l": "深圳", + "office": "深圳田厦", + }, "uyglfkg8vd": { "co": "China", "c": "CN", "countryCode": 156, - "st": "广州", + "st": "广东", "l": "深圳", "office": "深圳田厦", }, @@ -709,7 +717,13 @@ class SyncEhrToAdUserJob(BaseJob): if department_code_attr and department_code: attributes[department_code_attr] = department_code - diff_attributes = _diff_ad_attributes(ad_user.get("attributes") or {}, attributes) + ad_attrs = ad_user.get("attributes") or {} + if _ad_values(ad_attrs, "proxyAddresses"): + attributes.pop("proxyAddresses", None) + if verbose_trace: + logger.info("AD proxyAddresses 已有值,跳过同步:sam=%s dn=%s", sam, ad_user["dn"]) + + diff_attributes = _diff_ad_attributes(ad_attrs, attributes) if not diff_attributes: skipped_unchanged += 1 if verbose_trace: