Constructor SpamClassificationHistoryEntry
- Namespace
- MailFathom.Application.Spam.History
- Assembly
- MailFathom.Application.dll
SpamClassificationHistoryEntry(StoredEmailId, MailFolderAlias, SpamVerdict, SpamClassificationStage, SpamAssessment?, string?, SpamClassificationProfile, IReadOnlyList<string>, DateTimeOffset, IReadOnlyList<SpamClassificationRequestedMutation>)
What classification concluded about one message, as an operator reads it back afterwards.
public SpamClassificationHistoryEntry(StoredEmailId EmailId, MailFolderAlias FolderAlias, SpamVerdict Verdict, SpamClassificationStage DecidedBy, SpamAssessment? Assessment, string? CorpusRevision, SpamClassificationProfile Profile, IReadOnlyList<string> SignalNames, DateTimeOffset EvaluatedAt, IReadOnlyList<SpamClassificationRequestedMutation> RequestedMutations)
Parameters
EmailIdStoredEmailIdThe stored occurrence the verdict is about.
FolderAliasMailFolderAliasMailFathom's own name for the folder the occurrence is in.
VerdictSpamVerdictWhat was concluded.
DecidedBySpamClassificationStageWhich stage reached the verdict.
AssessmentSpamAssessmentThe score and the threshold it was judged against, or null when no stage produced a number.
CorpusRevisionstringThe scanner rule corpus the deciding stage ran under, or null when it has none.
ProfileSpamClassificationProfileThe settings the verdict was reached under, or the unspecified value for a record that names none.
SignalNamesIReadOnlyList<string>The names of the facts the verdict rests on, in the order the stages produced them.
EvaluatedAtDateTimeOffsetWhen the classification was evaluated.
RequestedMutationsIReadOnlyList<SpamClassificationRequestedMutation>The changes the verdict asked the mailbox for, which is empty where it asked for none.
Remarks
It is a reading of the classification record rather than a second copy of one. There is no per-run history table behind this: a classification is what is believed about a message now, so the run that reached it is recoverable from the instant and the profile the record already names, and inventing a row per run per message would duplicate the verdict in order to record it twice.
The signals appear by name and never by value. A name is a method from RFC 8601, a header field, a folder alias, or a scanner rule; the observation beside it is text a mail server wrote and can carry a sending domain, which is exactly the second copy of the mailbox a record read back over an administrative endpoint must not become.
A requested change is named and pointed at rather than described. What became of it — attempted, converged, failed, given up on — is the mutation trail's own record with its own retention, and restating any of it here would leave two answers to one question.