ConceptAppraisalService is the only appraisal writer; tallies are derived from rows. VoterIdentity.For decides voter key and class; NetworkPrefix is the only prefix computation (HMAC tag). NetworkTagSecret is required in production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 lines
1,010 B
C#
50 lines
1,010 B
C#
namespace Bifrost.Web.Domain;
|
|
|
|
public enum ConceptStance
|
|
{
|
|
Up,
|
|
Down
|
|
}
|
|
|
|
public enum VoterClass
|
|
{
|
|
Anonymous,
|
|
Account,
|
|
Member
|
|
}
|
|
|
|
public sealed class ConceptSubject
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
|
|
public string Collection { get; set; } = string.Empty;
|
|
|
|
public string Key { get; set; } = string.Empty;
|
|
|
|
public string Title { get; set; } = string.Empty;
|
|
|
|
public DateTimeOffset RegisteredAtUtc { get; set; }
|
|
|
|
public DateTimeOffset? RetiredAtUtc { get; set; }
|
|
}
|
|
|
|
public sealed class ConceptAppraisal
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
|
|
public Guid SubjectId { get; set; }
|
|
|
|
public string VoterKey { get; set; } = string.Empty;
|
|
|
|
public ConceptStance Stance { get; set; }
|
|
|
|
public VoterClass VoterClass { get; set; }
|
|
|
|
public Guid? UserAccountId { get; set; }
|
|
|
|
public string NetworkTag { get; set; } = string.Empty;
|
|
|
|
public DateTimeOffset CastAtUtc { get; set; }
|
|
|
|
public ConceptSubject? Subject { get; set; }
|
|
}
|