a scoring model
This commit is contained in:
parent
bdfc8d4671
commit
8a46341755
17 changed files with 832 additions and 3 deletions
32
src/Yavsc.Org/ViewModels/Kyc/DeclarationInputModel.cs
Normal file
32
src/Yavsc.Org/ViewModels/Kyc/DeclarationInputModel.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// Yavsc.ViewModels.Kyc/DeclarationInputModel.cs
|
||||
namespace Yavsc.ViewModels.Kyc
|
||||
{
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Yavsc.Models.Kyc;
|
||||
|
||||
public class DeclarationInputModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Email du sujet — transformé en token immédiatement, jamais persisté.
|
||||
/// Obligatoire si ExternalToken absent.
|
||||
/// </summary>
|
||||
[EmailAddress]
|
||||
public string SubjectEmail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Token fourni par un tiers de confiance.
|
||||
/// Prioritaire sur SubjectEmail si présent.
|
||||
/// </summary>
|
||||
public string ExternalToken { get; set; }
|
||||
|
||||
[Required, MinLength(10), MaxLength(2000)]
|
||||
public string Content { get; set; }
|
||||
|
||||
[Required]
|
||||
public DeclarationSentiment Sentiment { get; set; }
|
||||
|
||||
// Validation croisée : l'un ou l'autre obligatoire
|
||||
public bool IsValid => !string.IsNullOrEmpty(SubjectEmail)
|
||||
|| !string.IsNullOrEmpty(ExternalToken);
|
||||
}
|
||||
}
|
||||
17
src/Yavsc.Org/ViewModels/Kyc/ModerationDecisionModel.cs
Normal file
17
src/Yavsc.Org/ViewModels/Kyc/ModerationDecisionModel.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// Yavsc.ViewModels.Kyc/ModerationDecisionModel.cs
|
||||
namespace Yavsc.ViewModels.Kyc
|
||||
{
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
public class ModerationDecisionModel
|
||||
{
|
||||
[Required]
|
||||
public long DeclarationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Entre -10 et +10. Ignoré pour Reject.
|
||||
/// </summary>
|
||||
[Range(-10, 10)]
|
||||
public int ScoreDelta { get; set; }
|
||||
}
|
||||
}
|
||||
40
src/Yavsc.Org/ViewModels/Kyc/ModerationQueueItem.cs
Normal file
40
src/Yavsc.Org/ViewModels/Kyc/ModerationQueueItem.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// Yavsc.ViewModels.Kyc/ModerationQueueItem.cs
|
||||
namespace Yavsc.ViewModels.Kyc
|
||||
{
|
||||
using System.Collections.Generic;
|
||||
using Yavsc.Models.Kyc;
|
||||
|
||||
/// <summary>
|
||||
/// Ce que le modérateur voit dans sa queue.
|
||||
/// Toujours pseudonymisé — jamais d'identité réelle.
|
||||
/// </summary>
|
||||
public class ModerationQueueItem
|
||||
{
|
||||
public long DeclarationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Les 8 premiers caractères du TokenHash + "…"
|
||||
/// Suffisant pour distinguer les sujets en queue,
|
||||
/// insuffisant pour identifier quoi que ce soit.
|
||||
/// </summary>
|
||||
public string SubjectTokenHash { get; set; }
|
||||
|
||||
public string Content { get; set; }
|
||||
|
||||
public DeclarationSentiment Sentiment { get; set; }
|
||||
|
||||
public ModerationStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Descriptions des patterns regex qui ont matché.
|
||||
/// Pas les excerpts — le modérateur voit le texte complet de toute façon.
|
||||
/// </summary>
|
||||
public List<string> FlagDescriptions { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// True si au moins un pattern Blocking a matché —
|
||||
/// permet un affichage prioritaire dans l'UI.
|
||||
/// </summary>
|
||||
public bool HasBlockingFlag { get; set; }
|
||||
}
|
||||
}
|
||||
13
src/Yavsc.Org/ViewModels/Kyc/ScoreQuerModel.cs
Normal file
13
src/Yavsc.Org/ViewModels/Kyc/ScoreQuerModel.cs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// Yavsc.ViewModels.Kyc/ScoreQueryModel.cs
|
||||
namespace Yavsc.ViewModels.Kyc
|
||||
{
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
public class ScoreQueryModel
|
||||
{
|
||||
[EmailAddress]
|
||||
public string SubjectEmail { get; set; }
|
||||
|
||||
public string ExternalToken { get; set; }
|
||||
}
|
||||
}
|
||||
16
src/Yavsc.Org/ViewModels/Kyc/TrustScoreViewModel.cs
Normal file
16
src/Yavsc.Org/ViewModels/Kyc/TrustScoreViewModel.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// Yavsc.ViewModels.Kyc/TrustScoreView.cs
|
||||
namespace Yavsc.ViewModels.Kyc
|
||||
{
|
||||
/// <summary>
|
||||
/// Ce que le CONSULTANT voit. Jamais d'identité, jamais de détail de déclaration.
|
||||
/// </summary>
|
||||
public class TrustScoreView
|
||||
{
|
||||
public int Score { get; set; } // ex: 0–100
|
||||
public string Category { get; set; } // "Fiable" / "Prudence" / "Risque"
|
||||
public int DeclarationCount { get; set; } // combien de déclarations agrégées
|
||||
public DateTime LastUpdated { get; set; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue