Commit Graph

149 Commits (e22da6ed0bcf7ef6277288ee4fcdd4aa22753db2)

Author SHA1 Message Date
ahmed.mujtaba e22da6ed0b . 2026-09-03 16:13:09 +05:00
ahmed.mujtaba 1133517117 . 2026-09-03 16:03:42 +05:00
ahmed.mujtaba 1399cf3fec Cv_extractor of g_sheet 2026-09-03 15:15:16 +05:00
ahmed.mujtaba 75943cf03f Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into add_range 2026-09-02 17:01:48 +05:00
ahmed.mujtaba a33f4e18fc add pagination inhistory 2026-09-02 17:00:44 +05:00
Talha Ahmed 73ec556f8c Merge origin/main into Talha (history logs, page-size dropdown)
Integrates the Per-page dropdown (10/50/100) with the inbox All option:
All is now a fourth dropdown entry (opt-in via allowAll) instead of a
separate button. Restores what the stale-branch merges on main clobbered
from PR #46: mobile.test.mjs, the test:mobile script and the
puppeteer-core devDependency.
2026-09-02 16:28:25 +05:00
Talha Ahmed 3f06fbeff1 Inbox: All page-size option to show every application unpaged
PageSizeField gains an opt-in All toggle beside the numeric input
(sentinel value all; the input disables while active). Only the
Recruitment Inbox opts in: with All active the fetch omits top/limit,
which /inbox/all-applications and /sheet/form-data/fetch already read
as unpaged (Query(None) -> no LIMIT), so the whole tab renders as one
page for both the Email and Sheet Forms channels. Every other table
keeps its existing paged-only control.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 16:25:05 +05:00
ahmed.mujtaba 63d5232cac added range 2026-09-02 15:58:35 +05:00
ahmed.mujtaba f4c1899d5b Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into add_history_logs 2026-09-02 15:35:35 +05:00
ahmed.mujtaba c7d630875c add history 2026-09-02 15:33:20 +05:00
Talha Ahmed ea43b02b99 Post-merge: Progress screen mobile fixes, register Progress in smoke harness
- .progress-stage-grid gets the same min-width:0 blowout guard as .grid,
  and stacks to one column under 400px (two columns left ~56px for a
  stage label at 320)
- mobile.test.mjs: add the new progress/requisitions routes (27 total)
- __smoke__/entry.jsx: main added the /progress route but never
  registered the Progress screen in the harness map, so the smoke test
  rendered h(undefined) and /progress failed on main itself

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 15:32:23 +05:00
Talha Ahmed 75972d29b2 Merge origin/main into Talha (requisitions, progress screens, ATS order-by) 2026-09-02 15:19:04 +05:00
Talha Ahmed 14c78970bd Mobile responsiveness: fix grid blowouts, calendar clipping, wrapping controls; add viewport test
Audited all 25 routes at 320/375/390/430/768 with browser automation.
Root cause of most overflows: grid items default min-width:auto, so one
wide intrinsic child (a select option, the 620px RBAC matrix) pushed
whole cards past the viewport.

- .grid > * / .rbac-layout > * min-width:0 (CV Import, Interviews,
  Tasks, Access Control card blowouts)
- calendar: minmax(0,1fr) columns — SAT was clipped off-screen at 320
- .seg wraps (Tasks filters), .card-head wraps <=900
- sticky mobile table column: first column (identity), was nth-child(2)
- tooltips display:none until hover + .content overflow-x clip (killed
  a 7px sideways wiggle from invisible tooltip boxes)
- Ask Analytics form: design-system input styling, stacks on phones
- bar/grouped-bar charts thin x labels by slot width (overlap on phones)
- Candidates sort label+select wrap as one unit
- new: mobile.test.mjs + npm run test:mobile (puppeteer-core devDep,
  drives installed Chrome) — fails on sideways scroll or runtime errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 15:18:47 +05:00
