Skip to content

#5423 - Notice of Assessment Interface Policy Table#5655

Merged
tiago-graf merged 11 commits intomainfrom
features/#5423-noa-interface-policy
Jan 26, 2026
Merged

#5423 - Notice of Assessment Interface Policy Table#5655
tiago-graf merged 11 commits intomainfrom
features/#5423-noa-interface-policy

Conversation

@tiago-graf
Copy link
Collaborator

@tiago-graf tiago-graf commented Jan 21, 2026

Summary

Adds new "Assessed costs and need" table in the assessment form.

Camunda

Adds new workflow data property "governmentFundingCosts" (v2 only)
Fixes typo in a workflow data property "calaulatedDataTotalNonEducationalCost" -> "calculatedDataTotalNonEducationalCost" (both v1 and v2)

Formio

Adds new conditional panel containing the interface policy values requested by the AC
Updates condition to display "Full time panel" if not interface policy

Backend

Adds new properties mapped from the assessment workflow data to be used by the formio

image

@tiago-graf tiago-graf added the Form.io Form IO definitions changed. label Jan 21, 2026
@tiago-graf tiago-graf self-assigned this Jan 21, 2026
@tiago-graf tiago-graf added Camunda Worflow Involves camunda workflow changes Backend Used by the dependabot pull requests to identify PRs related to the backend. labels Jan 23, 2026
@tiago-graf tiago-graf requested a review from Copilot January 23, 2026 00:05
@tiago-graf tiago-graf marked this pull request as ready for review January 23, 2026 00:05
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces interface-policy-specific assessment data into the NOA flow so that the “Assessed costs and need” breakdown can be rendered correctly when the interface policy applies, while also fixing a workflow data typo.

Changes:

  • Updates the NOA Form.io definition to conditionally show either the existing full-time assessment breakdown or a new “Assessed costs and need” panel when the interface policy applies, including new rows driven by interface-specific workflow outputs and targeted resources.
  • Extends Camunda workflow mappings (v1 and v2) and the WorkflowData/assessment DTOs to surface governmentFundingCosts and the various interface policy calculation outputs to the API.
  • Maps the new workflow data fields onto the NOA API response in AssessmentControllerService, including computing an interface total assessed cost from the component interface costs.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
sources/packages/forms/src/form-definitions/noticeofassessment.json Adds a conditional split between the existing full-time panel and a new “Full time Interface Policy Panel” and wires the new table rows to calculatedDataInterface* and studentDataGovernmentFundingCosts fields from the NOA API.
sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway.bpmn Fixes the typo in the workflow mapping for totalNonEducationalCost so it uses the correct variable name in v1 workflow data.
sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway-v2.bpmn Updates the v2 workflow data mapping to include governmentFundingCosts in studentData while preserving all existing interface policy-related calculated outputs.
sources/packages/backend/libs/sims-db/src/entities/student-assessment.model.ts Extends the WorkflowData.studentData interface to include the optional governmentFundingCosts field so it matches the workflow output.
sources/packages/backend/apps/api/src/route-controllers/assessment/models/assessment.dto.ts Adds NOA output DTO fields for interface policy flags, interface cost components, total interface-assessed cost, and government funding costs with appropriate documentation.
sources/packages/backend/apps/api/src/route-controllers/assessment/assessment.controller.service.ts Populates the new DTO fields from workflowData and computes the interface total assessed cost for consumption by the NOA form.

@dheepak-aot dheepak-aot self-requested a review January 23, 2026 19:40
@weskubo-cgi weskubo-cgi self-requested a review January 23, 2026 20:31
"collapsible": false,
"hideLabel": true,
"key": "panel2",
"customConditional": "show = data.offeringIntensity === \"Full Time\" && data.assessment?.calculatedDataInterfacePolicyApplies;",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

{
"title": "Full time Panel",
"customClass": "formio-panel-unset",
"customClass": "pt-3",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please help me understand the change in css class here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it caused a weird double line layout issue, giving it some padding make it look better

0) +
(assessment.workflowData.calculatedData
.interfaceAdditionalTransportationAmount ?? 0);
if (interfaceTotalAssessedCost > 0) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this condition required? the total cost is subjective to interface policy being valid. Also in case if there is calculated 0 values, then not sending the property will display as not eligible. correct me if wrong.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This condition was added because the calculatedDataInterfaceTotalAssessedCost was always being returned (even when the values were null since this is a calculated value) but your concern is correct, even a 0 should be returned (NaN/Null/Undefined should be hidden). i'll update the code

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed condition to IsNaN instead

Copy link
Collaborator

@dheepak-aot dheepak-aot Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While using NaN and skipping the null check for interface fields there is one concern. one of the interface fields can be potentially null based on student situations.

Apologies if I wasn't clear on the comment outcome. It was something like this.

if (assessmentDTO.calculatedDataInterfacePolicyApplies) {
      const interfaceTotalAssessedCost =
        (assessment.workflowData.calculatedData.interfaceEducationCosts ?? 0) +
        (assessment.workflowData.calculatedData.interfaceChildCareCosts ?? 0) +
        (assessment.workflowData.calculatedData.interfaceTransportationAmount ??
          0) +
        (assessment.workflowData.calculatedData
          .interfaceAdditionalTransportationAmount ?? 0);
      assessmentDTO.interfaceTotalAssessedCost = interfaceTotalAssessedCost;
    }

@dheepak-aot
Copy link
Collaborator

Good job with NOA updates. Just minor comments and please have at least one E2E test returning the interface related properties.

Copy link
Collaborator

@weskubo-cgi weskubo-cgi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good. No additional comments. One thing to keep an eye out for next time is the branch is under /features not the standard /feature.

});
});

it("Should return interface policy properties when interface policy applies to full time application.", async () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we call it full-time?

@sonarqubecloud
Copy link

@github-actions
Copy link

Backend Unit Tests Coverage Report

Totals Coverage
Statements: 20.19% ( 4321 / 21406 )
Methods: 9.69% ( 253 / 2611 )
Lines: 24.35% ( 3710 / 15235 )
Branches: 10.06% ( 358 / 3560 )

@github-actions
Copy link

E2E Workflow Workers Coverage Report

Totals Coverage
Statements: 75.41% ( 1055 / 1399 )
Methods: 79.31% ( 115 / 145 )
Lines: 78.79% ( 769 / 976 )
Branches: 61.51% ( 171 / 278 )

Copy link
Collaborator

@dheepak-aot dheepak-aot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for making the changes. Looks good 👍

@github-actions
Copy link

E2E Queue Consumers Coverage Report

Totals Coverage
Statements: 85.68% ( 1616 / 1886 )
Methods: 85% ( 187 / 220 )
Lines: 88.64% ( 1287 / 1452 )
Branches: 66.36% ( 142 / 214 )

@github-actions
Copy link

E2E SIMS API Coverage Report

Totals Coverage
Statements: 77.19% ( 8823 / 11430 )
Methods: 76.66% ( 1041 / 1358 )
Lines: 81.23% ( 6406 / 7886 )
Branches: 62.95% ( 1376 / 2186 )

@tiago-graf tiago-graf added this pull request to the merge queue Jan 26, 2026
Merged via the queue into main with commit 64931c8 Jan 26, 2026
22 checks passed
@tiago-graf tiago-graf deleted the features/#5423-noa-interface-policy branch January 26, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backend Used by the dependabot pull requests to identify PRs related to the backend. Camunda Worflow Involves camunda workflow changes Form.io Form IO definitions changed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants