package com.agent.management.model.entity;

import lombok.Data;

import java.time.LocalDateTime;

/**
 * Hermes Agent 响应错误嗅探模式。
 *
 * <p>Hermes Bridge（Python）在底层 LLM 调用失败时（HTTP 429 / 鉴权失败 / 配额耗尽等），
 * 会把错误描述作为 {@code final_response} 字符串返回。Java 端 {@code HermesBridgeClient}
 * 通过本模式列表对 {@code finalText} 做子串匹配（大小写不敏感），命中即视为业务失败，
 * 抛 {@code HermesErrorResponseException}，由 {@code HermesAgentExecutor} /
 * {@code HermesSmartActionExecutor} 转化为 {@code NodeExecutionResult.failed}。</p>
 *
 * <p>匹配规则：{@code finalText.toLowerCase().contains(pattern.toLowerCase())}。
 * 简单稳定，避免正则转义陷阱；如需更复杂匹配未来可在 pattern 增加前缀区分。</p>
 */
@Data
public class HermesErrorPattern {

    private Long id;

    /** 显示名称（如 "LLM 429 限流"），用于前端展示与日志回显 */
    private String name;

    /** 匹配文本（子串、大小写不敏感） */
    private String pattern;

    /** 是否启用 */
    private Boolean enabled = true;

    /** 内置标记：true 表示系统内置，前端禁止删除（允许禁用与编辑） */
    private Boolean isBuiltIn = false;

    /** 可选说明（如触发场景、影响范围） */
    private String description;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;

    public void onCreate() {
        createdAt = LocalDateTime.now();
        updatedAt = LocalDateTime.now();
    }

    public void onUpdate() {
        updatedAt = LocalDateTime.now();
    }
}
