feat: Job Hunt#40
Merged
Merged
Conversation
First two trains for the JobHunt sample. AddJob validates input (URL or pasted fields, not both) and persists a Job entity. ListJobs queries by user with optional status filter. 41 tests total (26 unit, 15 E2E).
Profile trains (GetProfile, UpdateProfile) store skills, education, and work history as JSON arrays per user. IJobScraper abstraction with GenericHtmlScraper extracts job data from JSON-LD, OpenGraph, or plain HTML. AddJob train now scrapes the URL when no pasted fields are provided. 70 tests (51 unit, 19 E2E).
OllamaLlmProvider calls local Ollama to generate tailored resumes and cover letters. GenerateApplicationMaterials train chains four junctions: load job+profile context, generate resume, generate cover letter, persist artifacts. GetArtifacts query train reads them back. E2E tests inject a stub LLM provider for determinism. 82 tests (60 unit, 22 E2E).
Scheduler wired with a MonitorAllActiveJobs manifest running every 24h. The wrapper train fans out via ITrainBus to MonitorJobTrain for each active job with a URL. MonitorJobTrain refetches, hashes, diffs against the last snapshot, and closes the job on 404. JobSnapshot entity tracks change history. 91 tests (67 unit, 24 E2E).
JobHuntLifecycleHook publishes events to HotChocolate subscription topics
when trains complete: User:{userId}:jobs, Job:{jobId}:materials,
Job:{jobId}:monitor, User:{userId}:notifications. Four subscription
endpoints wired via JobHuntSubscriptions. Added userId to AddJobOutput
so the hook can route events per-user. 96 tests (72 unit, 24 E2E).
…ractions Contact, Application, EmailDraft, EmailSent entities with migration. IContactEnrichmentProvider (ManualContactProvider) and IEmailSender (StubEmailSender) provider abstractions. CreateApplication, ListApplications, and FindContact trains. 101 tests (74 unit, 27 E2E).
WatchedCompany entity, WatchCompany and ListWatchedCompanies trains, MonitorAllWatchedCompanies scheduled manifest (every 6h) that scrapes each watched company's careers page and updates the fingerprint. Second manifest alongside MonitorAllActiveJobs. 105 tests (75 unit, 30 E2E).
Vite + React + TypeScript + Tailwind app with urql GraphQL client and WebSocket subscription support. Pages: dashboard with stats, job list + add + detail, profile editor with JSON facets, application kanban board, and watched companies CRUD. Sidebar layout with user switcher (fake API key auth) and link to Trax dashboard. Vite proxy forwards /trax to the Hub backend.
|
This PR is included in version 1.21.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.