Rewrite trader service for V4 P0
This commit is contained in:
@@ -1,50 +1,31 @@
|
||||
package com.quantai.trader.evidence;
|
||||
|
||||
import com.quantai.trader.domain.StageDecision;
|
||||
import com.quantai.trader.domain.TraderDecisionCycle;
|
||||
import com.quantai.trader.domain.TraderEvidence;
|
||||
import com.quantai.trader.persistence.TraderEvidenceRepository;
|
||||
import com.quantai.trader.util.Ids;
|
||||
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 TraderEvidenceRepository repository;
|
||||
private final CopyOnWriteArrayList<TraderEvidence> evidence = new CopyOnWriteArrayList<>();
|
||||
|
||||
public EvidenceAppender(TraderEvidenceRepository repository) {
|
||||
this.repository = repository;
|
||||
public TraderEvidence append(String runId, String cycleId, String stage, boolean pass, String reason, String blocker, Map<String, Object> 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 TraderEvidence append(TraderDecisionCycle cycle, String stage, StageDecision decision) {
|
||||
TraderEvidence evidence = new TraderEvidence(
|
||||
cycle.runId(),
|
||||
cycle.cycleId(),
|
||||
Ids.evidenceId(cycle, stage),
|
||||
stage,
|
||||
decision.pass(),
|
||||
decision.reason(),
|
||||
decision.blocker(),
|
||||
cycle.cycleTime(),
|
||||
decision.details()
|
||||
);
|
||||
repository.insert(evidence);
|
||||
log.info(
|
||||
"event=trader.evidence runId={} cycleId={} symbol={} playbookId={} playbookVersion={} state={} stage={} pass={} reason={} blocker={}",
|
||||
cycle.runId(),
|
||||
cycle.cycleId(),
|
||||
cycle.symbol(),
|
||||
cycle.playbookId(),
|
||||
cycle.playbookVersion(),
|
||||
cycle.state(),
|
||||
stage,
|
||||
decision.pass(),
|
||||
decision.reason(),
|
||||
decision.blocker()
|
||||
);
|
||||
return evidence;
|
||||
public List<TraderEvidence> all() {
|
||||
return new ArrayList<>(evidence);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user