fix: ensure_org_skills改增量同步(全局模板新增技能同步到已有机构,不只首次复制)

This commit is contained in:
yumoqing 2026-08-16 19:03:34 +08:00
parent 57df6cd785
commit f19562a360

View File

@ -45,21 +45,42 @@ def get_org_skills_dir(workspace_base, org_id):
def ensure_org_skills(workspace_base, org_id):
"""确保机构工作目录的 skills/ 已初始化(首次从全局模板复制公共技能 + 技能集清单)。
"""确保机构工作目录的 skills/ 已初始化(从全局模板复制公共技能 + 技能集清单)。
多租户隔离运行时技能必须落在机构工作目录不能读全局应用目录的 skills/
增量同步全局模板新增的技能/清单会同步到机构目录已有机构也能拿到新技能
返回机构技能根目录
"""
org_skills = get_org_skills_dir(workspace_base, org_id)
os.makedirs(org_skills, exist_ok=True)
# 复制公共技能global
if not os.path.isdir(os.path.join(org_skills, "global")):
# 公共技能global首次全量复制之后增量同步全局模板新增的技能复制过来
org_global = os.path.join(org_skills, "global")
if not os.path.isdir(org_global):
if os.path.isdir(ALL_DIR):
shutil.copytree(ALL_DIR, os.path.join(org_skills, "global"))
# 复制技能集清单packs
if not os.path.isdir(os.path.join(org_skills, "packs")):
shutil.copytree(ALL_DIR, org_global)
elif os.path.isdir(ALL_DIR):
for name in os.listdir(ALL_DIR):
src = os.path.join(ALL_DIR, name)
dst = os.path.join(org_global, name)
if not os.path.exists(dst):
if os.path.isdir(src):
shutil.copytree(src, dst)
else:
shutil.copy2(src, dst)
# 技能集清单packs首次全量复制之后增量同步
org_packs = os.path.join(org_skills, "packs")
if not os.path.isdir(org_packs):
if os.path.isdir(PACKS_DIR):
shutil.copytree(PACKS_DIR, os.path.join(org_skills, "packs"))
shutil.copytree(PACKS_DIR, org_packs)
elif os.path.isdir(PACKS_DIR):
for name in os.listdir(PACKS_DIR):
src = os.path.join(PACKS_DIR, name)
dst = os.path.join(org_packs, name)
if not os.path.exists(dst):
if os.path.isdir(src):
shutil.copytree(src, dst)
else:
shutil.copy2(src, dst)
return org_skills