From c233d23c2950ae20e1a708c944e71d1a9f7042f2 Mon Sep 17 00:00:00 2001 From: "ahmed.mujtaba" Date: Tue, 15 Sep 2026 18:02:14 +0500 Subject: [PATCH] . --- frontend/src/screens/RecruiterHub.jsx | 31 --------------------------- 1 file changed, 31 deletions(-) diff --git a/frontend/src/screens/RecruiterHub.jsx b/frontend/src/screens/RecruiterHub.jsx index 61d8f54..33d9f8e 100644 --- a/frontend/src/screens/RecruiterHub.jsx +++ b/frontend/src/screens/RecruiterHub.jsx @@ -1,35 +1,4 @@ -/* ============================================================ - Recruiter Hub — live, by pointing every analytics endpoint at one recruiter. - The trick that makes this screen real: /analytics/kpis, /hiring-trend and - /funnel all take a `recruiter_id`, so selecting a recruiter re-scopes the - whole page server-side rather than filtering a client-side array. The - recruiter list itself is /analytics/recruiter-performance, which is also the - leaderboard. - - TEN OF THE PROTOTYPE'S EIGHTEEN TILES ARE GONE. workload %, efficiency %, SLA - state, interview completion %, avg response time, TAT %, star rating, jobs - awaiting approval and jobs overdue have no column, no table and in most cases - no concept behind them — there is no approval workflow and no requisition - deadline in the schema. They were random numbers re-rolled on every render. - What replaced them is derived from real counts and labelled as such: - conversion rate is hires ÷ candidates, offer acceptance is accepted ÷ sent. - - The workload heatmap survived because interviews are real: it buckets - /interview/fetch over the last five weeks by weekday. It is TEAM-WIDE, not - per recruiter — the interviews table has no recruiter column — and the card - says so rather than implying the selected person owns all of it. - - Tasks belong here too: GET /tasks/fetch?assignee_id= the selected recruiter - is the worklist the prototype filed under Recruiter Hub. Completing a row - writes the same /tasks/update the Tasks screen uses, so the two stay in - sync. Hidden without tasks.view; the rest of the hub still loads. - - Interviews Today / upcoming / the heatmap join interviews → job_posts via - COALESCE(interviews.job_post_id, inbox_messages.assigned_job_post_id) and - filter on current_recruiter_id. The leaderboard ranks by completed - requisitions (requisition_status=completed), not inbox hires. - ============================================================ */ import { useMemo, useState } from 'react' import { Link } from 'react-router-dom'