Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/missionmatch / frontend/src/lib/queries.ts |
| Date | Not specified in source |
| Repository | Janady13/missionmatch |
| Revision | 09015496d565a172bcaa15cfe9a8e4b072b13df0 |
| Branch | workstream-b-screenmatch |
| Path or archive member | frontend/src/lib/queries.ts |
| Original SHA-256 | 37dd95c302b631f6103969954013925bde1082187db0bd17725f8d0239704381 |
| Git blob SHA | 51d61d4621c1ae945bfb6e1b037ebd6441cd5764 |
| Reading-copy SHA-256 | 37dd95c302b631f6103969954013925bde1082187db0bd17725f8d0239704381 |
Every recorded occurrence
These 9 records contain identical original source bytes. Their paths and revisions remain part of the archive.
| Original record | Branch or archive | Revision / identifier | Original location |
|---|---|---|---|
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-b-screenmatch | 09015496d565a172bcaa15cfe9a8e4b072b13df0 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-d-command-center | 255e7d1d420abf5e277d0cd8c9b14f6f72b6acb9 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-e-commercial-stubs | 4437da660539284a400ee380b9b427a300c369ee | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ruthless-debug-sweep | b7d742f8f032984be3817efffa3eb8b13b651c1f | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-a-shared-core | e0de03ac3a1ec826bd15d0e048e3b02baa23eeff | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-d-command-center | 255e7d1d420abf5e277d0cd8c9b14f6f72b6acb9 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ruthless-debug-sweep | b7d742f8f032984be3817efffa3eb8b13b651c1f | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-b-screenmatch | 09015496d565a172bcaa15cfe9a8e4b072b13df0 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | workstream-e-commercial-stubs | 4437da660539284a400ee380b9b427a300c369ee | Open original |
Recovered source transcript
Download complete source text ↓156 lines · 5.0 KB
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { api } from './api'
import type { AdoptForecastInput, OpportunityFilters, SaveCandidateRequest } from './types'
export function useCandidates() {
return useQuery({ queryKey: ['candidates'], queryFn: api.candidates })
}
export function useCandidateIntelligence() {
return useQuery({ queryKey: ['candidate-intelligence'], queryFn: () => api.candidateIntelligence() })
}
export function useRequirements() {
return useQuery({ queryKey: ['requirements'], queryFn: api.requirements })
}
// Single candidate or requirement by id, so a deep linked evaluation resolves the row directly instead
// of scanning the first list page (which silently rendered blank when the row was paged out).
export function useCandidate(id: string | null) {
return useQuery({
queryKey: ['candidate', id],
queryFn: () => api.candidate(id as string),
enabled: !!id,
})
}
export function useRequirement(id: string | null) {
return useQuery({
queryKey: ['requirement', id],
queryFn: () => api.requirement(id as string),
enabled: !!id,
})
}
export function useOpportunities(candidateId: string | null) {
return useQuery({
queryKey: ['opportunities', candidateId],
queryFn: () => api.opportunities(candidateId as string),
enabled: !!candidateId,
})
}
export function useRankedCandidates(requirementId: string | null) {
return useQuery({
queryKey: ['ranked', requirementId],
queryFn: () => api.rankCandidates(requirementId as string),
enabled: !!requirementId,
})
}
export function useCommandCenter() {
return useQuery({ queryKey: ['command-center'], queryFn: api.commandCenter })
}
// useAdoptForecast turns a forecast into a requirement, then refreshes the dashboard so the new
// requirement flows through the shared engine into coverage and readiness.
export function useAdoptForecast() {
const qc = useQueryClient()
return useMutation({
mutationFn: ({ recordID, input }: { recordID: string; input: AdoptForecastInput }) =>
api.adoptForecast(recordID, input),
onSuccess: () => qc.invalidateQueries({ queryKey: ['command-center'] }),
})
}
export function useSamOpportunities(filters: OpportunityFilters) {
return useQuery({
queryKey: ['sam-opportunities', filters],
queryFn: () => api.samOpportunities(filters),
})
}
export function useIncumbents(naics: string | null) {
return useQuery({
queryKey: ['incumbents', naics],
queryFn: () => api.incumbents(naics as string),
enabled: !!naics,
})
}
export function useGalapagosAwards() {
return useQuery({ queryKey: ['galapagos-awards'], queryFn: api.galapagosAwards })
}
export function useWages() {
return useQuery({ queryKey: ['wages'], queryFn: api.wages })
}
export function useExternalCandidates() {
return useQuery({ queryKey: ['external-candidates'], queryFn: api.externalCandidates })
}
export function useDeleteExternalCandidate() {
const qc = useQueryClient()
return useMutation({
mutationFn: (id: string) => api.deleteExternalCandidate(id),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['external-candidates'] })
qc.invalidateQueries({ queryKey: ['candidate-intelligence'] })
},
})
}
export function useScreen() {
return useMutation({
mutationFn: (v: { candidateId: string; requirementId: string }) =>
api.screen(v.candidateId, v.requirementId),
})
}
// Mission Check (W1) mutations. Nothing is cached on the scoring paths because nothing is stored; the
// resume text is passed in and the result is shown once. Save Candidate invalidates the candidate lists.
export function useMissionCheckOpportunities() {
return useMutation({
mutationFn: (v: { text: string; limit?: number }) =>
api.missionCheckOpportunities(v.text, v.limit),
})
}
export function useMissionCheckJD() {
return useMutation({
mutationFn: (v: { resume: string; jd: string }) => api.missionCheckJD(v.resume, v.jd),
})
}
export function useSaveCandidate() {
const qc = useQueryClient()
return useMutation({
mutationFn: (v: SaveCandidateRequest) => api.saveCandidate(v),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['candidates'] })
qc.invalidateQueries({ queryKey: ['candidate-intelligence'] })
},
})
}
export function useGenerateSlate() {
return useMutation({
mutationFn: (v: { requirementId: string; name: string }) =>
api.generateSlate(v.requirementId, v.name),
})
}
// useDecideSlateMember records the human in the loop approve or reject on a slate member.
export function useDecideSlateMember() {
return useMutation({
mutationFn: (v: { slateId: string; candidateId: string; decision: 'approved' | 'rejected' }) =>
api.decideSlateMember(v.slateId, v.candidateId, v.decision),
})
}
// useAdverseImpact loads the four fifths adverse impact report (compliance role only).
export function useAdverseImpact() {
return useQuery({ queryKey: ['adverse-impact'], queryFn: api.adverseImpact, retry: false })
}