ahmed.mujtaba 3ab1dc9117 progress 2026-09-02 13:47:56 +05:00
ahmed.mujtaba b0d280ec86 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Add_ATS_Order_by 2026-09-02 13:45:29 +05:00
ahmed.mujtaba 8c5549a201 Add Progress bar 2026-09-02 13:33:11 +05:00
Talha Ahmed f9fd88c5aa Dashboard redesign: org-wide activity summary with applications-per-job
Backend: new GET /analytics/applications-per-job/fetch (analytics.view) counting
inbox + manual-upload applications per job on the same basis as the funnel, with
zero-application open reqs included. Per-job group-bys added to Inbox_Messages,
Manual_UPLOAD_CANDIDATE; JobPosts.list_open_reqs for the zero-fill.

Frontend: Dashboard rewritten as a filterable summary (Week/Month/Quarter/Year +
department) - My Tasks, Today's Schedule and Quick Actions removed; 8 KPI tiles
(Hires and Offers Sent now shown); Applications per Job hero row-list; pipeline
card refed from /analytics/funnel so it obeys filters; Offer Book, Needs
Attention and Recent Activity cards added. ChartCard and time ranges extracted
to shared modules used by both Dashboard and Analytics.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 22:23:38 +05:00
Talha Ahmed 88b6c96a11 Talent Pool: Export button beside All Departments filter (client-side CSV of filtered grid)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 19:31:22 +05:00
ahmed.mujtaba 9b5c2c8053 . 2026-09-01 18:25:53 +05:00
Talha Ahmed 5a28b35dd9 Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into Talha
Deploy to S3 / deploy (push) Successful in 35s Details
2026-08-31 17:51:37 +05:00
ahmed.mujtaba 42e590e71d . 2026-08-31 17:35:34 +05:00
Talha Ahmed 7e76fb7874 Find Talent: Apify spend tracking + responsive fixes
- talent_runs.cost_usd records each run's actual charge (usageTotalUsd),
  accumulated across the broadened re-run ladder (migration 018).
- GET /talent/account: live balance and cycle spend from Apify
  /users/me/limits (nulls when Apify is unreachable) plus the observed
  $/profile over recorded runs.
- Header shows Balance / Spent / $-per-profile chips that refresh with
  every search; the run status line shows the last search's cost and the
  confirm dialog estimates from the live average.
- Responsive: toolbar controls stack edge-to-edge and candidate card
  footers wrap instead of clipping their buttons on phones.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 17:29:10 +05:00
ahmed.mujtaba 0f6de132f8 make sync visible 2026-08-31 17:03:21 +05:00
ahmed.mujtaba 8380be0d8a recieved time implemented 2026-08-31 15:51:52 +05:00
Talha Ahmed e7907a194e Inbox: responsive fixes for the split layout
- List column yields (34%, floor 280px) instead of holding 420px, so the
  detail pane stays readable in the 980-1200px band.
- Detail pane is a size container: its two-column info grid collapses on
  the pane own width, and long names/emails wrap instead of clipping.
