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:
@@ -35,6 +35,8 @@ from kilostar.core.postgres_database.model.tool_config import ToolConfigModel
|
||||
from kilostar.core.postgres_database.model.custom_toolset import CustomToolsetModel
|
||||
from kilostar.core.postgres_database.model.system_event_log import SystemEventLog
|
||||
from kilostar.core.postgres_database.model.persona_template import PersonaTemplate
|
||||
from kilostar.core.postgres_database.model.org_task import OrgTask
|
||||
from kilostar.core.postgres_database.model.org_task_event import OrgTaskEvent
|
||||
|
||||
# 兼容旧代码的别名
|
||||
Provider = ProviderModel
|
||||
@@ -65,5 +67,7 @@ __all__ = [
|
||||
"CustomToolsetModel",
|
||||
"SystemEventLog",
|
||||
"PersonaTemplate",
|
||||
"OrgTask",
|
||||
"OrgTaskEvent",
|
||||
"AgentType",
|
||||
]
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
from sqlalchemy import String, DateTime, Integer, func, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from .base import BaseDataModel
|
||||
|
||||
|
||||
class OrgTask(BaseDataModel):
|
||||
__tablename__ = "org_task"
|
||||
|
||||
id: Mapped[int] = mapped_column(
|
||||
Integer, primary_key=True, autoincrement=True
|
||||
)
|
||||
task_id: Mapped[str] = mapped_column(
|
||||
String(64), unique=True, index=True, comment="外部任务 ID(UUID)"
|
||||
)
|
||||
org_name: Mapped[str] = mapped_column(
|
||||
String(128), index=True, comment="所属组织/插件名"
|
||||
)
|
||||
status: Mapped[str] = mapped_column(
|
||||
String(20), index=True, default="pending",
|
||||
comment="pending/running/done/error"
|
||||
)
|
||||
description: Mapped[str] = mapped_column(
|
||||
Text, comment="任务描述"
|
||||
)
|
||||
result: Mapped[str | None] = mapped_column(
|
||||
Text, nullable=True, comment="最终结果"
|
||||
)
|
||||
context: Mapped[dict | None] = mapped_column(
|
||||
JSONB, nullable=True, comment="调用上下文"
|
||||
)
|
||||
created_at: Mapped[str] = mapped_column(
|
||||
DateTime(timezone=True), server_default=func.now(), index=True
|
||||
)
|
||||
updated_at: Mapped[str] = mapped_column(
|
||||
DateTime(timezone=True), server_default=func.now(),
|
||||
onupdate=func.now()
|
||||
)
|
||||
@@ -0,0 +1,25 @@
|
||||
from sqlalchemy import String, DateTime, Integer, func, Text, ForeignKey
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from .base import BaseDataModel
|
||||
|
||||
|
||||
class OrgTaskEvent(BaseDataModel):
|
||||
__tablename__ = "org_task_event"
|
||||
|
||||
id: Mapped[int] = mapped_column(
|
||||
Integer, primary_key=True, autoincrement=True
|
||||
)
|
||||
task_id: Mapped[str] = mapped_column(
|
||||
String(64), index=True, comment="关联的 org_task.task_id"
|
||||
)
|
||||
event_type: Mapped[str] = mapped_column(
|
||||
String(30), index=True,
|
||||
comment="log/step/artifact/approval_request/done/error"
|
||||
)
|
||||
payload: Mapped[dict | None] = mapped_column(
|
||||
JSONB, nullable=True, comment="事件负载"
|
||||
)
|
||||
created_at: Mapped[str] = mapped_column(
|
||||
DateTime(timezone=True), server_default=func.now(), index=True
|
||||
)
|
||||
Reference in New Issue
Block a user