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):
|
def ensure_org_skills(workspace_base, org_id):
|
||||||
"""确保机构工作目录的 skills/ 已初始化(首次从全局模板复制公共技能 + 技能集清单)。
|
"""确保机构工作目录的 skills/ 已初始化(从全局模板复制公共技能 + 技能集清单)。
|
||||||
|
|
||||||
多租户隔离:运行时技能必须落在机构工作目录,不能读全局应用目录的 skills/。
|
多租户隔离:运行时技能必须落在机构工作目录,不能读全局应用目录的 skills/。
|
||||||
|
增量同步:全局模板新增的技能/清单,会同步到机构目录(已有机构也能拿到新技能)。
|
||||||
返回机构技能根目录。
|
返回机构技能根目录。
|
||||||
"""
|
"""
|
||||||
org_skills = get_org_skills_dir(workspace_base, org_id)
|
org_skills = get_org_skills_dir(workspace_base, org_id)
|
||||||
os.makedirs(org_skills, exist_ok=True)
|
os.makedirs(org_skills, exist_ok=True)
|
||||||
# 复制公共技能(global)
|
# 公共技能(global):首次全量复制,之后增量同步(全局模板新增的技能复制过来)
|
||||||
if not os.path.isdir(os.path.join(org_skills, "global")):
|
org_global = os.path.join(org_skills, "global")
|
||||||
|
if not os.path.isdir(org_global):
|
||||||
if os.path.isdir(ALL_DIR):
|
if os.path.isdir(ALL_DIR):
|
||||||
shutil.copytree(ALL_DIR, os.path.join(org_skills, "global"))
|
shutil.copytree(ALL_DIR, org_global)
|
||||||
# 复制技能集清单(packs)
|
elif os.path.isdir(ALL_DIR):
|
||||||
if not os.path.isdir(os.path.join(org_skills, "packs")):
|
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):
|
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
|
return org_skills
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user