agent_aftersales_m1.sql 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. CREATE TABLE IF NOT EXISTS agent_tool_registry (
  2. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  3. tool_name VARCHAR(128) NOT NULL COMMENT 'MCP工具名',
  4. tool_version VARCHAR(32) NOT NULL DEFAULT 'v1' COMMENT '工具版本',
  5. description VARCHAR(512) NOT NULL COMMENT '工具说明',
  6. transport VARCHAR(32) NOT NULL DEFAULT 'mcp' COMMENT '工具传输协议',
  7. handler_bean VARCHAR(192) NOT NULL COMMENT 'Java处理器Bean或路由标识',
  8. risk_level VARCHAR(16) NOT NULL COMMENT '风险等级: LOW, MEDIUM, HIGH',
  9. enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
  10. require_approval TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否需要审批',
  11. idempotent TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否支持幂等',
  12. input_schema_json JSON NOT NULL COMMENT '输入参数JSON Schema',
  13. output_schema_json JSON NULL COMMENT '输出结果JSON Schema',
  14. allowed_roles JSON NULL COMMENT '允许调用的角色列表',
  15. sensitive_fields JSON NULL COMMENT '需要脱敏的字段列表',
  16. rate_limit_per_minute INT NOT NULL DEFAULT 60 COMMENT '单工具分钟限流',
  17. timeout_ms INT NOT NULL DEFAULT 10000 COMMENT '工具超时时间',
  18. remark VARCHAR(512) NULL COMMENT '备注',
  19. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  20. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  21. deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
  22. UNIQUE KEY uk_agent_tool_name_version (tool_name, tool_version),
  23. KEY idx_agent_tool_enabled_risk (enabled, risk_level),
  24. KEY idx_agent_tool_handler (handler_bean)
  25. ) COMMENT='Agent MCP工具注册表';
  26. CREATE TABLE IF NOT EXISTS agent_approval (
  27. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  28. approval_id VARCHAR(64) NOT NULL COMMENT '审批ID',
  29. trace_id VARCHAR(64) NOT NULL COMMENT 'Agent运行链路ID',
  30. pending_action_id BIGINT NULL COMMENT '关联冻结动作ID',
  31. biz_type VARCHAR(64) NOT NULL COMMENT '业务类型',
  32. biz_no VARCHAR(128) NULL COMMENT '业务编号',
  33. risk_level VARCHAR(16) NOT NULL COMMENT '风险等级',
  34. status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '状态',
  35. request_user_id BIGINT NULL COMMENT '发起用户ID',
  36. request_username VARCHAR(128) NULL COMMENT '发起用户名',
  37. request_reason VARCHAR(1024) NULL COMMENT '申请原因',
  38. risk_reason VARCHAR(1024) NULL COMMENT '命中高风险的原因',
  39. policy_evidence_json JSON NULL COMMENT '政策依据和RAG命中证据',
  40. requested_amount DECIMAL(10,2) NULL COMMENT '申请金额',
  41. approver_id BIGINT NULL COMMENT '审批人ID',
  42. approver_username VARCHAR(128) NULL COMMENT '审批人名称',
  43. decision_comment VARCHAR(1024) NULL COMMENT '审批意见',
  44. decision_time DATETIME NULL COMMENT '审批时间',
  45. expires_at DATETIME NOT NULL COMMENT '审批过期时间',
  46. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  47. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  48. version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本',
  49. deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
  50. UNIQUE KEY uk_agent_approval_id (approval_id),
  51. KEY idx_agent_approval_trace (trace_id),
  52. KEY idx_agent_approval_status_time (status, create_time),
  53. KEY idx_agent_approval_request_user (request_user_id, status),
  54. KEY idx_agent_approval_biz (biz_type, biz_no)
  55. ) COMMENT='Agent高风险动作审批表';
  56. CREATE TABLE IF NOT EXISTS agent_pending_action (
  57. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  58. action_id VARCHAR(64) NOT NULL COMMENT '冻结动作ID',
  59. approval_id VARCHAR(64) NOT NULL COMMENT '关联审批ID',
  60. trace_id VARCHAR(64) NOT NULL COMMENT 'Agent运行链路ID',
  61. tool_name VARCHAR(128) NOT NULL COMMENT '待执行MCP工具名',
  62. tool_version VARCHAR(32) NOT NULL DEFAULT 'v1' COMMENT '工具版本',
  63. risk_level VARCHAR(16) NOT NULL COMMENT '风险等级',
  64. params_json JSON NOT NULL COMMENT '冻结后的工具参数',
  65. params_hash CHAR(64) NOT NULL COMMENT '参数SHA-256摘要',
  66. idempotency_key VARCHAR(128) NOT NULL COMMENT '幂等键',
  67. execute_status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '执行状态',
  68. execute_result_json JSON NULL COMMENT '执行结果',
  69. error_message TEXT NULL COMMENT '失败原因',
  70. retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数',
  71. executed_at DATETIME NULL COMMENT '执行完成时间',
  72. expires_at DATETIME NOT NULL COMMENT '冻结动作过期时间',
  73. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  74. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  75. version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本',
  76. deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
  77. UNIQUE KEY uk_agent_action_id (action_id),
  78. UNIQUE KEY uk_agent_action_idempotency (idempotency_key),
  79. KEY idx_agent_action_approval (approval_id),
  80. KEY idx_agent_action_trace (trace_id),
  81. KEY idx_agent_action_status_time (execute_status, create_time),
  82. KEY idx_agent_action_tool (tool_name, tool_version)
  83. ) COMMENT='Agent审批后待恢复执行动作表';
  84. CREATE TABLE IF NOT EXISTS agent_audit_log (
  85. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  86. trace_id VARCHAR(64) NOT NULL COMMENT 'Agent运行链路ID',
  87. span_id VARCHAR(64) NULL COMMENT '步骤Span ID',
  88. parent_span_id VARCHAR(64) NULL COMMENT '父级Span ID',
  89. approval_id VARCHAR(64) NULL COMMENT '关联审批ID',
  90. pending_action_id VARCHAR(64) NULL COMMENT '关联冻结动作ID',
  91. actor_type VARCHAR(32) NOT NULL COMMENT '操作者类型',
  92. actor_id VARCHAR(64) NULL COMMENT '操作者ID',
  93. actor_name VARCHAR(128) NULL COMMENT '操作者名称',
  94. step VARCHAR(64) NOT NULL COMMENT '步骤',
  95. event_type VARCHAR(64) NOT NULL COMMENT '事件类型',
  96. tool_name VARCHAR(128) NULL COMMENT '工具名',
  97. risk_level VARCHAR(16) NULL COMMENT '风险等级',
  98. input_json JSON NULL COMMENT '输入快照',
  99. output_json JSON NULL COMMENT '输出快照',
  100. status VARCHAR(32) NOT NULL COMMENT '状态',
  101. error_message TEXT NULL COMMENT '错误信息',
  102. duration_ms BIGINT NULL COMMENT '步骤耗时毫秒',
  103. ip_address VARCHAR(64) NULL COMMENT '客户端IP',
  104. user_agent VARCHAR(512) NULL COMMENT '客户端User-Agent',
  105. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  106. KEY idx_agent_audit_trace_time (trace_id, create_time),
  107. KEY idx_agent_audit_approval (approval_id),
  108. KEY idx_agent_audit_action (pending_action_id),
  109. KEY idx_agent_audit_tool_time (tool_name, create_time),
  110. KEY idx_agent_audit_status_time (status, create_time)
  111. ) COMMENT='Agent全链路审计日志表';
  112. CREATE TABLE IF NOT EXISTS aftersales_work_order (
  113. id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  114. work_order_no VARCHAR(64) NOT NULL COMMENT '售后工单号',
  115. trace_id VARCHAR(64) NOT NULL COMMENT 'Agent运行链路ID',
  116. order_no VARCHAR(128) NOT NULL COMMENT '充电订单号',
  117. charge_record_id BIGINT NULL COMMENT '充电记录ID',
  118. user_id BIGINT NULL COMMENT '用户ID',
  119. phone_masked VARCHAR(64) NULL COMMENT '脱敏手机号',
  120. issue_type VARCHAR(64) NOT NULL COMMENT '问题类型',
  121. issue_level VARCHAR(16) NOT NULL DEFAULT 'normal' COMMENT '问题等级',
  122. source VARCHAR(32) NOT NULL DEFAULT 'agent' COMMENT '来源',
  123. suggestion TEXT NOT NULL COMMENT 'Agent处理建议',
  124. policy_evidence_json JSON NULL COMMENT '政策依据和RAG命中证据',
  125. order_snapshot_json JSON NULL COMMENT '订单和充电记录快照',
  126. status VARCHAR(32) NOT NULL DEFAULT 'created' COMMENT '状态',
  127. created_by_agent TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否Agent创建',
  128. created_by VARCHAR(64) NULL COMMENT '创建人',
  129. assigned_to VARCHAR(64) NULL COMMENT '处理人',
  130. resolve_result TEXT NULL COMMENT '处理结果',
  131. closed_at DATETIME NULL COMMENT '关闭时间',
  132. create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  133. update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  134. deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记',
  135. UNIQUE KEY uk_aftersales_work_order_no (work_order_no),
  136. KEY idx_aftersales_order_no (order_no),
  137. KEY idx_aftersales_trace (trace_id),
  138. KEY idx_aftersales_status_time (status, create_time),
  139. KEY idx_aftersales_issue_type (issue_type, create_time)
  140. ) COMMENT='售后工单表';
  141. INSERT INTO agent_tool_registry
  142. (tool_name, tool_version, description, transport, handler_bean, risk_level, enabled, require_approval, idempotent, input_schema_json, output_schema_json)
  143. VALUES
  144. ('query_charge_order', 'v1', '查询充电订单', 'mcp', 'defaultAgentBusinessToolExecutor', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  145. ('query_charge_session', 'v1', '查询充电记录', 'mcp', 'defaultAgentBusinessToolExecutor', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  146. ('retrieve_aftersales_policy', 'v1', '检索售后政策', 'mcp', 'defaultAgentBusinessToolExecutor', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  147. ('create_aftersales_work_order', 'v1', '创建售后工单', 'mcp', 'defaultAgentBusinessToolExecutor', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  148. ('request_refund', 'v1', '发起退款审批', 'mcp', 'defaultAgentBusinessToolExecutor', 'HIGH', 1, 1, 1, JSON_OBJECT(), JSON_OBJECT()),
  149. ('request_compensation', 'v1', '发起补偿审批', 'mcp', 'defaultAgentBusinessToolExecutor', 'HIGH', 1, 1, 1, JSON_OBJECT(), JSON_OBJECT()),
  150. ('resume_after_approval', 'v1', '审批后恢复冻结动作', 'mcp', 'agentToolOrchestrator', 'HIGH', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  151. ('get_approval_status', 'v1', '查询审批状态', 'mcp', 'agentToolOrchestrator', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT()),
  152. ('write_agent_audit', 'v1', '写入Agent审计日志', 'mcp', 'defaultAgentBusinessToolExecutor', 'LOW', 1, 0, 1, JSON_OBJECT(), JSON_OBJECT())
  153. ON DUPLICATE KEY UPDATE
  154. description = VALUES(description),
  155. handler_bean = VALUES(handler_bean),
  156. risk_level = VALUES(risk_level),
  157. enabled = VALUES(enabled),
  158. require_approval = VALUES(require_approval),
  159. update_time = CURRENT_TIMESTAMP;