-- pbl_agent_runtime 表 DDL(自动生成,与 apps/pbls/scripts/ddl/pbls_tables.sql 同源) CREATE TABLE IF NOT EXISTS `pbl_agent_def` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `code` VARCHAR(64) NOT NULL COMMENT "Agent编码", `agent_type` VARCHAR(64) NOT NULL COMMENT "类型", `name` VARCHAR(128) NOT NULL COMMENT "名称", `model_route` VARCHAR(64) NOT NULL COMMENT "pipeline-llm 路由", `system_prompt_txt` TEXT NULL COMMENT "提示词", `tool_whitelist_json` LONGTEXT NULL COMMENT "工具白名单", `permission_mode` VARCHAR(64) NOT NULL COMMENT "read/write 模式", `is_enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用", `version_no` INT NOT NULL DEFAULT 0 COMMENT "版本", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_ad_code` (`tenant_id`, `code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Agent 定义(Designer/Critic)"; CREATE TABLE IF NOT EXISTS `pbl_tool_registry` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `tool_key` VARCHAR(64) NOT NULL COMMENT "工具键", `title` VARCHAR(128) NOT NULL COMMENT "标题", `agent_scope` VARCHAR(64) NOT NULL COMMENT "作用域", `permission_required` VARCHAR(64) NOT NULL COMMENT "所需权限", `enabled` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "启用", `params_schema_json` LONGTEXT NULL COMMENT "参数白名单Schema", `disabled_reason` VARCHAR(64) NOT NULL COMMENT "禁用原因", `version_no` INT NOT NULL DEFAULT 0 COMMENT "版本", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_tr_key` (`tenant_id`, `tool_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="工具注册表(13 启用 / 9 禁用含 pbl.publish)"; CREATE TABLE IF NOT EXISTS `pbl_agent_trace` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `trace_uid` VARCHAR(32) NOT NULL COMMENT "轨迹UID", `agent_code` VARCHAR(64) NOT NULL COMMENT "Agent", `blueprint_id` BIGINT UNSIGNED NOT NULL COMMENT "目标蓝图", `input_ref_json` LONGTEXT NULL COMMENT "要素1 输入引用", `thought_txt` TEXT NULL COMMENT "要素2 思考", `action_code` VARCHAR(64) NOT NULL COMMENT "要素3 动作", `action_params_json` LONGTEXT NULL COMMENT "要素4 动作参数", `observation_json` LONGTEXT NULL COMMENT "要素5 观察", `result_state` VARCHAR(64) NOT NULL COMMENT "要素6 结果状态", `llm_calls` INT NOT NULL DEFAULT 0 COMMENT "要素7 LLM调用数", `duration_ms` INT NOT NULL DEFAULT 0 COMMENT "耗时", `created_by` VARCHAR(32) NOT NULL COMMENT "触发用户", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_at_uid` (`tenant_id`, `trace_uid`), KEY `idx_at_tenant` (`tenant_id`, `created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="Agent 执行轨迹(第28章 7 要素)"; CREATE TABLE IF NOT EXISTS `pbl_agent_tool_call` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `trace_id` BIGINT UNSIGNED NOT NULL COMMENT "轨迹ID", `tool_key` VARCHAR(64) NOT NULL COMMENT "工具键", `request_json` LONGTEXT NULL COMMENT "请求", `response_json` LONGTEXT NULL COMMENT "响应", `ok` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "成功", `error_code` VARCHAR(64) NOT NULL COMMENT "错误码", `adjudication_code` VARCHAR(64) NOT NULL COMMENT "裁决结论", `duration_ms` INT NOT NULL DEFAULT 0 COMMENT "耗时", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), KEY `idx_tc_trace` (`tenant_id`, `trace_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="工具调用明细(服务端裁决留痕)"; CREATE TABLE IF NOT EXISTS `pbl_approval` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `approval_uid` VARCHAR(32) NOT NULL COMMENT "审批UID", `approval_type` VARCHAR(64) NOT NULL COMMENT "类型", `target_type` VARCHAR(64) NOT NULL COMMENT "对象类型", `target_id` BIGINT UNSIGNED NOT NULL COMMENT "对象ID", `payload_json` LONGTEXT NULL COMMENT "变更内容", `status` VARCHAR(64) NOT NULL COMMENT "状态", `requested_by` VARCHAR(32) NOT NULL COMMENT "发起人", `decided_by` VARCHAR(32) NOT NULL COMMENT "决策人", `decided_at` DATETIME NULL NULL COMMENT "决策时间", `comment_txt` TEXT NULL COMMENT "意见", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_ap_uid` (`tenant_id`, `approval_uid`), KEY `idx_ap_status` (`tenant_id`, `status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="人工审批单(14.2 四类,无绕过路径)"; CREATE TABLE IF NOT EXISTS `pbl_llm_call_log` ( `tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头), `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键, `call_uid` VARCHAR(32) NOT NULL COMMENT "调用UID", `agent_code` VARCHAR(64) NOT NULL COMMENT "Agent", `route` VARCHAR(64) NOT NULL COMMENT "路由", `model` VARCHAR(64) NOT NULL COMMENT "实际模型", `prompt_hash` VARCHAR(32) NOT NULL COMMENT "提示词哈希", `completion_tokens` INT NOT NULL DEFAULT 0 COMMENT "tokens", `latency_ms` INT NOT NULL DEFAULT 0 COMMENT "时延", `status` VARCHAR(64) NOT NULL COMMENT "状态", `error_code` VARCHAR(64) NOT NULL COMMENT "错误码", `fallback_used` TINYINT(1) NOT NULL DEFAULT 0 COMMENT "走兜底", `created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)", `updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)", PRIMARY KEY (`id`), UNIQUE KEY `uk_lc_uid` (`tenant_id`, `call_uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="LLM 调用日志(超时/重试/限流/兜底留痕)";