feat: 技能 publish 落点按 org_id 分流——组织自有规范落 org scope
机构技能层架构配套:技能提议 publish 时按提案 org_id 决定落点——
org_id='0'(ocai/平台)写 global(所有组织缺省共享);org_id≠'0' 写
skills/orgs/{org_id}/(组织自有开发规范,经 get_merged 的 org 缺省继承
+ 组织覆盖机制,该组织项目角色可见且覆盖 ocai 同名)。
This commit is contained in:
parent
48a26e5375
commit
023b2c6145
@ -91,9 +91,17 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
return json.dumps({"success": False, "error": "提议缺少 name 或 content"},
|
||||
ensure_ascii=False)
|
||||
|
||||
# 写 SKILL.md 到全局模板 skills/global/{name}/(单一技能树,所有机构共享读,无需同步副本)
|
||||
# 写 SKILL.md 到技能树。落点按提案 org_id 分流(机构技能层架构):
|
||||
# - org_id='0'(ocai 组织/平台缺省)→ skills/global/{name}/(平台通用规范,所有组织缺省共享)
|
||||
# - org_id≠'0'(其他组织)→ skills/orgs/{org_id}/{name}/(组织自有开发规范,
|
||||
# 经 get_merged 的 org 缺省继承 + 组织覆盖机制,该组织项目角色可见且覆盖 ocai 同名)
|
||||
from pipeline_core.skill_pack import get_skills_base
|
||||
skill_dir = os.path.join(get_skills_base(), "global", name)
|
||||
proposal_org = (getattr(r, 'org_id', '') or '').strip() or '0'
|
||||
base = get_skills_base()
|
||||
if proposal_org and proposal_org != '0':
|
||||
skill_dir = os.path.join(base, "orgs", proposal_org, name)
|
||||
else:
|
||||
skill_dir = os.path.join(base, "global", name)
|
||||
os.makedirs(skill_dir, exist_ok=True)
|
||||
with open(os.path.join(skill_dir, "SKILL.md"), "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user