51 lines
1.7 KiB
Java
51 lines
1.7 KiB
Java
|
|
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;
|
||
|
|
|
||
|
|
@Component
|
||
|
|
public class EvidenceAppender {
|
||
|
|
|
||
|
|
private static final Logger log = LoggerFactory.getLogger(EvidenceAppender.class);
|
||
|
|
private final TraderEvidenceRepository repository;
|
||
|
|
|
||
|
|
public EvidenceAppender(TraderEvidenceRepository repository) {
|
||
|
|
this.repository = repository;
|
||
|
|
}
|
||
|
|
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
}
|