- Tab strip wraps on narrow screens instead of running off-canvas.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 15:22:18 +05:00
Talha Ahmed 629554e6f6 Inbox: do not print raw To-addresses in the source chip
When no job board matches, the chip now says Email instead of the
full address; the address stays in the hover title and the opened
message. Board/referral chips are unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 14:39:48 +05:00
Talha Ahmed 4b93246d43 Find Talent: shortlist sourced profiles for outreach
Manual outreach funnel on talent_profiles (sourced -> shortlisted ->
contacted, one-step undo) tracked per profile with who/when stamps.
New PATCH /talent/profiles/outreach behind talent.edit; Find Talent
screen gains All/Shortlisted/Contacted tabs, a star to shortlist and
a check to record that the recruiter messaged the person on LinkedIn
(the app itself sends nothing). Re-runs never reset outreach state.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 14:34:23 +05:00
ahmed.mujtaba 62491d5f75 added canddiates listing 2026-08-31 13:20:08 +05:00
ahmed.mujtaba eff4c166b3 hide account coloumn 2026-08-31 13:03:29 +05:00
ahmed.mujtaba 56f529afa1 frontend skip logic done 2026-08-31 12:54:24 +05:00
ahmed.mujtaba 31742c2c49 correct sort implemented 2026-08-31 12:42:00 +05:00
ahmed.mujtaba bb056456fc the pipeline and dashboard synced 2026-08-31 00:27:27 +05:00
ahmed.mujtaba 4b84ae4a30 recruiterhub activity improvement 2026-08-30 23:24:00 +05:00
ahmed.mujtaba 9dadcb4698 dropdwon inserted 2026-08-30 22:01:43 +05:00
ahmed.mujtaba fd53730efe add hiring manager added 2026-08-30 21:49:08 +05:00
ahmed.mujtaba 7f3735362e talentpool filter workds 2026-08-30 20:50:06 +05:00
ahmed.mujtaba db176cf672 is approved and file uplaod done 2026-08-28 20:02:38 +05:00
ahmed.mujtaba e4c5ffec20 is_approved, and file_pat aded 2026-08-28 19:36:22 +05:00
ahmed.mujtaba 4e1efa559c frotnedn and bnackend crashing check 2026-08-28 18:22:13 +05:00
ahmed.mujtaba fef9fa827b candidate s3 lkinked 2026-08-28 18:10:28 +05:00
ahmed.mujtaba 617e8bae43 ditrect foirst dirtect last 2026-08-28 16:44:14 +05:00
ahmed.mujtaba b6703f31dc add cout 2026-08-28 16:38:37 +05:00
ahmed.mujtaba a21d7c3eca . 2026-08-28 16:38:04 +05:00
ahmed.mujtaba 4d343c991a . 2026-08-28 16:29:01 +05:00
ahmed.mujtaba 12fa4f87fc Merge branch 'main' of https://git.utopiadeals.com/utopia-ai/HR-ATS-Portal into RELIMIt 2026-08-28 16:28:55 +05:00
ahmed.mujtaba b5d2b05a6d Hiring manager 2026-08-28 15:54:21 +05:00
ahmed.mujtaba 7e07df18ca s3 configured pending testing 2026-08-28 13:32:25 +05:00
ahmed.mujtaba 1ab52b7292 canidate flow 2026-08-27 21:03:06 +05:00
Talha Ahmed 5575a1a6aa UI fixes and job lifecycle actions
Deploy to S3 / deploy (push) Successful in 35s Details
- Jobs list: close/reopen action per requisition with confirm on close
- Settings: real timezone and currency option lists
- Assigned-role chip: readable color pairing on soft background
- Scrollbars: Chromium honors the styled ::-webkit-scrollbar again
  (scrollbar-color now gated to Firefox), slightly wider hit area
- Topbar hamburger: hidden on desktop (specificity fix) and the drawer
  closes itself when the window grows past the mobile breakpoint
- Content scroller: removed overscroll containment that killed wheel
  scrolling everywhere except the scrollbar thumb

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 19:43:24 +05:00
Talha Ahmed 1ae5249d18 CV bank: production-safe file storage + candidates visibility
Deploy to S3 / deploy (push) Successful in 37s Details
The banked PDF now lives IN the database (new cv_bank_files table,
manual migration 010, auto-applied at startup) instead of the container
filesystem, so production redeploys cannot lose a stored CV; upload
writes row + bytes in one commit and creates no disk file at all. New
GET /candidate/cv-bank/file serves the bytes for both download and the
in-app preview.

Per user request, banking a CV with a detectable email also creates or
reactivates the candidate account (same pattern as manual add, no setup
email), so banked people appear on the Candidates screen; a CV without
an email still banks fine, account-less. Existing bank rows were
backfilled locally.

E2E-verified: upload -> bank row + DB bytes + zero disk files, preview
and download served from the DB, candidate visible on the Candidates
screen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 19:38:40 +05:00