fix: ensure_org_skills改增量同步(全局模板新增技能同步到已有机构,不只首次复制)
This commit is contained in:
parent
57df6cd785
commit
f19562a360
@ -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
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user