diff --git a/cmd/sdrd/decision_compact.go b/cmd/sdrd/decision_compact.go new file mode 100644 index 0000000..ec0f28d --- /dev/null +++ b/cmd/sdrd/decision_compact.go @@ -0,0 +1,27 @@ +package main + +import "sdr-wideband-suite/internal/pipeline" + +type compactDecision struct { + ID int64 `json:"id"` + Class string `json:"class,omitempty"` + Record bool `json:"record"` + Decode bool `json:"decode"` + Reason string `json:"reason,omitempty"` + Candidate pipeline.Candidate `json:"candidate"` +} + +func compactDecisions(decisions []pipeline.SignalDecision) []compactDecision { + out := make([]compactDecision, 0, len(decisions)) + for _, d := range decisions { + out = append(out, compactDecision{ + ID: d.Candidate.ID, + Class: d.Class, + Record: d.ShouldRecord, + Decode: d.ShouldAutoDecode, + Reason: d.Reason, + Candidate: d.Candidate, + }) + } + return out +} diff --git a/cmd/sdrd/http_handlers.go b/cmd/sdrd/http_handlers.go index 5234599..1f33583 100644 --- a/cmd/sdrd/http_handlers.go +++ b/cmd/sdrd/http_handlers.go @@ -164,6 +164,7 @@ func registerAPIHandlers(mux *http.ServeMux, cfgPath string, cfgManager *runtime "signals": len(snap.refinement.Signals), "decisions": len(snap.refinement.Decisions), "decision_summary": summarizeDecisions(snap.refinement.Decisions), + "decision_items": compactDecisions(snap.refinement.Decisions), "surveillance_level": snap.surveillance.Level, "refinement_level": snap.refinementInput.Level, }