package entity import ( "ai-agent/workflow/consts/flow" "gitea.redpowerfuture.com/red-future/common/beans" ) // ExecWorkflow 执行工作流 type ExecWorkflow struct { beans.SQLBaseDO `orm:",inherit"` UserId int64 `orm:"user_id" json:"userId" description:"执行用户ID(数字,恢复续跑补 X-User-Info 用;creator 是 userName)"` SessionId string `orm:"session_id" json:"sessionId" description:"会话ID"` FlowId int64 `orm:"flow_id" json:"flowId" description:"工作流ID"` NodeGroupId string `orm:"node_group_id" json:"nodeGroupId" description:"节点组ID"` Duration int64 `orm:"duration" json:"duration" description:"执行时长(秒)"` RequestParams *FlowInfo `orm:"request_params" json:"requestParams" description:"请求参数"` Status flow.FlowExecutionStatus `orm:"status" json:"status" description:"状态:1-运行中,2-成功,3-失败"` TotalTokens int `orm:"total_tokens" json:"totalTokens" description:"总token消耗"` TotalFee float64 `orm:"total_fee" json:"totalFee" description:"总费用"` ActualAmount float64 `orm:"actual_amount" json:"actualAmount" description:"业务扣费(用户钱包实际扣除金额,元;结算/取消回填实收,失败/未结算=0,区别于 total_fee=模型按次费用合计)"` ErrorMessage string `orm:"error_message" json:"errorMessage" description:"错误信息(友好提示)"` Error string `orm:"error" json:"error" description:"错误明细(原始错误)"` Retryable int `orm:"retryable" json:"retryable" description:"是否可重试:0-终局不重试(用户取消/计费门禁拦截),1-可重试(程序报错/关停中断/超时等)"` RetryCount int `orm:"retry_count" json:"retryCount" description:"已重试次数"` ChargeOrderId int64 `orm:"charge_order_id" json:"chargeOrderId" description:"关联计费单ID(shop-user-trade pricing,0=未建单)"` LastHeartbeat int64 `orm:"last_heartbeat" json:"lastHeartbeat" description:"最后心跳时间(毫秒时间戳)"` } type execWorkflowCol struct { beans.SQLBaseCol UserId string SessionId string FlowId string NodeGroupId string Duration string RequestParams string Status string TotalTokens string TotalFee string ActualAmount string ErrorMessage string Error string Retryable string RetryCount string ChargeOrderId string LastHeartbeat string } var ExecWorkflowCol = execWorkflowCol{ SQLBaseCol: beans.DefSQLBaseCol, UserId: "user_id", SessionId: "session_id", FlowId: "flow_id", NodeGroupId: "node_group_id", Duration: "duration", RequestParams: "request_params", Status: "status", TotalTokens: "total_tokens", TotalFee: "total_fee", ActualAmount: "actual_amount", ErrorMessage: "error_message", Error: "error", Retryable: "retryable", RetryCount: "retry_count", ChargeOrderId: "charge_order_id", LastHeartbeat: "last_heartbeat", }