package com.gzzm.lobster.tool.mcp;

import net.cyan.thunwind.annotation.ColumnDescription;
import net.cyan.thunwind.annotation.Entity;
import net.cyan.thunwind.annotation.Index;

import java.util.Date;

/**
 * MCP 远端调用日志。
 */
@Entity(table = "AI_MCP_CALL_LOG", keys = "callId")
public class McpCallLog {

    @ColumnDescription(type = "varchar(40)")
    private String callId;

    @Index
    @ColumnDescription(type = "varchar(60)")
    private String serverId;

    @ColumnDescription(type = "varchar(220)")
    private String localToolName;

    @ColumnDescription(type = "varchar(160)")
    private String remoteToolName;

    @ColumnDescription(type = "varchar(40)")
    private String threadId;

    @Index
    @ColumnDescription(type = "varchar(40)")
    private String runId;

    @ColumnDescription(type = "varchar(80)")
    private String toolCallId;

    @ColumnDescription(type = "varchar(120)")
    private String requestId;

    @ColumnDescription(type = "varchar(40)")
    private String userId;

    @ColumnDescription(type = "varchar(40)")
    private String orgId;

    @ColumnDescription(type = "varchar(40)")
    private String status;

    @ColumnDescription(type = "number(12)")
    private Long durationMs;

    @ColumnDescription(type = "varchar(2000)")
    private String requestSummary;

    @ColumnDescription(type = "varchar(2000)")
    private String responseSummary;

    @ColumnDescription(type = "varchar(500)")
    private String requestJsonRef;

    @ColumnDescription(type = "varchar(500)")
    private String responseJsonRef;

    @ColumnDescription(type = "varchar(80)")
    private String errorCode;

    @ColumnDescription(type = "varchar(1000)")
    private String errorMessage;

    private Date createTime;

    public String getCallId() { return callId; }
    public void setCallId(String callId) { this.callId = callId; }
    public String getServerId() { return serverId; }
    public void setServerId(String serverId) { this.serverId = serverId; }
    public String getLocalToolName() { return localToolName; }
    public void setLocalToolName(String localToolName) { this.localToolName = localToolName; }
    public String getRemoteToolName() { return remoteToolName; }
    public void setRemoteToolName(String remoteToolName) { this.remoteToolName = remoteToolName; }
    public String getThreadId() { return threadId; }
    public void setThreadId(String threadId) { this.threadId = threadId; }
    public String getRunId() { return runId; }
    public void setRunId(String runId) { this.runId = runId; }
    public String getToolCallId() { return toolCallId; }
    public void setToolCallId(String toolCallId) { this.toolCallId = toolCallId; }
    public String getRequestId() { return requestId; }
    public void setRequestId(String requestId) { this.requestId = requestId; }
    public String getUserId() { return userId; }
    public void setUserId(String userId) { this.userId = userId; }
    public String getOrgId() { return orgId; }
    public void setOrgId(String orgId) { this.orgId = orgId; }
    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }
    public Long getDurationMs() { return durationMs; }
    public void setDurationMs(Long durationMs) { this.durationMs = durationMs; }
    public String getRequestSummary() { return requestSummary; }
    public void setRequestSummary(String requestSummary) { this.requestSummary = requestSummary; }
    public String getResponseSummary() { return responseSummary; }
    public void setResponseSummary(String responseSummary) { this.responseSummary = responseSummary; }
    public String getRequestJsonRef() { return requestJsonRef; }
    public void setRequestJsonRef(String requestJsonRef) { this.requestJsonRef = requestJsonRef; }
    public String getResponseJsonRef() { return responseJsonRef; }
    public void setResponseJsonRef(String responseJsonRef) { this.responseJsonRef = responseJsonRef; }
    public String getErrorCode() { return errorCode; }
    public void setErrorCode(String errorCode) { this.errorCode = errorCode; }
    public String getErrorMessage() { return errorMessage; }
    public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
    public Date getCreateTime() { return createTime; }
    public void setCreateTime(Date createTime) { this.createTime = createTime; }
}
