AnalyzeNodeChildrenResult.java

package com.taxonomy.analysis.usecase;

import java.util.Map;

/** Stable response contract for one interactive child-node evaluation. */
public record AnalyzeNodeChildrenResult(
        Map<String, Integer> scores,
        Map<String, String> reasons,
        String prompt,
        String rawResponse,
        String provider,
        long durationMs,
        String error) {

    public AnalyzeNodeChildrenResult {
        scores = scores == null ? Map.of() : Map.copyOf(scores);
        reasons = reasons == null ? Map.of() : Map.copyOf(reasons);
        prompt = prompt == null ? "" : prompt;
        rawResponse = rawResponse == null ? "" : rawResponse;
        provider = provider == null ? "" : provider;
    }

    public static AnalyzeNodeChildrenResult empty() {
        return new AnalyzeNodeChildrenResult(
                Map.of(), Map.of(), "", "", "", 0L, null);
    }
}