feat: add AI interview question concept coverage map - #1732
Conversation
📝 WalkthroughWalkthroughAdded a React page for AI interview-question concept coverage. It calculates coverage metrics, supports search and status filtering, displays concept details and knowledge gaps, and renders recommendations, progress data, and preparation insights. ChangesAI concept coverage
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx`:
- Around line 505-507: Update the ring markup in
AIInterviewQuestionConceptCoverageMap to derive its border sweep from
overallCoverage instead of hardcoded violet and gray sides. Ensure the rendered
circular progress accurately reflects the same percentage shown by the coverage
text and progress bar, while preserving the existing styling and layout.
- Around line 968-974: Wire both practice buttons in
AIInterviewQuestionConceptCoverageMap.jsx to the practice flow: update the
selectedConcept control at lines 968-974 and the selected recommended question
control at lines 1161-1167 with the appropriate click behavior or navigation
target, passing the corresponding concept or question so each click starts or
opens practice instead of doing nothing.
- Around line 107-110: Align the concept status values with the Mastery
Distribution classification rule: set 88% to mastered, 28% to unexplored, and
52% to developing in AIInterviewQuestionConceptCoverageMap.jsx at lines 107-110,
92-95, and 137-140 respectively. Prefer deriving each status from mastery so
filters, summaries, labels, and distribution totals remain consistent.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: a62915db-d2ab-4bcd-ad74-7c6aa872f8bb
📒 Files selected for processing (1)
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx
| name: "Sorting Algorithms", | ||
| category: "Algorithms", | ||
| mastery: 88, | ||
| status: "strong", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Use one mastery classification across the dashboard.
The stored statuses conflict with the mastery ranges in the Mastery Distribution. This makes filters, summary counts, card labels, and distribution totals disagree.
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L107-L110: classify 88% asmastered.frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L92-L95: classify 28% asunexplored.frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L137-L140: classify 52% asdeveloping.
Derive the status from mastery, or update these values and retain one documented classification rule.
📍 Affects 1 file
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L107-L110(this comment)frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L92-L95frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L137-L140
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx`
around lines 107 - 110, Align the concept status values with the Mastery
Distribution classification rule: set 88% to mastered, 28% to unexplored, and
52% to developing in AIInterviewQuestionConceptCoverageMap.jsx at lines 107-110,
92-95, and 137-140 respectively. Prefer deriving each status from mastery so
filters, summaries, labels, and distribution totals remain consistent.
| <div className="relative w-52 h-52 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center shrink-0"> | ||
|
|
||
| <div className="absolute inset-4 rounded-full border-[18px] border-violet-500 border-r-gray-200 dark:border-r-gray-700 border-b-gray-200 dark:border-b-gray-700" /> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Render the ring from overallCoverage.
Line 507 always renders two violet border sides and two gray border sides. With the current data, overallCoverage is 62%, but the ring still represents approximately 50%.
Generate the ring sweep from overallCoverage so the graphic matches the displayed percentage and progress bar.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx`
around lines 505 - 507, Update the ring markup in
AIInterviewQuestionConceptCoverageMap to derive its border sweep from
overallCoverage instead of hardcoded violet and gray sides. Ensure the rendered
circular progress accurately reflects the same percentage shown by the coverage
text and progress bar, while preserving the existing styling and layout.
| <button | ||
| type="button" | ||
| className="inline-flex items-center gap-2 px-6 py-3 rounded-xl bg-violet-600 text-white font-bold hover:bg-violet-700 transition" | ||
| > | ||
| <BookOpen size={19} /> | ||
| Practice This Concept | ||
| </button> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Connect the practice controls to the practice flow.
Both controls are button elements with no onClick handler, form action, or navigation target. Clicking either control has no observable effect.
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L968-L974: navigate to or start practice forselectedConcept.frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L1161-L1167: navigate to or start the selected recommended question.
📍 Affects 1 file
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L968-L974(this comment)frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L1161-L1167
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx`
around lines 968 - 974, Wire both practice buttons in
AIInterviewQuestionConceptCoverageMap.jsx to the practice flow: update the
selectedConcept control at lines 968-974 and the selected recommended question
control at lines 1161-1167 with the appropriate click behavior or navigation
target, passing the corresponding concept or question so each click starts or
opens practice instead of doing nothing.
📌 Description
✨ Added AI Interview Question Concept Coverage Map
This PR introduces an interactive concept coverage system that helps candidates understand which interview concepts they have practiced, which are partially covered, and which remain unexplored.
🚀 Features
✅ Checklist
Looks good to me. Ready to merge.