177 lines
8.7 KiB
Python
177 lines
8.7 KiB
Python
"""Mounted AI Runtime 核心运行时对象。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Optional
|
|
|
|
from sqlalchemy import Boolean, Float, ForeignKey, Integer, Text, TIMESTAMP, UniqueConstraint, VARCHAR
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from .base import Base
|
|
from .types import JSONB
|
|
|
|
|
|
class MountedTopicWorkspace(Base):
|
|
__tablename__ = "mounted_topic_workspaces"
|
|
__table_args__ = (
|
|
UniqueConstraint(
|
|
"tenant_id",
|
|
"source_system",
|
|
"topic_key",
|
|
name="uq_mounted_topic_workspace_source_topic",
|
|
),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
topic_key: Mapped[str] = mapped_column(VARCHAR(128), nullable=False, index=True)
|
|
source_system: Mapped[str] = mapped_column(VARCHAR(32), nullable=False, index=True)
|
|
channel_ref: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
conversation_scope_key: Mapped[Optional[str]] = mapped_column(VARCHAR(160), nullable=True, index=True)
|
|
thread_key: Mapped[Optional[str]] = mapped_column(VARCHAR(255), nullable=True, index=True)
|
|
root_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
mode: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="chat", index=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="active", index=True)
|
|
plan_status: Mapped[str] = mapped_column(VARCHAR(32), nullable=False, default="idle", index=True)
|
|
facts_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
goals_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
constraints_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
options_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
open_questions: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
pending_actions: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
bound_entities: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
readiness_score: Mapped[Optional[float]] = mapped_column(Float, nullable=True, default=0.0)
|
|
last_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
last_triggered_at: Mapped[Optional[TIMESTAMP]] = mapped_column(TIMESTAMP, nullable=True)
|
|
metadata_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
|
|
|
|
class MountedDraftWorkspace(Base):
|
|
__tablename__ = "mounted_draft_workspaces"
|
|
__table_args__ = (
|
|
UniqueConstraint(
|
|
"tenant_id",
|
|
"topic_workspace_id",
|
|
name="uq_mounted_draft_workspace_topic",
|
|
),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
topic_workspace_id: Mapped[int] = mapped_column(
|
|
Integer,
|
|
ForeignKey("mounted_topic_workspaces.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
index=True,
|
|
)
|
|
state: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="collecting", index=True)
|
|
draft_version: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
|
requirement_card: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
draft_payload: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
required_confirmations: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
last_ready_at: Mapped[Optional[TIMESTAMP]] = mapped_column(TIMESTAMP, nullable=True)
|
|
confirm_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
|
|
|
|
class MountedConversationRun(Base):
|
|
__tablename__ = "mounted_conversation_runs"
|
|
__table_args__ = (
|
|
UniqueConstraint("tenant_id", "trace_id", name="uq_mounted_conversation_run_trace"),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
trace_id: Mapped[str] = mapped_column(VARCHAR(64), nullable=False, index=True)
|
|
topic_workspace_id: Mapped[Optional[int]] = mapped_column(
|
|
Integer,
|
|
ForeignKey("mounted_topic_workspaces.id", ondelete="SET NULL"),
|
|
nullable=True,
|
|
index=True,
|
|
)
|
|
source_system: Mapped[str] = mapped_column(VARCHAR(32), nullable=False, index=True)
|
|
source_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
mode_before: Mapped[Optional[str]] = mapped_column(VARCHAR(24), nullable=True, index=True)
|
|
mode_after: Mapped[Optional[str]] = mapped_column(VARCHAR(24), nullable=True, index=True)
|
|
active_agent: Mapped[Optional[str]] = mapped_column(VARCHAR(64), nullable=True, index=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="queued", index=True)
|
|
trigger_reason: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
context_layers_hit: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
tool_calls: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
final_reply: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
execution_outcome: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
error_text: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
started_at: Mapped[Optional[TIMESTAMP]] = mapped_column(TIMESTAMP, nullable=True)
|
|
completed_at: Mapped[Optional[TIMESTAMP]] = mapped_column(TIMESTAMP, nullable=True)
|
|
|
|
|
|
class MountedAgentTrace(Base):
|
|
__tablename__ = "mounted_agent_traces"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
conversation_run_id: Mapped[int] = mapped_column(
|
|
Integer,
|
|
ForeignKey("mounted_conversation_runs.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
index=True,
|
|
)
|
|
agent_name: Mapped[str] = mapped_column(VARCHAR(64), nullable=False, index=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="completed", index=True)
|
|
latency_ms: Mapped[Optional[int]] = mapped_column(Integer, nullable=True)
|
|
input_summary: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
output_summary: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
tool_trace: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
failure_reason: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
|
|
|
|
class MountedSourceActivation(Base):
|
|
__tablename__ = "mounted_source_activations"
|
|
__table_args__ = (
|
|
UniqueConstraint(
|
|
"tenant_id",
|
|
"source_system",
|
|
"scope_type",
|
|
"scope_ref",
|
|
name="uq_mounted_source_activation_scope",
|
|
),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
source_system: Mapped[str] = mapped_column(VARCHAR(32), nullable=False, index=True)
|
|
scope_type: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="tenant", index=True)
|
|
scope_ref: Mapped[str] = mapped_column(VARCHAR(128), nullable=False, index=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="active", index=True)
|
|
cutover_mode: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="shadow", index=True)
|
|
auto_reply_enabled: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
|
metadata_json: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
notes: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
last_seen_at: Mapped[Optional[TIMESTAMP]] = mapped_column(TIMESTAMP, nullable=True)
|
|
|
|
|
|
class MountedToolCapabilityPolicy(Base):
|
|
__tablename__ = "mounted_tool_capability_policies"
|
|
__table_args__ = (
|
|
UniqueConstraint(
|
|
"tenant_id",
|
|
"tool_name",
|
|
name="uq_mounted_tool_capability_policy_tool",
|
|
),
|
|
)
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
tool_name: Mapped[str] = mapped_column(VARCHAR(128), nullable=False, index=True)
|
|
risk_level: Mapped[str] = mapped_column(VARCHAR(24), nullable=False, default="medium", index=True)
|
|
confirm_required: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True)
|
|
auto_execute_allowed: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
|
is_active: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True, index=True)
|
|
source_scope: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
tenant_scope: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
policy_metadata: Mapped[Optional[Any]] = mapped_column(JSONB, nullable=True)
|
|
notes: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
|
|
|
|
__all__ = [
|
|
"MountedAgentTrace",
|
|
"MountedConversationRun",
|
|
"MountedDraftWorkspace",
|
|
"MountedSourceActivation",
|
|
"MountedToolCapabilityPolicy",
|
|
"MountedTopicWorkspace",
|
|
]
|