feat: 工具系统迁移 + 重型插件骨架 + 前端交互增强

- 工具系统从 kilostar/plugin/tool_plugin/ 迁移到 data/toolset/(manifest.json 声明式)
- 新增 plugin_runtime 模块:BaseOrganization / GlobalPluginManager / loader / tool_bridge
- 新增 org_task + org_task_event 表及 DAO(alembic 0009)
- 新增 /api/v1/plugin 路由(submit/status/stream/install/reload)
- 新增 data/plugin/example_dept 示例重型插件
- regulatory_node 支持聊天历史上下文注入
- send_file 改为 artifact 存盘 + SSE 推送下载链接
- 前端 WorkflowFileCard 组件 + ToolSettings README 渲染
- utils 整理:合并 access/role_check、standalone_proxy→ray_compat、删除废弃模块
- 项目结构文档移至 docs/STRUCTURE.md 并详细展开

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 05:20:00 +00:00
parent 9b73ae4db4
commit 6d658b4f4d
74 changed files with 2591 additions and 1308 deletions
+5 -7
View File
@@ -21,17 +21,16 @@ def _fake_user(user_id: str = "alice"):
@pytest.fixture
def app_with_user(monkeypatch):
"""挂上 resource_router;用 dependency_overrides 跳过 JWT,并把 get_authority 默认放成 USER。"""
import kilostar.utils.access as access_mod
app = FastAPI()
app.include_router(resource_router)
app.dependency_overrides[Accessor.get_current_user] = lambda: _fake_user("alice")
# 默认把权限置为 USER;具体 case 内部可再 monkeypatch 覆盖
async def _default_authority(uid):
return UserAuthority.USER
monkeypatch.setattr(
"kilostar.utils.check_user.role_check.get_authority", _default_authority
)
monkeypatch.setattr(access_mod, "get_authority", _default_authority)
return app
@@ -87,9 +86,8 @@ async def test_get_custom_toolset_allowed_for_admin(
async def _admin(uid):
return UserAuthority.SUPER_ADMINISTRATOR
monkeypatch.setattr(
"kilostar.utils.check_user.role_check.get_authority", _admin
)
import kilostar.utils.access as access_mod
monkeypatch.setattr(access_mod, "get_authority", _admin)
transport = ASGITransport(app=app_with_user)
async with AsyncClient(transport=transport, base_url="http://test") as client: