LlmCallDetail.java

package com.taxonomy.dto;

import java.util.Map;

/**
 * Captures details of a single LLM API call: the prompt sent, the raw text response,
 * parsed scores, reasons per node, provider name, call duration, and any discrepancy.
 */
public class LlmCallDetail {

    private Map<String, Integer> scores;
    private Map<String, String> reasons;
    private String prompt;
    private String rawResponse;
    private String provider;
    private long durationMs;
    private String error;
    private TaxonomyDiscrepancy discrepancy;

    public LlmCallDetail() {}

    public Map<String, Integer> getScores() { return scores; }
    public void setScores(Map<String, Integer> scores) { this.scores = scores; }

    public Map<String, String> getReasons() { return reasons; }
    public void setReasons(Map<String, String> reasons) { this.reasons = reasons; }

    public String getPrompt() { return prompt; }
    public void setPrompt(String prompt) { this.prompt = prompt; }

    public String getRawResponse() { return rawResponse; }
    public void setRawResponse(String rawResponse) { this.rawResponse = rawResponse; }

    public String getProvider() { return provider; }
    public void setProvider(String provider) { this.provider = provider; }

    public long getDurationMs() { return durationMs; }
    public void setDurationMs(long durationMs) { this.durationMs = durationMs; }

    public String getError() { return error; }
    public void setError(String error) { this.error = error; }

    public TaxonomyDiscrepancy getDiscrepancy() { return discrepancy; }
    public void setDiscrepancy(TaxonomyDiscrepancy discrepancy) { this.discrepancy = discrepancy; }
}