// Model envelope persists trained model to JSON. Contains Vectorizer for IDF values, // OrderedVocab for feature ordering, and Weights for logistic regression. // To score: recreate TFIDFVectorizer, transform, then PredictScore. package core import ( "time" ) // ModelEnvelope - complete trained model for scoring articles type ModelEnvelope struct { Algorithm string `json:"algorithm"` Impl string `json:"impl"` Version string `json:"version"` CreatedAt time.Time `json:"created_at"` Meta map[string]any `json:"meta"` Vectorizer map[string]float64 `json:"vectorizer"` OrderedVocab []string `json:"ordered_vocab"` Weights []float64 `json:"weights"` }