From 74ed7ed3b2e8a5d43e2bcb6e8ea6e0976e9d0919 Mon Sep 17 00:00:00 2001 From: reactlabs-dev Date: Tue, 27 Jan 2026 16:46:07 -0700 Subject: [PATCH 1/5] sync assessment with calc via context --- src/app/app.tsx | 15 +- src/app/components/calculator/Calculator.tsx | 8 +- .../CompositeScoreDisplay.tsx | 109 ++--- .../questionnaire/QuestionnaireDialog.tsx | 380 +++++++----------- .../questionnaire/assessmentPrint.ts | 266 ++++++++++++ src/app/context/AssessmentContext.tsx | 63 +++ 6 files changed, 539 insertions(+), 302 deletions(-) create mode 100644 src/app/components/questionnaire/assessmentPrint.ts create mode 100644 src/app/context/AssessmentContext.tsx diff --git a/src/app/app.tsx b/src/app/app.tsx index 295c856..9dd7fdd 100644 --- a/src/app/app.tsx +++ b/src/app/app.tsx @@ -18,15 +18,18 @@ import { Route, Routes } from 'react-router-dom'; import Home from './pages/home'; +import { AssessmentProvider } from './context/AssessmentContext'; export function App() { return ( - - - + + + + + ); } diff --git a/src/app/components/calculator/Calculator.tsx b/src/app/components/calculator/Calculator.tsx index 115c6eb..33dc0c5 100644 --- a/src/app/components/calculator/Calculator.tsx +++ b/src/app/components/calculator/Calculator.tsx @@ -10,8 +10,7 @@ export interface CalculatorProps { } function Calculator(props: CalculatorProps) { - - const [factors, setFactors] = useState(initialFactors || []); // Add fallback + const [factors, setFactors] = useState(() => (initialFactors || []).map(f => ({ ...f }))); const handleScoreChange = (index: number, value: number) => { const newFactors = [...factors]; @@ -27,6 +26,10 @@ function Calculator(props: CalculatorProps) { } }; + const handleAssessmentReset = () => { + setFactors((initialFactors || []).map(f => ({ ...f }))); + }; + const calculateCompositeScore = () => { return (factors || []).reduce((acc, factor) => acc + factor.score * factor.weight, 0); }; @@ -73,6 +76,7 @@ function Calculator(props: CalculatorProps) { {/* Maturity Level Indicator */} diff --git a/src/app/components/compositeScoreDisplay/CompositeScoreDisplay.tsx b/src/app/components/compositeScoreDisplay/CompositeScoreDisplay.tsx index c28ebb8..14b63ed 100644 --- a/src/app/components/compositeScoreDisplay/CompositeScoreDisplay.tsx +++ b/src/app/components/compositeScoreDisplay/CompositeScoreDisplay.tsx @@ -2,79 +2,36 @@ import React, { useState } from 'react'; import { Button } from 'primereact/button'; import styles from './CompositeScoreDisplay.module.scss'; import QuestionnaireDialog from '../questionnaire/QuestionnaireDialog'; - -interface AssessmentResult { - sectionName: string; - score: number; - maxScore: number; - answers: { questionId: string; questionText: string; selectedAnswer: string; pointsEarned: number; maxPoints: number }[]; - completedAt: Date; -} +import { useAssessmentContext } from '../../context/AssessmentContext'; export interface CompositeScoreDisplayProps { score: number; onQuestionnaireScoreUpdate?: (sectionIndex: number, score: number) => void; + onAssessmentReset?: () => void; + 'data-testid'?: string; } -const CompositeScoreDisplay: React.FC = ({ score, onQuestionnaireScoreUpdate }) => { +const CompositeScoreDisplay: React.FC = ({ + score, + onQuestionnaireScoreUpdate, + onAssessmentReset, + 'data-testid': testId, +}) => { const [open, setOpen] = useState(false); - const [assessmentResults, setAssessmentResults] = useState([]); - const [isAssessmentComplete, setIsAssessmentComplete] = useState(false); - - const handleAssessmentComplete = (results: AssessmentResult[]) => { - setAssessmentResults(results); - setIsAssessmentComplete(true); - }; - - const generateQuickReport = () => { - if (!isAssessmentComplete) return; - - const totalScore = assessmentResults.reduce((sum, result) => sum + result.score, 0); - const maxTotalScore = assessmentResults.length * 25; - const overallPercentage = (totalScore / maxTotalScore) * 100; - - let maturityLevel = 'Developing'; - if (overallPercentage >= 80) maturityLevel = 'Expert'; - else if (overallPercentage >= 65) maturityLevel = 'Advanced'; - else if (overallPercentage >= 45) maturityLevel = 'Intermediate'; - else if (overallPercentage >= 25) maturityLevel = 'Basic'; - - const quickReport = `# PolydraIQ™ Assessment Summary - -**Overall Score:** ${totalScore.toFixed(1)} / ${maxTotalScore} (${overallPercentage.toFixed(1)}%) -**Maturity Level:** ${maturityLevel} -**Completed:** ${new Date().toLocaleDateString()} - -${assessmentResults.map(result => ` -**${result.sectionName}:** ${result.score.toFixed(1)}/25 (${((result.score / 25) * 100).toFixed(1)}%)`).join('')} - -*Complete assessment details available in the Guided Assessment dialog.*`; + const [dialogKey, setDialogKey] = useState(0); + const { isAssessmentComplete, printReport, resetAssessment } = useAssessmentContext(); - const printWindow = window.open('', '_blank'); - if (printWindow) { - printWindow.document.write(` - - - PolydraIQ Assessment Summary - - - -
${quickReport.replace(/\\*/g, '').replace(/#/g, '')}
- - - `); - printWindow.document.close(); - printWindow.print(); + const handleResetAssessment = () => { + resetAssessment(); + setDialogKey((k) => k + 1); + setOpen(false); + if (onAssessmentReset) { + onAssessmentReset(); } }; return ( -
+

Composite Quality Score: {score.toFixed(2)}

{isAssessmentComplete && ( -
- ✅ Assessment Completed - Detailed report available in Guided Assessment +
+
+ ✅ Assessment Completed - Detailed report available in Guided Assessment +
+
)} setOpen(false)} onScoreUpdate={onQuestionnaireScoreUpdate} - onAssessmentComplete={handleAssessmentComplete} />
); diff --git a/src/app/components/questionnaire/QuestionnaireDialog.tsx b/src/app/components/questionnaire/QuestionnaireDialog.tsx index 536cc41..af55716 100644 --- a/src/app/components/questionnaire/QuestionnaireDialog.tsx +++ b/src/app/components/questionnaire/QuestionnaireDialog.tsx @@ -5,15 +5,8 @@ import { RadioButton } from 'primereact/radiobutton'; import { ProgressBar } from 'primereact/progressbar'; import { Card } from 'primereact/card'; import { Badge } from 'primereact/badge'; - -// Assessment result interface for comprehensive tracking -interface AssessmentResult { - sectionName: string; - score: number; - maxScore: number; - answers: { questionId: string; questionText: string; selectedAnswer: string; pointsEarned: number; maxPoints: number }[]; - completedAt: Date; -} +import { AssessmentResult, getAssessmentSummary, printAssessmentReport } from './assessmentPrint'; +import { useAssessmentContext } from '../../context/AssessmentContext'; const SECTIONS = [ 'Governance & Accountability', @@ -436,16 +429,15 @@ export interface QuestionnaireDialogProps { open: boolean; onClose: () => void; onScoreUpdate?: (sectionIndex: number, score: number) => void; - onAssessmentComplete?: (results: AssessmentResult[]) => void; } -const QuestionnaireDialog: React.FC = ({ open, onClose, onScoreUpdate, onAssessmentComplete }) => { +const QuestionnaireDialog: React.FC = ({ open, onClose, onScoreUpdate }) => { const [tab, setTab] = useState(0); const [answers, setAnswers] = useState<{[key: string]: number}>({}); const [selectedAnswerTexts, setSelectedAnswerTexts] = useState<{[key: string]: string}>({}); const [sectionScores, setSectionScores] = useState(Array(6).fill(0)); const [assessmentResults, setAssessmentResults] = useState([]); - const [isAssessmentComplete, setIsAssessmentComplete] = useState(false); + const { setAssessmentResults: setGlobalAssessmentResults, isAssessmentComplete, setAssessmentComplete } = useAssessmentContext(); const currentQuestions = QUESTION_SETS[SECTIONS[tab]] || []; const maxPossibleScore = currentQuestions.reduce((sum, q) => sum + q.points, 0); @@ -454,6 +446,11 @@ const QuestionnaireDialog: React.FC = ({ open, onClose return sum + (answer !== undefined ? answer : 0); }, 0); + const answeredCount = currentQuestions.filter(q => answers[q.id] !== undefined).length; + const completionPercent = currentQuestions.length + ? Math.round((answeredCount / currentQuestions.length) * 100) + : 0; + const handleAnswerChange = (questionId: string, score: number, answerText: string) => { setAnswers(prev => ({ ...prev, [questionId]: score })); setSelectedAnswerTexts(prev => ({ ...prev, [questionId]: answerText })); @@ -490,6 +487,7 @@ const QuestionnaireDialog: React.FC = ({ open, onClose const updatedResults = [...assessmentResults]; updatedResults[tab] = sectionResult; setAssessmentResults(updatedResults); + setGlobalAssessmentResults(updatedResults); // Update the parent component's score if (onScoreUpdate) { @@ -498,10 +496,7 @@ const QuestionnaireDialog: React.FC = ({ open, onClose // Check if this is the last section if (tab === SECTIONS.length - 1) { - setIsAssessmentComplete(true); - if (onAssessmentComplete) { - onAssessmentComplete(updatedResults); - } + setAssessmentComplete(true); } else { // Move to next tab setTab(tab + 1); @@ -527,27 +522,18 @@ const QuestionnaireDialog: React.FC = ({ open, onClose default: return '#6b7280'; } }; - const generateReport = () => { - const totalScore = assessmentResults.reduce((sum, result) => sum + result.score, 0); - const maxTotalScore = assessmentResults.length * 25; - const overallPercentage = (totalScore / maxTotalScore) * 100; - - let maturityLevel = 'Developing'; - if (overallPercentage >= 80) maturityLevel = 'Expert'; - else if (overallPercentage >= 65) maturityLevel = 'Advanced'; - else if (overallPercentage >= 45) maturityLevel = 'Intermediate'; - else if (overallPercentage >= 25) maturityLevel = 'Basic'; - + const { totalScore, maxTotalScore, overallPercentage, maturityLevel } = getAssessmentSummary(assessmentResults); + const reportContent = ` # PolydraIQ™ AI Governance Assessment Report -Generated: ${new Date().toLocaleDateString('en-US', { - year: 'numeric', - month: 'long', - day: 'numeric', - hour: '2-digit', - minute: '2-digit' +Generated: ${new Date().toLocaleDateString('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', })} ## Executive Summary @@ -557,15 +543,23 @@ Generated: ${new Date().toLocaleDateString('en-US', { ## Section Breakdown -${assessmentResults.map(result => ` +${assessmentResults + .map( + (result) => ` ### ${result.sectionName} **Score:** ${result.score.toFixed(1)} / 25 (${((result.score / 25) * 100).toFixed(1)}%) -${result.answers.map(answer => ` +${result.answers + .map( + (answer) => ` **Q:** ${answer.questionText} **A:** ${answer.selectedAnswer} (${answer.pointsEarned}/${answer.maxPoints} pts) -`).join('')} -`).join('')} +`, + ) + .join('')} +`, + ) + .join('')} ## Recommendations @@ -575,10 +569,10 @@ Based on your assessment results, focus on areas with lower scores to improve yo *This report was generated using PolydraIQ™ Assessment Platform* *For professional AI governance consulting: https://www.inference-stack.com/* `; - + return reportContent; }; - + const downloadReport = () => { const reportContent = generateReport(); const blob = new Blob([reportContent], { type: 'text/markdown' }); @@ -591,52 +585,36 @@ Based on your assessment results, focus on areas with lower scores to improve yo document.body.removeChild(a); URL.revokeObjectURL(url); }; - - const printReport = () => { - const reportContent = generateReport(); - const printWindow = window.open('', '_blank'); - if (printWindow) { - printWindow.document.write(` - - - PolydraIQ Assessment Report - - - -
${reportContent.replace(/\*/g, '').replace(/#/g, '')}
- - - `); - printWindow.document.close(); - printWindow.print(); + + const handlePrintReport = () => { + if (!assessmentResults.length) { + window.alert('Please complete the guided assessment before printing a report.'); + return; } + + printAssessmentReport(assessmentResults); }; return ( -
{/* Tab Navigation */} -
+

Assessment Facets

{SECTIONS.map((section, idx) => (
setTab(idx)} > -
+
{section}
{sectionScores[idx] > 0 && ( - )}
@@ -670,16 +663,21 @@ Based on your assessment results, focus on areas with lower scores to improve yo

{SECTIONS[tab]}

-
- + - {currentScore.toFixed(1)} / {maxPossibleScore} points + {answeredCount} / {currentQuestions.length || 0} answered
+
+ Section progress reflects how many questions you've answered. Your answers currently sum to + {' '} + {currentScore.toFixed(1)} / {maxPossibleScore} points. +

Answer questions to assess this facet's maturity. Higher complexity questions contribute more points.

@@ -688,162 +686,90 @@ Based on your assessment results, focus on areas with lower scores to improve yo {/* Questions */}
{currentQuestions.map((question, idx) => ( - -
-
- {getCategoryIcon(question.category)} {question.category.toUpperCase()} ({question.points}pt) +
+
+ {getCategoryIcon(question.category)} Question {idx + 1}
-
-
- {idx + 1}. {question.text} -
-
- {question.options.map((option, optIdx) => ( -
handleAnswerChange(question.id, option.score, option.text)} - > - { - const selectedOption = question.options.find(opt => opt.score === e.value); - handleAnswerChange(question.id, e.value, selectedOption?.text || ''); - }} - checked={answers[question.id] === option.score} - style={{ marginRight: '8px' }} - /> - {option.text} - -
- ))} + + Weight: {question.points} pts · Level: {question.category} + +
+ +
{question.text}
+ +
+ {question.options.map((option, optionIdx) => ( +
+ handleAnswerChange(question.id, option.score, option.text)} + checked={answers[question.id] === option.score} + /> +
-
+ ))}
))}
- {/* Calculate Score Button and Report Generation */} -
-
-
- Calculated Score: {calculateSectionScore().toFixed(2)} / 25 -
-
- {tab > 0 && ( -
+ marginTop: '8px', + }} + > +
+
- - {/* Report Generation Section - Only show when assessment is complete */} - {isAssessmentComplete && ( -
-
-
-
- ✅ Assessment Complete! -
-
- Total Score: {assessmentResults.reduce((sum, result) => sum + result.score, 0).toFixed(1)} / 150 -
-
-
-
-
-
- )} + +
diff --git a/src/app/components/questionnaire/assessmentPrint.ts b/src/app/components/questionnaire/assessmentPrint.ts new file mode 100644 index 0000000..af62212 --- /dev/null +++ b/src/app/components/questionnaire/assessmentPrint.ts @@ -0,0 +1,266 @@ +export interface AssessmentAnswerDetail { + questionId: string; + questionText: string; + selectedAnswer: string; + pointsEarned: number; + maxPoints: number; +} + +export interface AssessmentResult { + sectionName: string; + score: number; + maxScore: number; + answers: AssessmentAnswerDetail[]; + completedAt: Date; +} + +export interface AssessmentSummary { + totalScore: number; + maxTotalScore: number; + overallPercentage: number; + maturityLevel: string; +} + +export const getAssessmentSummary = (assessmentResults: AssessmentResult[]): AssessmentSummary => { + if (!assessmentResults.length) { + return { + totalScore: 0, + maxTotalScore: 0, + overallPercentage: 0, + maturityLevel: 'Developing', + }; + } + + const totalScore = assessmentResults.reduce((sum, result) => sum + result.score, 0); + const maxTotalScore = assessmentResults.length * 25; + const overallPercentage = maxTotalScore > 0 ? (totalScore / maxTotalScore) * 100 : 0; + + let maturityLevel = 'Developing'; + if (overallPercentage >= 80) maturityLevel = 'Expert'; + else if (overallPercentage >= 65) maturityLevel = 'Advanced'; + else if (overallPercentage >= 45) maturityLevel = 'Intermediate'; + else if (overallPercentage >= 25) maturityLevel = 'Basic'; + + return { totalScore, maxTotalScore, overallPercentage, maturityLevel }; +}; + +export const printAssessmentReport = (assessmentResults: AssessmentResult[]): void => { + const printWindow = window.open('', '_blank'); + if (!printWindow) return; + + const { totalScore, maxTotalScore, overallPercentage, maturityLevel } = getAssessmentSummary(assessmentResults); + + const maturityColorMap: Record = { + Expert: '#ef4444', + Advanced: '#f97316', + Intermediate: '#eab308', + Basic: '#22c55e', + Developing: '#6b7280', + }; + + const maturityColor = maturityColorMap[maturityLevel] ?? '#3b82f6'; + + const sectionsHtml = assessmentResults + .map((result) => { + const sectionPercentage = (result.score / 25) * 100; + return ` +
+

${result.sectionName}

+
+ Score: ${result.score.toFixed(1)} / 25 + ${sectionPercentage.toFixed(1)}% +
+
+ ${result.answers + .map( + (answer) => ` +
+
Q: ${answer.questionText}
+
A: ${answer.selectedAnswer}
+
${answer.pointsEarned.toFixed(1)} / ${answer.maxPoints.toFixed(1)} pts
+
+ `, + ) + .join('')} +
+
+ `; + }) + .join(''); + + printWindow.document.write(` + + + PolydraIQ Assessment Report + + + +
+

PolydraIQ AI Governance Assessment Report

+
Generated: ${new Date().toLocaleDateString('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + })}
+
+ +
+
+
Overall Score: ${totalScore.toFixed(1)} / ${maxTotalScore}
+
Overall Maturity: ${overallPercentage.toFixed(1)}%
+
+
Maturity Level: ${maturityLevel}
+
+ +
+ Section scores are normalized to a maximum of 25 points each. Detailed responses are listed below for audit and follow-up planning. +
+ + ${sectionsHtml} + +
+ USE DISCLAIMER: This assessment report is generated from a self-assessed questionnaire and is provided "AS IS" for informational and preliminary evaluation purposes only. It does not constitute legal, regulatory, risk, or audit advice, and does not create any form of certification or accreditation. Organizations remain solely responsible for their own governance, risk, and compliance decisions and should seek qualified professional guidance for any production or regulatory use. +
+ + + `); + + printWindow.document.close(); + printWindow.print(); +} diff --git a/src/app/context/AssessmentContext.tsx b/src/app/context/AssessmentContext.tsx new file mode 100644 index 0000000..ad72bed --- /dev/null +++ b/src/app/context/AssessmentContext.tsx @@ -0,0 +1,63 @@ +import React, { createContext, useContext, useState, ReactNode } from 'react'; +import { AssessmentResult, printAssessmentReport } from '../components/questionnaire/assessmentPrint'; + +interface AssessmentContextValue { + assessmentResults: AssessmentResult[]; + /** Replace the entire result set (e.g., after completing or recomputing the assessment). */ + setAssessmentResults: (results: AssessmentResult[]) => void; + /** Whether the guided assessment has been fully completed. */ + isAssessmentComplete: boolean; + /** Mark the assessment as complete or incomplete. */ + setAssessmentComplete: (complete: boolean) => void; + /** Clear results and completion state (for a fresh run). */ + resetAssessment: () => void; + /** Invoke the shared print helper for the current results. */ + printReport: () => void; +} + +const AssessmentContext = createContext(undefined); + +export const AssessmentProvider: React.FC<{ children: ReactNode }> = ({ children }) => { + const [assessmentResults, setAssessmentResultsState] = useState([]); + const [isAssessmentComplete, setAssessmentComplete] = useState(false); + + const setAssessmentResults = (results: AssessmentResult[]) => { + setAssessmentResultsState(results); + }; + + const resetAssessment = () => { + setAssessmentResultsState([]); + setAssessmentComplete(false); + }; + + const printReport = () => { + if (!assessmentResults.length) { + window.alert('To generate a full report, please complete the Guided Assessment first.'); + return; + } + printAssessmentReport(assessmentResults); + }; + + return ( + + {children} + + ); +}; + +export const useAssessmentContext = (): AssessmentContextValue => { + const ctx = useContext(AssessmentContext); + if (!ctx) { + throw new Error('useAssessmentContext must be used within an AssessmentProvider'); + } + return ctx; +}; From 3124bc73854c037610ae46ce3ae618e0d9979145 Mon Sep 17 00:00:00 2001 From: reactlabs-dev Date: Tue, 27 Jan 2026 16:55:56 -0700 Subject: [PATCH 2/5] fix build error --- .eslintrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index cb608c4..d5f78ec 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -35,7 +35,8 @@ }, { "files": [ - "src/app/components/factorSlider/FactorSlider.tsx" + "src/app/components/factorSlider/FactorSlider.tsx", + "src/app/context/AssessmentContext.tsx" ], "rules": { "react-refresh/only-export-components": "off" From 976d58e2ec216f7ef61106f60ba962089374eb36 Mon Sep 17 00:00:00 2001 From: reactlabs-dev Date: Tue, 27 Jan 2026 17:36:53 -0700 Subject: [PATCH 3/5] fix lint and build issues and update readme images --- public/screenshot_assessment.png | Bin 657097 -> 717460 bytes public/screenshot_calc.png | Bin 573611 -> 587991 bytes .../CompositeScoreDisplay.spec.tsx | 2 +- src/app/pages/home.spec.tsx | 2 +- src/test-utils/index.tsx | 8 ++++++-- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/public/screenshot_assessment.png b/public/screenshot_assessment.png index 88297c494ced7247757b59bbdefa5dd32345f7ae..0502fc937b751666158433162f40dc9e279d865a 100644 GIT binary patch literal 717460 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%0AYd&t&CKH# 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
diff --git a/src/app/components/questionnaire/assessmentPrint.ts b/src/app/components/questionnaire/assessmentPrint.ts index af62212..e70efa8 100644 --- a/src/app/components/questionnaire/assessmentPrint.ts +++ b/src/app/components/questionnaire/assessmentPrint.ts @@ -32,7 +32,7 @@ export const getAssessmentSummary = (assessmentResults: AssessmentResult[]): Ass } const totalScore = assessmentResults.reduce((sum, result) => sum + result.score, 0); - const maxTotalScore = assessmentResults.length * 25; + const maxTotalScore = assessmentResults.reduce((sum, result) => sum + result.maxScore, 0); const overallPercentage = maxTotalScore > 0 ? (totalScore / maxTotalScore) * 100 : 0; let maturityLevel = 'Developing'; @@ -62,7 +62,7 @@ export const printAssessmentReport = (assessmentResults: AssessmentResult[]): vo const sectionsHtml = assessmentResults .map((result) => { - const sectionPercentage = (result.score / 25) * 100; + const sectionPercentage = result.maxScore > 0 ? (result.score / result.maxScore) * 100 : 0; return `

${result.sectionName}

diff --git a/src/app/context/AssessmentContext.tsx b/src/app/context/AssessmentContext.tsx index ad72bed..1b22461 100644 --- a/src/app/context/AssessmentContext.tsx +++ b/src/app/context/AssessmentContext.tsx @@ -21,10 +21,6 @@ export const AssessmentProvider: React.FC<{ children: ReactNode }> = ({ children const [assessmentResults, setAssessmentResultsState] = useState([]); const [isAssessmentComplete, setAssessmentComplete] = useState(false); - const setAssessmentResults = (results: AssessmentResult[]) => { - setAssessmentResultsState(results); - }; - const resetAssessment = () => { setAssessmentResultsState([]); setAssessmentComplete(false); @@ -42,7 +38,7 @@ export const AssessmentProvider: React.FC<{ children: ReactNode }> = ({ children Date: Tue, 27 Jan 2026 18:03:04 -0700 Subject: [PATCH 5/5] fix composite score note better layout --- .../questionnaire/QuestionnaireDialog.tsx | 97 ++++++++++--------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/src/app/components/questionnaire/QuestionnaireDialog.tsx b/src/app/components/questionnaire/QuestionnaireDialog.tsx index 598f1b0..bc179f6 100644 --- a/src/app/components/questionnaire/QuestionnaireDialog.tsx +++ b/src/app/components/questionnaire/QuestionnaireDialog.tsx @@ -750,64 +750,65 @@ Based on your assessment results, focus on areas with lower scores to improve yo
{/* Actions */} -
-
-
+
Current section score (normalized):{' '} {normalizedSectionScore.toFixed(1)} / 25
-
-
+
+