Skip to content
Merged

Dev #2302

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
804cda8
[AB#32424] Add Applicant Portal Settings page and functionality
plavoie-BC Apr 8, 2026
816c375
Merge remote-tracking branch 'origin/dev' into feature/AB#32424-exter…
plavoie-BC Apr 13, 2026
9b06a14
[AB#32424] Optimize external status update and validation
plavoie-BC Apr 13, 2026
103af54
[AB#32424] Optimize external status update
plavoie-BC Apr 13, 2026
013fecb
[AB#32424] External Status - Add reset functionality and validation m…
plavoie-BC Apr 13, 2026
62e727f
[AB#32424] SonarQube Clean-up
plavoie-BC Apr 13, 2026
47a8aa6
AB#32398 add safe datetime functions for worksheet report config
AndreGAot Apr 13, 2026
9ed187e
AB#32597 - Removed setting constant and definition.
hasanpour Apr 13, 2026
b2921c0
AB#32597 - Removed DTOs and update dettings UI
hasanpour Apr 13, 2026
0b7069c
AB#32613 enable SonarCloud PR code scanning in GitHub actions
DarylTodosichuk Apr 13, 2026
433ffcd
AB#32398 upadte the safetodate functions
AndreGAot Apr 13, 2026
45eaac7
Potential fix for pull request finding
AndreGAot Apr 13, 2026
a958d45
Merge pull request #2283 from bcgov/feature/AB#32613-sonarcloud-githu…
DarylTodosichuk Apr 13, 2026
6ff9fb7
AB#32398 remove the test local passwords from migrator
AndreGAot Apr 13, 2026
c49d013
Merge branch 'bugfix/AB#32398-date-format-report-config-views' of htt…
AndreGAot Apr 13, 2026
9d7406a
AB#32398 undo config change
AndreGAot Apr 13, 2026
e59a52f
AB#31476 - Restructured the permissions
hasanpour Apr 13, 2026
fa65e36
Merge pull request #2277 from bcgov/bugfix/AB#32398-date-format-repor…
AndreGAot Apr 13, 2026
45cd47d
AB#31476 - Added data migration for permission rename
hasanpour Apr 13, 2026
e3a978b
Merge pull request #2281 from bcgov/feature/AB#32597-Remove-Scoring-A…
hasanpour Apr 14, 2026
881d77e
Merge pull request #2284 from bcgov/feature/AB#31476-Permission-group…
hasanpour Apr 14, 2026
4afeecc
AB#32134 add json editor for reporting configuration
AndreGAot Apr 14, 2026
d74f479
AB#9205: Attachment Preview with Mammoth.JS and SheetJS
aurelio-aot Apr 14, 2026
6709bfb
AB#32134 apply codeQL suggestions
AndreGAot Apr 14, 2026
eb61ad2
AB#32134 sonarqube cleanup
AndreGAot Apr 14, 2026
986e50f
AB#32291 - Added backend for new configurations.
hasanpour Apr 14, 2026
1159271
AB#32291 - Added the UI.
hasanpour Apr 14, 2026
5f8956b
AB#32134 more sonarqube cleanup
AndreGAot Apr 14, 2026
4fb85bc
AB#32134 more sonarqube
AndreGAot Apr 14, 2026
78d248f
AB#32134 final sonarqube cleanup
AndreGAot Apr 14, 2026
f81ef27
AB#32291 - Gated automatic intake pipeline
hasanpour Apr 14, 2026
ce32f4d
AB#32291 - Added unit tests.
hasanpour Apr 15, 2026
1e61835
AB#9205: Attachment Preview Using LibreOffice Conversion to PDF
aurelio-aot Apr 15, 2026
e3987ce
AB#32134 feedback updates
AndreGAot Apr 15, 2026
2e08ccd
AB#32134 - address sonarQube warnings
AndreGAot Apr 15, 2026
ec96dd6
Merge pull request #2285 from bcgov/feature/AB#32134-json-edit-report…
AndreGAot Apr 15, 2026
549e9c8
Merge pull request #2288 from bcgov/feature/AB#32291-Tenant-Configura…
hasanpour Apr 15, 2026
d25ba95
AB#32446 - Added backend for the AI tab.
hasanpour Apr 15, 2026
3eaa567
AB#32446 - Added the UI.
hasanpour Apr 15, 2026
653fe6d
AB#9205: Fix styling of CHEFS Attachments Buttons
aurelio-aot Apr 15, 2026
61297c4
[AB#32424] Update Applicant Portal settings terminology and layout
plavoie-BC Apr 15, 2026
f6db7f8
Merge remote-tracking branch 'origin/dev' into feature/AB#32424-exter…
plavoie-BC Apr 15, 2026
48909bc
[AB#32424] Update page display name
plavoie-BC Apr 15, 2026
88ae16e
[AB#32424] Add ID attribute for external status input field
plavoie-BC Apr 15, 2026
9336dc5
AB#32446 - Gated intake pipeline.
hasanpour Apr 15, 2026
678b93b
AB#32660 include more applicant details for portal
AndreGAot Apr 15, 2026
c8cfbd8
AB#32446 - Added unit tests.
hasanpour Apr 15, 2026
066faf2
AB#9205: Potential fix for pull request finding 'CodeQL / Uncontroll…
aurelio-aot Apr 16, 2026
1c5f501
AB#9205: Potential fix for pull request finding 'CodeQL / Log entries…
aurelio-aot Apr 16, 2026
4071f91
AB#9205: Potential fix for pull request finding 'CodeQL / Log entrie…
aurelio-aot Apr 16, 2026
01ba64c
AB#9205: Potential fix for pull request finding 'CodeQL / Log entries…
aurelio-aot Apr 16, 2026
c08863e
AB#9205: Fix sonarqube issues
aurelio-aot Apr 16, 2026
bf80635
AB#32660 update fields for profile org info
AndreGAot Apr 16, 2026
8daa92f
Merge pull request #2293 from bcgov/feature/AB#32446-AI-Form-Configur…
JamesPasta Apr 16, 2026
d64f88a
Merge pull request #2237 from bcgov/feature/AB#32424-external-applica…
JamesPasta Apr 16, 2026
2e0b618
AB#9205: Potential fix for pull request finding - caching result of L…
aurelio-aot Apr 16, 2026
9b23427
codeQL suggestions
AndreGAot Apr 16, 2026
a3886b8
AB#9205: Potential fix for pull request finding by co-pilot
aurelio-aot Apr 16, 2026
abc5726
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
0b6c127
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
6b6a7d4
Merge pull request #2294 from bcgov/feature/AB#32660-update-orginfo-f…
AndreGAot Apr 16, 2026
7ecf7f2
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
48a7509
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
3085bd5
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
42ef086
AB#9205: Potential fix for pull request finding by copilot
aurelio-aot Apr 16, 2026
6c7b81a
AB#9205: Address copilot comments
aurelio-aot Apr 16, 2026
01f1b72
Merge pull request #2292 from bcgov/feature/AB#9205-Attachment-Previe…
aurelio-aot Apr 16, 2026
7f3e8b9
AB#9205: Fix sonarqube issues
aurelio-aot Apr 16, 2026
98f5698
AB#9205: Fix sonarqube issues
aurelio-aot Apr 16, 2026
cbcc97d
Merge pull request #2298 from bcgov/feature/AB#9205-Attachment-Previe…
JamesPasta Apr 16, 2026
397852d
AB#9205: Fix Sonarqube Issues
aurelio-aot Apr 16, 2026
858b9e9
Merge pull request #2299 from bcgov/feature/AB#9205-Attachment-Previe…
JamesPasta Apr 16, 2026
e30b214
AB#9205: Fix OpenShift Errors
aurelio-aot Apr 16, 2026
f926608
Merge pull request #2300 from bcgov/feature/AB#9205-Attachment-Previe…
JamesPasta Apr 16, 2026
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
6 changes: 3 additions & 3 deletions .github/workflows/sonarsource-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ on:
- dev2
- dev
- test
# - main
# pull_request:
# types: [opened, synchronize, reopened]
- main
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:

permissions:
Expand Down
10 changes: 10 additions & 0 deletions applications/Unity.GrantManager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ This is the main grant management application for the Unity platform. It include
- Right click on `Unity.GrantManager.DbMigrator` and click **"Set As Startup Project"**
- `Ctrl + F5` to run without debugging

## Attachment Preview

Office file preview (DOCX, XLSX, PPTX, ODT, ODS, ODP, RTF, CSV) uses **LibreOffice** for server-side PDF conversion. LibreOffice is installed automatically in the Docker image via the Dockerfile — no manual setup is needed for deployed environments (DEV, TEST, PROD).

**Local development (Visual Studio on Windows):**
LibreOffice conversion requires a Linux environment and is not supported when running the app directly on Windows. Clicking "Preview" on an office file will show the message *"LibreOffice is not installed on the server. File preview is unavailable."* This is expected behaviour. Use the **Download** button to open the file locally. To test the full preview feature, run the application via Docker.

**Preview caching:**
The first preview request converts the file and caches the PDF in S3 alongside the original (e.g. `applications/{id}/preview/{filename}.pdf`). Subsequent preview requests serve the cached PDF. The cached PDF is automatically deleted when the original attachment is deleted.

## See Also

- https://docs.abp.io/en/abp/latest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,39 @@ public override void Define(IPermissionDefinitionContext context)
L("Permission:AI.Reporting"))
.RequireFeatures("Unity.AIReporting");

aiPermissionsGroup.AddPermission(
AIPermissions.ApplicationAnalysis.ApplicationAnalysisDefault,
L("Permission:AI.ApplicationAnalysis"))
.RequireFeatures("Unity.AI.ApplicationAnalysis");
var analysisParent = aiPermissionsGroup.AddPermission(
AIPermissions.Analysis.AnalysisDefault,
L("Permission:AI.Analysis"));

aiPermissionsGroup.AddPermission(
AIPermissions.AttachmentSummary.AttachmentSummaryDefault ,
L("Permission:AI.AttachmentSummary"))
.RequireFeatures("Unity.AI.AttachmentSummaries");
analysisParent.AddChild(
AIPermissions.Analysis.ViewApplicationAnalysis,
L("Permission:AI.Analysis.ViewApplicationAnalysis"))
.RequireFeatures("Unity.AI.ApplicationAnalysis");

aiPermissionsGroup.AddPermission(
AIPermissions.ScoringAssistant.ScoringAssistantDefault,
L("Permission:AI.ScoringAssistant"))
.RequireFeatures("Unity.AI.Scoring");
analysisParent.AddChild(
AIPermissions.Analysis.ViewAttachmentSummary,
L("Permission:AI.Analysis.ViewAttachmentSummary"))
.RequireFeatures("Unity.AI.AttachmentSummaries");

analysisParent.AddChild(
AIPermissions.Analysis.ViewScoringResult,
L("Permission:AI.Analysis.ViewScoringResult"))
.RequireFeatures("Unity.AI.Scoring");

analysisParent.AddChild(
AIPermissions.Analysis.GenerateApplicationAnalysis,
L("Permission:AI.Analysis.GenerateApplicationAnalysis"))
.RequireFeatures("Unity.AI.ApplicationAnalysis");

analysisParent.AddChild(
AIPermissions.Analysis.GenerateAttachmentSummaries,
L("Permission:AI.Analysis.GenerateAttachmentSummaries"))
.RequireFeatures("Unity.AI.AttachmentSummaries");

analysisParent.AddChild(
AIPermissions.Analysis.GenerateScoring,
L("Permission:AI.Analysis.GenerateScoring"))
.RequireFeatures("Unity.AI.Scoring");

var settingManagement = context.GetGroup(SettingManagementPermissions.GroupName);
settingManagement.AddPermission(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,17 @@ public static class Reporting
public const string ReportingDefault = GroupName + ".Reporting";
}

public static class ApplicationAnalysis
public static class Analysis
{
public const string ApplicationAnalysisDefault = GroupName + ".ApplicationAnalysis";
}
public const string AnalysisDefault = GroupName + ".Analysis";

public static class AttachmentSummary
{
public const string AttachmentSummaryDefault = GroupName + ".AttachmentSummary";
}
public const string ViewApplicationAnalysis = GroupName + ".Analysis.ViewApplicationAnalysis";
public const string ViewAttachmentSummary = GroupName + ".Analysis.ViewAttachmentSummary";
public const string ViewScoringResult = GroupName + ".Analysis.ViewScoringResult";

public static class ScoringAssistant
{
public const string ScoringAssistantDefault = GroupName + ".ScoringAssistant";
public const string GenerateApplicationAnalysis = GroupName + ".Analysis.GenerateApplicationAnalysis";
public const string GenerateAttachmentSummaries = GroupName + ".Analysis.GenerateAttachmentSummaries";
public const string GenerateScoring = GroupName + ".Analysis.GenerateScoring";
}

public static class Configuration
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Unity.AI.Settings;

public class AITenantConfigurationDto
{
public bool AutomaticGenerationEnabled { get; set; }
public bool ManualGenerationEnabled { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ namespace Unity.AI.Settings;

public interface IAIConfigurationAppService : IApplicationService
{
Task<AIScoringSettingsDto> GetScoringSettingsAsync();
Task UpdateScoringSettingsAsync(UpdateAIScoringSettingsDto input);
Task<AITenantConfigurationDto> GetTenantConfigurationAsync();
Task UpdateTenantConfigurationAsync(UpdateAITenantConfigurationDto input);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Unity.AI.Settings;

public class UpdateAITenantConfigurationDto
{
public bool AutomaticGenerationEnabled { get; set; }
public bool ManualGenerationEnabled { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

namespace Unity.GrantManager.Attachments;

[Authorize(AIPermissions.AttachmentSummary.AttachmentSummaryDefault)]
[Authorize(AIPermissions.Analysis.ViewAttachmentSummary)]
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(AttachmentSummaryAppService), typeof(IAttachmentSummaryAppService))]
public class AttachmentSummaryAppService(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

namespace Unity.GrantManager.GrantApplications;

[Authorize(AIPermissions.ApplicationAnalysis.ApplicationAnalysisDefault)]
[Authorize(AIPermissions.Analysis.ViewApplicationAnalysis)]
public class ApplicationAnalysisAppService(
IApplicationAIGenerationQueue aiGenerationQueue,
IFeatureChecker featureChecker)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

namespace Unity.GrantManager.GrantApplications;

[Authorize(AIPermissions.AttachmentSummary.AttachmentSummaryDefault)]
[Authorize(AIPermissions.ApplicationAnalysis.ApplicationAnalysisDefault)]
[Authorize(AIPermissions.ScoringAssistant.ScoringAssistantDefault)]
[Authorize(AIPermissions.Analysis.ViewAttachmentSummary)]
[Authorize(AIPermissions.Analysis.ViewApplicationAnalysis)]
[Authorize(AIPermissions.Analysis.ViewScoringResult)]
public class ApplicationContentAppService(
IApplicationAIGenerationQueue aiGenerationQueue,
IFeatureChecker featureChecker)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

namespace Unity.GrantManager.GrantApplications;

[Authorize(AIPermissions.ScoringAssistant.ScoringAssistantDefault)]
[Authorize(AIPermissions.Analysis.ViewScoringResult)]
public class ApplicationScoringAppService(
IApplicationAIGenerationQueue aiGenerationQueue,
IFeatureChecker featureChecker)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,38 @@

namespace Unity.AI.Settings;

public class AIConfigurationAppService : AIAppService, IAIConfigurationAppService
public class AIConfigurationAppService(
ISettingProvider settingProvider,
ISettingManager settingManager,
ICurrentTenant currentTenant) : AIAppService, IAIConfigurationAppService
{
private readonly ISettingProvider _settingProvider;
private readonly ISettingManager _settingManager;
private readonly ICurrentTenant _currentTenant;
private readonly ISettingProvider _settingProvider = settingProvider;
private readonly ISettingManager _settingManager = settingManager;
private readonly ICurrentTenant _currentTenant = currentTenant;

public AIConfigurationAppService(
ISettingProvider settingProvider,
ISettingManager settingManager,
ICurrentTenant currentTenant)
public virtual async Task<AITenantConfigurationDto> GetTenantConfigurationAsync()
{
_settingProvider = settingProvider;
_settingManager = settingManager;
_currentTenant = currentTenant;
}

public virtual async Task<AIScoringSettingsDto> GetScoringSettingsAsync()
{
return new AIScoringSettingsDto
return new AITenantConfigurationDto
{
ScoringAssistantEnabled = await _settingProvider.GetAsync<bool>(
AISettings.ScoringAssistantEnabled, defaultValue: false)
AutomaticGenerationEnabled = await _settingProvider.GetAsync<bool>(
AISettings.AutomaticGenerationEnabled, defaultValue: false),
ManualGenerationEnabled = await _settingProvider.GetAsync<bool>(
AISettings.ManualGenerationEnabled, defaultValue: false)
};
}

[Authorize(AIPermissions.Configuration.ConfigureAI)]
public virtual async Task UpdateScoringSettingsAsync(UpdateAIScoringSettingsDto input)
public virtual async Task UpdateTenantConfigurationAsync(UpdateAITenantConfigurationDto input)
{
await _settingManager.SetAsync(
AISettings.ScoringAssistantEnabled,
input.ScoringAssistantEnabled.ToString().ToLowerInvariant(),
AISettings.AutomaticGenerationEnabled,
input.AutomaticGenerationEnabled.ToString().ToLowerInvariant(),
TenantSettingValueProvider.ProviderName,
_currentTenant.Id?.ToString());

await _settingManager.SetAsync(
AISettings.ManualGenerationEnabled,
input.ManualGenerationEnabled.ToString().ToLowerInvariant(),
TenantSettingValueProvider.ProviderName,
_currentTenant.Id?.ToString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,20 @@ public override void Define(ISettingDefinitionContext context)
{
context.Add(
new SettingDefinition(
AISettings.ScoringAssistantEnabled,
AISettings.AutomaticGenerationEnabled,
"false",
L("Setting:AI.ScoringAssistantEnabled"),
L("Setting:AI.AutomaticGenerationEnabled"),
isVisibleToClients: false,
isInherited: false,
isEncrypted: false)
.WithProviders(TenantSettingValueProvider.ProviderName)
);

context.Add(
new SettingDefinition(
AISettings.ManualGenerationEnabled,
"false",
L("Setting:AI.ManualGenerationEnabled"),
isVisibleToClients: false,
isInherited: false,
isEncrypted: false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,22 @@
"texts": {
"Permission:AI": "AI",
"Permission:AI.Reporting": "AI Reporting",
"Permission:AI.ApplicationAnalysis": "AI Application Analysis",
"Permission:AI.AttachmentSummary": "AI Attachment Summary",
"Permission:AI.ScoringAssistant": "AI Scoring Assistant",
"Setting:AI.ScoringAssistantEnabled": "AI Scoring Assistant",
"Permission:AI.Analysis": "AI Analysis",
"Permission:AI.Analysis.ViewApplicationAnalysis": "View AI Application Analysis",
"Permission:AI.Analysis.ViewAttachmentSummary": "View AI Attachment Summary",
"Permission:AI.Analysis.ViewScoringResult": "View AI Scoring Result",
"Permission:AI.Analysis.GenerateApplicationAnalysis": "Generate AI Application Analysis",
"Permission:AI.Analysis.GenerateAttachmentSummaries": "Generate AI Attachment Summaries",
"Permission:AI.Analysis.GenerateScoring": "Generate AI Scoring",
"Permission:AI.ConfigureAI": "AI Configuration",
"Permission:AI.Prompts": "AI Prompt Management",
"Permission:AI.Prompts.Create": "Create Prompts",
"Permission:AI.Prompts.Update": "Edit Prompts",
"Permission:AI.Prompts.Delete": "Delete Prompts",

"Setting:AI.AutomaticGenerationEnabled": "Automatically Generate AI Analysis",
"Setting:AI.ManualGenerationEnabled": "Manually Initiate AI Analysis",

"AIPrompts": "AI Prompts",
"AIPrompt": "AI Prompt",
"AIPromptVersion": "Prompt Version",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ namespace Unity.AI.Settings;

public static class AISettings
{
public const string ScoringAssistantEnabled = "GrantManager.AI.ScoringAssistantEnabled";
public const string AutomaticGenerationEnabled = "GrantManager.AI.AutomaticGenerationEnabled";
public const string ManualGenerationEnabled = "GrantManager.AI.ManualGenerationEnabled";
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ public virtual async Task<IViewComponentResult> InvokeAsync()
{
var model = new AISettingViewModel
{
ScoringAssistantEnabled = await settingProvider.GetAsync<bool>(
AISettings.ScoringAssistantEnabled, defaultValue: false)
AutomaticGenerationEnabled = await settingProvider.GetAsync<bool>(
AISettings.AutomaticGenerationEnabled, defaultValue: false),
ManualGenerationEnabled = await settingProvider.GetAsync<bool>(
AISettings.ManualGenerationEnabled, defaultValue: false)
};

return View("~/Views/Settings/AISettingGroup/Default.cshtml", model);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ namespace Unity.AI.Web.Views.Settings.AISettingGroup;

public class AISettingViewModel
{
public bool ScoringAssistantEnabled { get; set; }
public bool AutomaticGenerationEnabled { get; set; }
public bool ManualGenerationEnabled { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,34 @@
<form id="AISettingsForm">
<abp-row>
<abp-column size-md="_12" class="mx-2">
<div class="form-check form-switch mb-3">
<input class="form-check-input"
type="checkbox"
id="AutomaticGenerationEnabled"
name="AutomaticGenerationEnabled"
value="true"
@(Model.AutomaticGenerationEnabled ? "checked" : "") />
<label class="form-check-label fw-bold" for="AutomaticGenerationEnabled">
Automatically Generate AI Analysis
</label>
<div class="text-muted small">
When enabled, AI analysis runs automatically on new application intake (subject to form-level AI configuration).
</div>
</div>

<div class="form-check form-switch">
<input class="form-check-input"
type="checkbox"
id="ScoringAssistantEnabled"
name="ScoringAssistantEnabled"
id="ManualGenerationEnabled"
name="ManualGenerationEnabled"
value="true"
@(Model.ScoringAssistantEnabled ? "checked" : "") />
<label class="form-check-label fw-bold" for="ScoringAssistantEnabled">
AI Scoring Assistant
@(Model.ManualGenerationEnabled ? "checked" : "") />
<label class="form-check-label fw-bold" for="ManualGenerationEnabled">
Manually Initiate AI Analysis
</label>
<div class="text-muted small">
When enabled, users with appropriate permissions can manually generate or regenerate AI analysis.
</div>
</div>
</abp-column>
</abp-row>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ $(function () {
uiElements.settingForm.on('submit', function (event) {
event.preventDefault();

const scoringEnabled = $('#ScoringAssistantEnabled').is(':checked');
const automaticEnabled = $('#AutomaticGenerationEnabled').is(':checked');
const manualEnabled = $('#ManualGenerationEnabled').is(':checked');

unity.aI.settings.aIConfiguration.updateScoringSettings({
scoringAssistantEnabled: scoringEnabled
unity.aI.settings.aIConfiguration.updateTenantConfiguration({
automaticGenerationEnabled: automaticEnabled,
manualGenerationEnabled: manualEnabled
}).then(function () {
$(document).trigger('AbpSettingSaved');
initialFormState = uiElements.settingForm.serialize();
Expand Down
Loading
Loading