package com.superbiz.agent.domain.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * 会话上下文数据类 * 存储在 Redis 中的会话数据 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class SessionContext implements Serializable { private static final long serialVersionUID = 1L; /** * 会话ID */ private String sessionId; /** * 用户ID */ private String userId; /** * 业务ID(订单号/请求ID等) */ private String businessId; /** * 链路追踪ID */ private String traceId; /** * 会话状态(ACTIVE/COMPLETED/EXPIRED) */ private String status; /** * 工具调用历史 */ @Builder.Default private List toolCalls = new ArrayList<>(); /** * 会话创建时间 */ private LocalDateTime createdAt; /** * 最后活跃时间 */ private LocalDateTime lastActiveAt; /** * 会话过期时间(秒) */ private Long ttl; /** * 添加工具调用记录 */ public void addToolCall(ToolCall toolCall) { if (this.toolCalls == null) { this.toolCalls = new ArrayList<>(); } this.toolCalls.add(toolCall); this.lastActiveAt = LocalDateTime.now(); } /** * 更新最后活跃时间 */ public void updateLastActiveTime() { this.lastActiveAt = LocalDateTime.now(); } }