Skip to content

feat: add AI interview question concept coverage map - #1732

Open
jainiksha wants to merge 1 commit into
Canopus-Labs:mainfrom
jainiksha:feature/ai-interview-question-concept-coverage-map
Open

feat: add AI interview question concept coverage map#1732
jainiksha wants to merge 1 commit into
Canopus-Labs:mainfrom
jainiksha:feature/ai-interview-question-concept-coverage-map

Conversation

@jainiksha

@jainiksha jainiksha commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

📌 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

  • 🧠 AI-powered concept coverage analysis
  • 🗺️ Interactive concept coverage map
  • 📊 Overall concept coverage score
  • ✅ Practiced concept tracking
  • ⚠️ Partially covered concept detection
  • 🔴 Unexplored concept identification
  • 🎯 Concept mastery levels
  • 🔍 Concept search and filtering
  • 📚 Questions practiced and solved statistics
  • 📈 Concept-wise accuracy tracking
  • 🚨 Knowledge gap detection
  • 💡 AI-recommended questions
  • 🔗 Related concept suggestions
  • 📊 Mastery distribution
  • 📈 Question coverage analysis
  • 📈 Historical concept coverage progress
  • 🧠 Personalized AI recommendations
  • 🎓 Final preparation insight
  • 📱 Responsive design
  • 🌙 Dark mode support

✅ Checklist

  • Added interactive concept coverage map
  • Added concept grouping
  • Added practiced concept tracking
  • Added partially covered concepts
  • Added unexplored concepts
  • Added mastery levels
  • Added concept search
  • Added concept filters
  • Added knowledge gap detection
  • Added recommended questions
  • Added question coverage statistics
  • Added progress tracking
  • Added personalized recommendations
  • Responsive design implemented
  • Dark mode supported
  • Tested locally
  • No breaking changes

Looks good to me. Ready to merge.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added 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.

Changes

AI concept coverage

Layer / File(s) Summary
Coverage data and metrics
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx
The component defines concept and category datasets, interactive state, filtered concepts, aggregate coverage metrics, and presentation helpers.
Coverage overview and concept exploration
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx
The page renders overview metrics, category filters, searchable concept cards, mastery indicators, and selected-concept details.
Knowledge gaps and analysis actions
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx
The page identifies concepts below 60% mastery, displays recommended questions, and provides an analysis button with an 800 ms simulated processing state.
Coverage distributions and preparation insights
frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx
The page renders mastery distributions, question and concept coverage, coverage principles, progress history, personalized recommendations, and a final insight panel.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested labels: level:advanced, quality:exceptional, type:feature, type:design, type:accessibility

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding an AI interview question concept coverage map.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between a8a7be0 and 00a87ad.

📒 Files selected for processing (1)
  • frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx

Comment on lines +107 to +110
name: "Sorting Algorithms",
category: "Algorithms",
mastery: 88,
status: "strong",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 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% as mastered.
  • frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L92-L95: classify 28% as unexplored.
  • frontend/src/pages/AIInterviewQuestionConceptCoverageMap/AIInterviewQuestionConceptCoverageMap.jsx#L137-L140: classify 52% as developing.

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-L95
  • frontend/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.

Comment on lines +505 to +507
<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" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 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.

Comment on lines +968 to +974
<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>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 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 for selectedConcept.
  • 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.

@github-actions github-actions Bot added the merge ready PR is mergeable and has no conflicts label Aug 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge ready PR is mergeable and has no conflicts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant