namespace AIStudio.Assistants.BeyondFactsLab; /// /// A preparation in the BeyondFacts Lab: one event, for which a person works through the steps of the lab. /// /// /// The lab stores it as project.json in the folder of the preparation. Everything else the preparation /// holds lies in files beside it, which the lab finds by the ID of the preparation, never by a stored path. /// public sealed class BflProject { /// /// The version of the stored form this version of AI Studio writes. /// /// /// A preparation of a newer form is listed but neither opened nor written, so that an older version of /// AI Studio cannot lose what a newer one stored. Raise it with every field a released version does not /// know yet: that version refuses fields it does not know, and only the higher number tells the person /// that a newer version stored the preparation. /// public const int CURRENT_SCHEMA_VERSION = 1; /// /// Gets or sets the version of the stored form. /// public int SchemaVersion { get; set; } = CURRENT_SCHEMA_VERSION; /// /// Gets or sets the ID of the preparation, which is also the name of its folder. /// public Guid ProjectId { get; set; } /// /// Gets or sets the name the person gave the preparation. /// public string Name { get; set; } = string.Empty; /// /// Gets or sets when the preparation was created. /// public DateTimeOffset CreatedAtUtc { get; set; } /// /// Gets or sets when the preparation was changed last. /// public DateTimeOffset ModifiedAtUtc { get; set; } /// /// Gets or sets when the person marked the event as having taken place, or null while it has not. /// public DateTimeOffset? HappenedAtUtc { get; set; } /// /// Gets or sets the step the person looked at last, where the lab opens the preparation again. /// public BflStep CurrentStep { get; set; } = BflStep.FRAMEWORK; /// /// Gets or sets the ID of the provider the person chose for the chats of the preparation, or an empty string while /// they chose none. /// /// /// The lab checks the provider again whenever it opens the preparation: an organization may have prohibited it /// meanwhile, or the person may have lowered its confidence. /// public string ProviderId { get; set; } = string.Empty; }