Persist trader V4 P0 decision trace

This commit is contained in:
Codex
2026-06-26 22:01:25 +08:00
parent 5d210053d0
commit 6bbedda97d
17 changed files with 437 additions and 96 deletions
@@ -3,6 +3,8 @@ package com.quantai.trader.evidence;
import com.quantai.trader.domain.TraderEvidence;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
@@ -10,7 +12,8 @@ import static org.assertj.core.api.Assertions.assertThat;
class EvidenceAppenderTest {
@Test
void appendsEvidenceWithStageReasonAndDetails() {
EvidenceAppender appender = new EvidenceAppender();
RecordingEvidenceRepository repository = new RecordingEvidenceRepository();
EvidenceAppender appender = new EvidenceAppender(repository);
TraderEvidence item = appender.append("run-1", "cycle-1", "PM_DECISION", true,
"OPEN_LONG_PM_PASS", null, Map.of("action", "OPEN_LONG"));
@@ -18,6 +21,19 @@ class EvidenceAppenderTest {
assertThat(item.evidenceId()).isEqualTo("evidence_cycle-1_0");
assertThat(item.pass()).isTrue();
assertThat(item.detailsJson()).containsEntry("action", "OPEN_LONG");
assertThat(appender.all()).containsExactly(item);
assertThat(repository.items()).containsExactly(item);
}
private static final class RecordingEvidenceRepository implements TraderEvidenceRepository {
private final List<TraderEvidence> items = new ArrayList<>();
@Override
public void insert(TraderEvidence evidence) {
items.add(evidence);
}
List<TraderEvidence> items() {
return items;
}
}
}