using System.Text.Json;
namespace GB5Shared.GEF;
///
/// Canonical GEF (Guided Execution Framework) input — the situation being evaluated. Built by the
/// calling module (SalesMind/Marketing/etc.) and passed to ,
/// which maps it onto a GB5Shared.DTO.Qualifier.QualifierExecutionContext internally so GEF
/// reuses the existing Qualifier DAG rule engine rather than inventing a new one.
///
public class ExecutionContextDTO
{
/// Owning functional domain, e.g. "SALESMIND", "MARKETING".
public string Domain { get; set; } = string.Empty;
/// Entity type code — matches MQUALIFIERENTITY.ENTITYCODE, e.g. "SALESMIND_DEAL".
public string EntityCode { get; set; } = string.Empty;
/// Primary key of the entity being evaluated.
public int EntityId { get; set; }
/// Execution stage — tinyint, matches MQUALIFIERENTITY.STAGE.
public byte Stage { get; set; }
/// Role of the actor requesting guidance (e.g. "SalesRep", "Marketer").
public string ActorRole { get; set; } = string.Empty;
/// Optional AI/model identifier when guidance is requested on behalf of an AI-assisted flow.
public string? ModelId { get; set; }
///
/// Source facts to evaluate — same shape QualifierExecutionContext.Document expects.
/// Qualifier rule conditions read field values from this document.
///
public JsonDocument? Document { get; set; }
}