package com.infoepoch.pms.agent.platform.chat.domain;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
 * 结构化消息块基类。
 * <p>
 * assistant 消息由一个或多个 block 组成，通过 {@code type} 字段区分具体类型。
 * 存储为 JSON 文本，Jackson 多态反序列化依赖此注解。
 * </p>
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = MarkdownBlock.class, name = "markdown"),
        @JsonSubTypes.Type(value = TraceTimelineBlock.class, name = "trace-timeline")
})
public abstract class ChatMessageBlock {

    /**
     * 块类型标识。
     *
     * @return 类型字符串，如 "markdown"、"trace-timeline"
     */
    public abstract String getType();
}
