Edit_Job_Profile
parent
eaec58bd0e
commit
c233d23c29
|
|
@ -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 { useMemo, useState } from 'react'
|
||||||
import { Link } from 'react-router-dom'
|
import { Link } from 'react-router-dom'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue