package com.quantai.trader.evidence; import com.quantai.trader.domain.TraderEvidence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; @Component public class EvidenceAppender { private static final Logger log = LoggerFactory.getLogger(EvidenceAppender.class); private final CopyOnWriteArrayList evidence = new CopyOnWriteArrayList<>(); public TraderEvidence append(String runId, String cycleId, String stage, boolean pass, String reason, String blocker, Map details) { TraderEvidence item = new TraderEvidence("evidence_" + cycleId + "_" + evidence.size(), runId, cycleId, stage, pass, reason, blocker, Instant.now(), details); evidence.add(item); log.info("event=trader.evidence.appended runId={} cycleId={} stage={} pass={} reason={} blocker={}", runId, cycleId, stage, pass, reason, blocker); return item; } public List all() { return new ArrayList<>(evidence); } }