FruitBankHybridApp/FruitBank.Common/Entities/ProductTextMapping.cs

27 lines
1.5 KiB
C#

using AyCode.Core.Serializers.Attributes;
using AyCode.Core.Serializers.Toons;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
namespace FruitBank.Common.Entities;
[AcBinarySerializable(false, true, false, true, false, false)]
[Table(Name = FruitBankConstClient.ProductTextMappingDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ProductTextMappingDbTableName)]
[ToonDescription("Historical record of admin product selections from free-text inputs", Purpose = "Every time an admin approves an OrderDraftItem and selects a product, a record is written here. Used to weight future AI suggestions: if the same raw text recently resolved to a given product, that product ranks first in SuggestedProductIds.")]
public sealed class ProductTextMapping : MgEntityBase
{
[ToonDescription(Purpose = "The raw text as it came from the message (e.g. 'piros kalif'). Stored lowercase-trimmed for consistent matching.")]
public string RawText { get; set; } = string.Empty;
[ToonDescription(Purpose = "FK to the NopCommerce Product the admin selected for this raw text.")]
public int ResolvedProductId { get; set; }
[ToonDescription(Purpose = "Whether the selection was in a preorder context (true) or direct order context (false). Allows separate weighting per context.")]
public bool IsPreorder { get; set; }
[ToonDescription(Purpose = "The admin who made this selection.")]
public int SelectedByAdminId { get; set; }
public DateTime CreatedOnUtc { get; set; }
}