// Yavsc.Models.Kyc/TrustToken.cs
namespace Yavsc.Models.Kyc
{
using System;
using System.ComponentModel.DataAnnotations;
///
/// Token opaque représentant une entité sans l'identifier.
/// Généré soit par un tiers de confiance (référence externe),
/// soit par hash d'un e-mail confirmé (fallback interne).
/// Jamais réversible côté consultant.
///
public class TrustToken
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
///
/// Token fourni par le tiers de confiance, OU
/// HMAC-SHA256(email_confirmé, clé_secrète_serveur).
/// Stocké tel quel — pas l'email, pas l'identité.
///
[Required, MaxLength(128)]
public string TokenHash { get; set; }
///
/// Source du token : "trusted_party" | "confirmed_email"
///
[Required, MaxLength(32)]
public string TokenSource { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
///
/// Score de confiance agrégé, calculé par la modération.
/// Null si jamais évalué.
///
public int? TrustScore { get; set; }
public virtual ICollection Declarations { get; set; }
}
}