chore: auto release commit (2026-06-19 11:07:44)
Some checks failed
技能自动化发布 / release (push) Failing after 3s

This commit is contained in:
2026-06-19 11:07:44 +08:00
parent 23f4a2c11a
commit 75c7ea67d5
4 changed files with 419 additions and 12 deletions

View File

@@ -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
# ============================================================================