Commit graph

10 commits

Author SHA1 Message Date
Tracewebstudio Dev
40e79f2d01 fix: ESLint, SolidJS reactivity bugs, role workflow bug fixes
All checks were successful
build-and-release / build (push) Successful in 2m16s
ESLint:
- Downgrade eslint v10 → v8.57.1 (compatible with @typescript-eslint v7 + eslint-plugin-solid)
- Fix .eslintrc.cjs: remove invalid require() calls, update to valid rule set
- Add npm run lint script

SolidJS solid/prefer-for (18 fixes across 3 files):
- OpportunityGraph.tsx: EDGES.map() → <For> with reactive visible/drawing signals
- PortfolioPage.tsx: services.map() and experience.map() → <For>
- DashboardDesignPreview.tsx: 15 .map() calls → <For> (stats, packages, timeline,
  testimonials, quick actions, step tabs, pills, form fields, status lists, buttons,
  counters, filter tabs)

Role workflow bug fixes (from full role audit):
- cover_letter → cover_note in job applications (field name canonical fix)
- applicant_user_id field name fix in shortlisted candidates
- CompanyApplicationsPage: GET → POST for contact unlock endpoint
- CreditsPage: /payments/history → /payments/invoices; response key data.data
- CreditsPage: holds response key data.data (not data.holds)
- ProfessionalResponsesPage: requirement_id → lead_id, decision_at → resolved_at
- PortfolioPage: data.items → data.data; fix vacuous-truth in form completion check;
  saveProfessionalForm: check res.ok before showing success
- CustomerBrowseProfessionalsPage: professional_role_code → profession_key
- MyDashboardPage: professional prefix split('_')[0] not replace('_','')

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-12 13:38:38 +02:00
Ashwin Kumar Sivakumar
f4b9885974 Add schema-driven verification wizard, replacing per-role hardcoding
All checks were successful
build-and-release / build (push) Successful in 1m42s
Generalizes the COMPANY-only 3-step wizard into RoleWizard, a component
driven entirely by the role's active onboarding_configs schema (fetched
via fetchOnboardingSchemaForRole) rather than hardcoded field/step
lists. Which roles get the wizard, and when, is now a runtime toggle
(enableWizardFlow) set through the new admin schema editor:

- ProfilePage shows the wizard while unverified/sent-back-for-fixes,
  falls back to the existing free-form tabs once approved, and greys
  out (both client- and server-side) any field the schema marks
  lockAfterApproval once approved — previously isLocked() only covered
  the in-review window and unlocked everything again at APPROVED.
- dashboard.tsx hides My Profile/My Portfolio from the sidebar
  pre-approval only for roles that have the wizard enabled (roles not
  yet rolled out keep direct access, so they aren't left with no way to
  complete their profile), and shows a checkmark on the Verification
  nav item once approved.

Rolling out to more roles is now purely an admin-panel config change —
no further code needed, since RoleWizard has no role-specific branches.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 20:10:41 +05:30
Ashwin Kumar Sivakumar
f55a2dad77 feat: AI Credits Admin Panel
Some checks failed
build-and-release / build (push) Failing after 1m6s
- Add AiCreditsAdmin component for managing AI credits
- View user balance with detailed credit breakdown
- Transaction history (ledger) viewer with pagination
- Manual credit adjustment (ADD/DEDUCT) with audit reasons
- Reconcile tab for generating reports
- Integrate with backend /admin/ai-credits endpoints
2026-07-06 01:58:29 +05:30
Tracewebstudio Dev
d7ddd3d9e0 fix(ui): wire and restyle dashboard notifications dropdown 2026-04-29 11:51:37 +02:00
Tracewebstudio Dev
f386b0c298 chore: checkpoint workspace updates 2026-04-26 23:58:43 +02:00
Tracewebstudio Dev
6a4688c854 style: match role dashboard UI to admin solid dashboard - card padding 14px radius 16px, input height 36px, label 11px uppercase, tab underline style, title 18px #111827 2026-04-22 01:26:36 +02:00
Tracewebstudio Dev
fe81ce54c7 feat: add floating AI chat widget to all pages
- Add AiChatWidget component with floating button in bottom-right
- Routes to /api/ai/chat/message for chat, ticket, form, cover letter intents
- Quick action buttons for common tasks
- Appears on all public pages via app.tsx root layout
- Appears on all dashboard pages via DashboardShell
2026-04-15 20:03:47 +02:00
Ashwin Kumar
30750f3797 docs: clarify real data implementations are wired to backend APIs
All job seeker pages are already connected to real APIs:
- Jobs: /api/jobseeker/jobs (real company job postings)
- Applications: /api/jobseeker/applications (my applied jobs)
- Saved Jobs: Custom data storage for bookmarked jobs
- Apply: POST /api/jobseeker/jobs/{id}/apply

Dashboard shows real data from backend, not mock preview.
2026-04-10 01:21:36 +02:00
Ashwin Kumar
eee2c367ca feat: add notification bell polling to dashboard shell
- Poll /api/me/notifications/unread-count every 30 seconds
- Show orange dot badge when unread count > 0
- Matches PRD requirement for real-time notifications
2026-04-06 18:23:12 +02:00
Ashwin Kumar
bbf11b91e1 feat(dashboard): real My Profile, My Portfolio, Verification pages
- DashboardShell: sticky sidebar + header wrapper with shared style tokens
- ProfilePage: 3-tab form (Basic, Documents, Settings) per role, save/submit-for-verification
- PortfolioPage: full CRUD wired to /api/:prefix/portfolio/me endpoints
- VerificationStatusPage: 7-state status display with progress timeline and resubmit flow
- dashboard.tsx: REAL_PAGES routing intercepts these three sidebar items and renders
  real components instead of DashboardDesignPreview mock

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 17:20:48 +02:00