Skip to content
Merged

Dev #2702

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ public interface IAIService
Task<ApplicationScoringResponse> GenerateApplicationScoringAsync(ApplicationScoringRequest request, CancellationToken cancellationToken = default);
Task<FormMappingResponse> GenerateFormMappingAsync(FormMappingRequest request, CancellationToken cancellationToken = default);
Task<FormWorksheetResponse> GenerateFormWorksheetAsync(FormWorksheetRequest request, CancellationToken cancellationToken = default);
Task<FormScoresheetResponse> GenerateFormScoresheetAsync(FormScoresheetRequest request, CancellationToken cancellationToken = default);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ public interface IAIGenerationPrerequisiteValidator
Task EnsureFormMappingAvailableAsync(Guid applicationFormVersionId);

Task EnsureFormWorksheetAvailableAsync(Guid applicationFormVersionId);

Task EnsureFormScoresheetAvailableAsync(Guid applicationFormVersionId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Unity.AI.Requests;

public class FormScoresheetRequest
{
[JsonPropertyName("data")]
public JsonElement Data { get; set; }

[JsonPropertyName("promptVersion")]
public string? PromptVersion { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace Unity.AI.Responses;

public class FormScoresheetResponse
{
public string Scoresheet { get; set; } = string.Empty;

[JsonPropertyName("title")]
public string Title { get; set; } = string.Empty;

[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;

[JsonPropertyName("version")]
public uint Version { get; set; } = 1;

[JsonPropertyName("order")]
public uint Order { get; set; }

[JsonPropertyName("published")]
public bool Published { get; set; }

[JsonPropertyName("reportColumns")]
public string ReportColumns { get; set; } = string.Empty;

[JsonPropertyName("reportKeys")]
public string ReportKeys { get; set; } = string.Empty;

[JsonPropertyName("reportViewName")]
public string ReportViewName { get; set; } = string.Empty;

[JsonPropertyName("sections")]
public List<FormScoresheetSectionResponse> Sections { get; set; } = [];
}

public class FormScoresheetSectionResponse
{
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;

[JsonPropertyName("order")]
public uint Order { get; set; }

[JsonPropertyName("fields")]
public List<FormScoresheetFieldResponse> Fields { get; set; } = [];
}

public class FormScoresheetFieldResponse
{
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;

[JsonPropertyName("label")]
public string Label { get; set; } = string.Empty;

[JsonPropertyName("description")]
public string? Description { get; set; }

[JsonPropertyName("order")]
public uint Order { get; set; }

[JsonPropertyName("type")]
public int Type { get; set; }

[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;

[JsonPropertyName("definition")]
public string? Definition { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ public interface IAIGenerationAppService : IApplicationService

Task GenerateFormWorksheetAsync(Guid applicationId, Guid applicationFormVersionId, string? promptVersion = null);

Task GenerateFormScoresheetAsync(Guid applicationId, Guid applicationFormVersionId, string? promptVersion = null);

Task<AIGenerationStatusDto> GetStatusAsync(Guid applicationId, string operationType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,16 @@ public override void Define(IPermissionDefinitionContext context)
L("Permission:AI.GenerateFormWorksheet"))
.RequireFeatures("Unity.AI.FormWorksheet");

var viewFormScoresheet = aiPermissionsGroup.AddPermission(
AIPermissions.Analysis.ViewFormScoresheet,
L("Permission:AI.ViewFormScoresheet"))
.RequireFeatures("Unity.AI.FormScoresheet");

viewFormScoresheet.AddChild(
AIPermissions.Analysis.GenerateFormScoresheet,
L("Permission:AI.GenerateFormScoresheet"))
.RequireFeatures("Unity.AI.FormScoresheet");

var settingManagement = context.GetGroup(SettingManagementPermissions.GroupName);
var configureAI = settingManagement.AddPermission(
AIPermissions.Configuration.ConfigureAI,
Expand All @@ -84,7 +94,8 @@ public override void Define(IPermissionDefinitionContext context)
"Unity.AI.AttachmentSummaries",
"Unity.AI.ApplicationAnalysis",
"Unity.AI.FormMapping",
"Unity.AI.FormWorksheet"));
"Unity.AI.FormWorksheet",
"Unity.AI.FormScoresheet"));
}

private static LocalizableString L(string name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,18 @@ public static class Reporting
public static class Analysis
{
public const string ViewApplicationAnalysis = GroupName + ".ViewApplicationAnalysis";
public const string ViewAttachmentSummary = GroupName + ".ViewAttachmentSummary";
public const string ViewScoringResult = GroupName + ".ViewScoringResult";
public const string ViewFormMapping = GroupName + ".ViewFormMapping";
public const string ViewFormWorksheet = GroupName + ".ViewFormWorksheet";
public const string ViewAttachmentSummary = GroupName + ".ViewAttachmentSummary";
public const string ViewScoringResult = GroupName + ".ViewScoringResult";
public const string ViewFormMapping = GroupName + ".ViewFormMapping";
public const string ViewFormWorksheet = GroupName + ".ViewFormWorksheet";
public const string ViewFormScoresheet = GroupName + ".ViewFormScoresheet";

public const string GenerateApplicationAnalysis = GroupName + ".GenerateApplicationAnalysis";
public const string GenerateAttachmentSummaries = GroupName + ".GenerateAttachmentSummaries";
public const string GenerateScoring = GroupName + ".GenerateScoring";
public const string GenerateFormMapping = GroupName + ".GenerateFormMapping";
public const string GenerateFormWorksheet = GroupName + ".GenerateFormWorksheet";
public const string GenerateScoring = GroupName + ".GenerateScoring";
public const string GenerateFormMapping = GroupName + ".GenerateFormMapping";
public const string GenerateFormWorksheet = GroupName + ".GenerateFormWorksheet";
public const string GenerateFormScoresheet = GroupName + ".GenerateFormScoresheet";
}

public static class ApplicationAnalysis
Expand Down Expand Up @@ -57,6 +59,12 @@ public static class FormWorksheet
public const string Generate = Analysis.GenerateFormWorksheet;
}

public static class FormScoresheet
{
public const string View = Analysis.ViewFormScoresheet;
public const string Generate = Analysis.GenerateFormScoresheet;
}

public static class Configuration
{
public const string ConfigureAI = "SettingManagement.ConfigureAI";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class AIExecutionModeResolver(IConfiguration configuration) : ITransientD
public const string ApplicationScoringOperation = AIPromptTypes.ApplicationScoring;
public const string FormMappingOperation = AIPromptTypes.FormMapping;
public const string FormWorksheetOperation = AIPromptTypes.FormWorksheet;
public const string FormScoresheetOperation = AIPromptTypes.FormScoresheet;

public AIExecutionMode ResolveMode(string operationName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,13 @@ public async Task EnsureFormWorksheetAvailableAsync(Guid applicationFormVersionI
throw new UserFriendlyException(localizer[AILocalizationKeys.FormWorksheetRequiresFormVersion]);
}
}

public async Task EnsureFormScoresheetAvailableAsync(Guid applicationFormVersionId)
{
var formVersion = await applicationFormVersionRepository.FindAsync(applicationFormVersionId);
if (formVersion == null)
{
throw new UserFriendlyException(localizer[AILocalizationKeys.FormScoresheetRequiresFormVersion]);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Threading;
using System.Threading.Tasks;
using Unity.AI.Requests;
using Unity.AI.Responses;

namespace Unity.AI.Operations;

public interface IFormScoresheetService
{
Task<FormScoresheetResponse> GenerateFormScoresheetAsync(FormScoresheetRequest request, CancellationToken cancellationToken = default);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ public static class AIPromptTypes
public const string ApplicationScoring = "ApplicationScoring";
public const string FormMapping = "FormMapping";
public const string FormWorksheet = "FormWorksheet";
public const string FormScoresheet = "FormScoresheet";
}
Loading
Loading