chore: auto release commit (2026-06-19 11:07:44)
Some checks failed
技能自动化发布 / release (push) Failing after 3s
Some checks failed
技能自动化发布 / release (push) Failing after 3s
This commit is contained in:
@@ -806,6 +806,115 @@ def upsert_platform(
|
||||
conn.commit()
|
||||
|
||||
|
||||
def ensure_platform_from_caller_meta(
|
||||
conn,
|
||||
key: str,
|
||||
*,
|
||||
display_name: str,
|
||||
domain: str = "generic",
|
||||
default_url: str = "",
|
||||
aliases: list[str] | None = None,
|
||||
default_auth_strategy: str | None = None,
|
||||
capabilities_json: str = '{"web": true, "api_key": false, "rpa": true}',
|
||||
) -> str:
|
||||
"""
|
||||
调用方元数据自动注册平台:不存在则创建;已存在则仅填充空字段,不覆盖非空自定义值。
|
||||
返回 created | updated | unchanged。
|
||||
"""
|
||||
now = int(time.time())
|
||||
provider_code = key
|
||||
alias_list: list[str] = []
|
||||
for item in [key, display_name, *(aliases or [])]:
|
||||
s = str(item).strip()
|
||||
if s and s not in alias_list:
|
||||
alias_list.append(s)
|
||||
aliases_json = json.dumps(alias_list, ensure_ascii=False)
|
||||
|
||||
row = conn.execute(
|
||||
"""
|
||||
SELECT display_name, domain, provider_code, default_url, aliases_json,
|
||||
capabilities_json, default_auth_strategy, enabled
|
||||
FROM platforms WHERE platform_key = ?
|
||||
""",
|
||||
(key,),
|
||||
).fetchone()
|
||||
|
||||
if row is None:
|
||||
upsert_platform(
|
||||
conn,
|
||||
key=key,
|
||||
display_name=display_name,
|
||||
domain=domain,
|
||||
provider_code=provider_code,
|
||||
default_url=default_url,
|
||||
aliases_json=aliases_json,
|
||||
capabilities_json=capabilities_json,
|
||||
default_auth_strategy=default_auth_strategy,
|
||||
)
|
||||
return "created"
|
||||
|
||||
cur_display, cur_domain, cur_provider, cur_url, cur_aliases_json, cur_caps, cur_auth, enabled = row
|
||||
if not enabled:
|
||||
return "unchanged"
|
||||
|
||||
merged_display = (cur_display or "").strip() or display_name
|
||||
merged_domain = (cur_domain or "").strip() or domain
|
||||
merged_provider = (cur_provider or "").strip() or provider_code
|
||||
merged_url = (cur_url or "").strip() or (default_url or "").strip()
|
||||
merged_auth = cur_auth or default_auth_strategy
|
||||
|
||||
existing_aliases = _safe_json_loads(cur_aliases_json, [])
|
||||
if not isinstance(existing_aliases, list):
|
||||
existing_aliases = []
|
||||
merged_aliases: list[str] = []
|
||||
for item in list(existing_aliases) + alias_list:
|
||||
s = str(item).strip()
|
||||
if s and s not in merged_aliases:
|
||||
merged_aliases.append(s)
|
||||
merged_aliases_json = json.dumps(merged_aliases, ensure_ascii=False)
|
||||
|
||||
merged_caps = cur_caps or capabilities_json
|
||||
|
||||
unchanged = (
|
||||
merged_display == (cur_display or "")
|
||||
and merged_domain == (cur_domain or "")
|
||||
and merged_provider == (cur_provider or "")
|
||||
and merged_url == (cur_url or "")
|
||||
and merged_aliases_json == (cur_aliases_json or "[]")
|
||||
and merged_auth == cur_auth
|
||||
)
|
||||
if unchanged:
|
||||
return "unchanged"
|
||||
|
||||
conn.execute(
|
||||
"""
|
||||
UPDATE platforms SET
|
||||
display_name = ?,
|
||||
domain = ?,
|
||||
provider_code = ?,
|
||||
default_url = ?,
|
||||
aliases_json = ?,
|
||||
capabilities_json = ?,
|
||||
default_auth_strategy = ?,
|
||||
updated_at = ?
|
||||
WHERE platform_key = ?
|
||||
""",
|
||||
(
|
||||
merged_display,
|
||||
merged_domain,
|
||||
merged_provider,
|
||||
merged_url,
|
||||
merged_aliases_json,
|
||||
merged_caps,
|
||||
merged_auth,
|
||||
now,
|
||||
key,
|
||||
),
|
||||
)
|
||||
conn.commit()
|
||||
return "updated"
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Internal helpers
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user