Skip to content

Commit 7b5b467

Browse files
authored
Merge pull request #287 from GovStackWorkingGroup/feature/TECH-1124
TECH-1124: changed compliance details aggeration pipeline to show eac…
2 parents f0f65d2 + 855da77 commit 7b5b467

File tree

27 files changed

+1076
-724
lines changed

27 files changed

+1076
-724
lines changed

backend/@types/index.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ declare module 'myTypes' {
1111
REJECTED = 3
1212
}
1313

14-
export enum SpecificationComplianceLevel {
14+
export const enum SpecificationComplianceLevel {
1515
NA = -1,
1616
LEVEL_1 = 1,
1717
LEVEL_2 = 2
@@ -179,7 +179,7 @@ declare module 'myTypes' {
179179
getAllSoftwares: () => Promise<ComplianceListFilter[]>;
180180
getAllBBs: () => Promise<ComplianceListFilter[]>;
181181
aggregateComplianceReports: (limit: number, offset: number, filters: ComplianceListFilters, isAuthenticated: Boolean) => Promise<ComplianceAggregationListResult>;
182-
getSoftwareComplianceDetail: (softwareName: string) => Promise<SofwareDetailsResults>;
182+
getSoftwareComplianceDetail: (softwareName: string, isAuthenticated: Boolean) => Promise<SofwareDetailsResults>;
183183
getFormDetail: (formId: string) => Promise<FormDetailsResults>;
184184
getDraftDetail: (draftUuid: string) => Promise<FormDetailsResults>;
185185
createOrSubmitForm: (draftData: Partial<ComplianceReport>) => Promise<string>;

backend/src/controllers/complianceController.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ const complianceController = (
3636
.catch((err: any) => default500Error(res, err));
3737
}
3838

39-
const getSoftwareComplianceDetail = (req: Request, res: Response): void => {
39+
const getSoftwareComplianceDetail = (req: AuthenticatedRequest, res: Response): void => {
4040
const softwareName = req.params.softwareName;
41-
42-
new GetSoftwareComplianceDetailRequestHandler(req, res, repository, softwareName)
41+
const isAuthenticated = Boolean(req.user);
42+
new GetSoftwareComplianceDetailRequestHandler(req, res, repository, softwareName, isAuthenticated)
4343
.getSoftwareComplianceDetail()
4444
.catch((err: any) => default500Error(res, err));
4545
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { Request, Response } from 'express';
2+
import GitBookPageContentManager from '../services/gitBookService/PageContentManager';
3+
import BBRequirements from '../db/schemas/bbRequirements';
4+
import { processBBRequirements } from '../services/gitBookService/bbRequirementsProcessing';
5+
6+
// Initialize GitBookPageContentManager instance
7+
const gitBookPageContentManager = new GitBookPageContentManager();
8+
9+
// Function to fetch requirements and transform them
10+
async function fetchRequirements() {
11+
const requirements = await BBRequirements.find().lean();
12+
13+
return requirements.map(bb => ({
14+
bbName: bb.bbName,
15+
requirements: {
16+
crossCutting: (bb.requirements?.crossCutting ?? []).map((req: any) => req.requirement),
17+
functional: (bb.requirements?.functional ?? []).map((req: any) => req.requirement),
18+
interface: (bb.requirements?.interface ?? []).map((req: any) => req.requirement),
19+
keyDigitalFunctionalities: (bb.requirements?.keyDigitalFunctionalities ?? []).map((req: any) => req.requirement),
20+
}
21+
}));
22+
}
23+
24+
// Controller function
25+
export const testFetchReqWithDesc = async (_: Request, res: Response) => {
26+
try {
27+
const result = await processBBRequirements();
28+
29+
const requirements = await fetchRequirements();
30+
31+
res.status(200).json({ requirements: result, massage: result, good: "we good" });
32+
} catch (error) {
33+
console.error('Error processing requirements:', error);
34+
res.status(500).json({ error: 'Failed to process requirements' });
35+
}
36+
};

backend/src/db/pipelines/compliance/formDetailAggregation.ts

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import mongoose from "mongoose";
2+
import { SpecificationComplianceLevel } from "myTypes";
23

34
export const formDetailAggregationPipeline = ({ formId, draftUuid }: {
45
formId?: string,
@@ -21,6 +22,7 @@ export const formDetailAggregationPipeline = ({ formId, draftUuid }: {
2122
},
2223
{
2324
$project: {
25+
originalId: "$_id",
2426
bbDetails: {
2527
$arrayToObject: {
2628
$map: {
@@ -30,20 +32,30 @@ export const formDetailAggregationPipeline = ({ formId, draftUuid }: {
3032
"$$bbDetail.k",
3133
{
3234
interfaceCompliance: {
35+
level: { $ifNull: ["$$bbDetail.v.interfaceCompliance.level", SpecificationComplianceLevel.NA] },
36+
notes: { $ifNull: ["$$bbDetail.v.interfaceCompliance.notes", ""] },
3337
testHarnessResult: "$$bbDetail.v.interfaceCompliance.testHarnessResult",
3438
requirements: "$$bbDetail.v.interfaceCompliance.requirements"
3539
},
3640
requirementSpecificationCompliance: {
41+
level: { $ifNull: ["$$bbDetail.v.requirementSpecificationCompliance.level", SpecificationComplianceLevel.NA] },
42+
notes: { $ifNull: ["$$bbDetail.v.requirementSpecificationCompliance.notes", ""] },
3743
crossCuttingRequirements: "$$bbDetail.v.requirementSpecificationCompliance.crossCuttingRequirements",
3844
functionalRequirements: "$$bbDetail.v.requirementSpecificationCompliance.functionalRequirements",
39-
keyDigitalFunctionalitiesRequirements: "$$bbDetail.v.requirementSpecificationCompliance.keyDigitalFunctionalitiesRequirements",
45+
keyDigitalFunctionalitiesRequirements: "$$bbDetail.v.requirementSpecificationCompliance.keyDigitalFunctionalitiesRequirements"
46+
},
47+
deploymentCompliance: {
48+
level: { $ifNull: ["$$bbDetail.v.deploymentCompliance.level", SpecificationComplianceLevel.NA] },
49+
notes: { $ifNull: ["$$bbDetail.v.deploymentCompliance.notes", ""] }
4050
}
4151
}
4252
]
4353
}
4454
}
4555
},
4656
deploymentCompliance: {
57+
level: { $ifNull: ["$deploymentCompliance.level", SpecificationComplianceLevel.NA] },
58+
notes: { $ifNull: ["$deploymentCompliance.notes", ""] },
4759
documentation: "$deploymentCompliance.documentation",
4860
deploymentInstructions: "$deploymentCompliance.deploymentInstructions"
4961
}
@@ -56,7 +68,8 @@ export const formDetailAggregationPipeline = ({ formId, draftUuid }: {
5668
$push: {
5769
version: "$version",
5870
bbDetails: "$bbDetails",
59-
deploymentCompliance: "$deploymentCompliance"
71+
deploymentCompliance: "$deploymentCompliance",
72+
id: "$originalId"
6073
}
6174
}
6275
}

0 commit comments

Comments
 (0)