package com.yolo.keyboard.dal.dataobject.usercalllog;

import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;

/**
 * 用户每次调用日志（用于记录token、模型、耗时、成功率等） DO
 *
 * @author Ziin
 */
@TableName("keyboard_user_call_log")
@KeySequence("keyboard_user_call_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardUserCallLogDO{

    /**
     * 主键 id
     */
    @TableId
    private Long id;
    /**
     * 用户ID
     */
    private Long userId;
    /**
     * 幂等请求ID，避免重试导致重复记录
     */
    private String requestId;
    /**
     * 调用功能来源
     */
    private String feature;
    /**
     * 调用的模型名称
     */
    private String model;
    /**
     * 输入token数
     */
    private Integer inputTokens;
    /**
     * 输出token数
     */
    private Integer outputTokens;
    /**
     * 总token数（input+output）
     */
    private Integer totalTokens;
    /**
     * 调用是否成功
     */
    private Boolean success;
    /**
     * 调用耗时（毫秒）
     */
    private Integer latencyMs;
    /**
     * 失败错误码（可空）
     */
    private String errorCode;
    /**
     * 调用记录创建时间
     */
    private LocalDateTime createdAt;
    /**
     * 生成 id
     */
    private String genId;


}