Commit Graph

7 Commits (8ada794b29eb9d19868507debdcf51bee5e2837e)

Author SHA1 Message Date
Talha Ahmed 8ada794b29 Merge origin/main (PR #10: manual candidate upload) into Talha
Conflict resolutions:
- backend/job/app.py: dropped duplicate pydantic import (already present below)
- backend/job/candidate/views.py: union of both sides — kept Talha's
  _recommendation/_scores_by_message helpers alongside main's manual-upload
  create_candidate, merged import lists and module-level config
- frontend/src/lib/apiClient.js: both sides made the same FormData fix;
  kept main's version that reuses the shared multipart const
- frontend/src/screens/Candidates.jsx: kept Talha's live-data screen and
  ported main's AddCandidate modal onto it — server POST via
  candidatesApi.createManual with live job posts, seed-shaped buildRow
  replaced by a candidates query invalidation; seed-only BulkAssign dropped

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 16:08:42 +05:00
ahmed.mujtaba 84daea9efe /candidates completed with manual upload 2026-08-12 13:33:35 +05:00
Talha Ahmed eb95d7a2c0 Merge origin/main (PR #9: interviews, notes, activity, feedback + job matching) into Talha
Union resolution, same policy as the previous merge — both feature sets kept:

- app.py: scoring routes kept; main's richer GET /job/fetch (search/top/skip/ids)
  adopted, with the dual JOB_BOARD_VIEW-or-CANDIDATES_VIEW permission restored so
  recruiters with only candidate rights keep the CV Import job picker.
- candidate/models.py: Candidates (scoring) coexists with main's new Interviews,
  Notes, Activity, Feedback models.
- candidate/serializers.py: serialize_candidate kept alongside main's
  detail-mode serialize_candidate_profile.
- CandidateProfile.jsx: main's rich tabbed profile (interviews/notes/feedback/
  activity) is now THE CandidateProfile, used by TalentPool; the scored-CV modal
  moved to ScoredCandidateProfile.jsx, used by Candidates.jsx. The two payload
  shapes share almost no fields, hence two components.

Backend imports verified; frontend builds clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 19:10:45 +05:00
ahmed.mujtaba a81107cb96 frontend integrated 2026-08-11 18:19:30 +05:00
Talha Ahmed 927cb37672 Merge origin/main (talent pool API + user-candidate linking) into Talha
Both sides had rewritten the candidate surface, so the merge keeps the two
features side by side instead of picking one:

- GET /candidate/fetch stays main's paginated inbox-profile listing
  (CandidateView); the scoring leaderboard moved to GET /candidate/scored/fetch
  and the frontend listCandidates() now points there.
- backend candidate views/serializers keep both CandidateScoring and
  CandidateView, serialize_candidate and serialize_candidate_profile.
- Candidates.jsx stays the scored table (Talha); TalentPool.jsx takes main's
  profile card grid; AtsMatch is exported from Candidates for TalentPool's
  modal and tolerates a missing jobTitle.
- CandidateProfile hides the Scored/Failed badge for rows that were never
  scored (talent-pool profiles).
- queryKeys.js: dropped a duplicated candidates block the auto-merge produced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 16:16:25 +05:00
ahmed.mujtaba 54c39946d3 /talentpool integatrted 2026-08-11 13:43:21 +05:00
Talha Ahmed 9ffa1ef673 Phase 2: wire frontend candidate screens to the real scoring API
Backend: GET /job/fetch (active job posts, job-board OR candidate viewers) and
/candidate/fetch now works unscoped for the cross-job pool. Frontend: apiClient
gains FormData support; new api/candidates.js with a shared snake->camel view
mapper; CvImport is a real upload->score flow (job selector, PDF multipart to
/candidate/score, per-file results, no more simulation); TalentPool and
Candidates render the persisted pool with job/skill/source/ATS filters; the ATS
modal shows the real critique and matched/missing skills; CandidateProfile
keeps only tabs the backend can back. Screens hide affordances with no backing
column instead of rendering placeholders (Inbox precedent).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 22:27:20 +05:00