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 | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 |
| Branch | master |
| Path or archive member | frontend/src/lib/queries.ts |
| Original SHA-256 | 8d67561e789194691ac9fcf6b6c185153fe9f6c2284be9c6cc45af62fcf5e140 |
| Git blob SHA | f2dae13dafdbfa1fb2af7c29ee598aebb41d099c |
| Reading-copy SHA-256 | 8d67561e789194691ac9fcf6b6c185153fe9f6c2284be9c6cc45af62fcf5e140 |
Every recorded occurrence
These 23 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 | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | vendor-intelligence | fe9796a19c261951d3f2565206c0c1b5ac294465 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / frontend/src/lib/queries.ts | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
Recovered source transcript
Download complete source text ↓153 lines · 5.1 KB
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { api } from './api'
import type { OpportunityFilters, SaveCandidateRequest } from './types'
export function useCandidates() {
return useQuery({ queryKey: ['candidates'], queryFn: api.candidates })
}
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,
})
}
// The Command Center, candidate intelligence, and adopt forecast moved to the missionMATCH tool module
// (tools/missionmatch), which calls its own /api/missionmatch namespace client.
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'] })
},
})
}
// Slate generation and the human in the loop decision moved to the slateMATCH tool module
// (tools/slatematch), which calls its own /api/slatematch namespace client and sends the reviewer note.
// useAdverseImpact loads the four fifths adverse impact report (compliance role only).
export function useAdverseImpact() {
return useQuery({ queryKey: ['adverse-impact'], queryFn: api.adverseImpact, retry: false })
}
// useCurationProposals loads the pending WS8 teaching curation proposals (compliance or operator role only).
export function useCurationProposals() {
return useQuery({ queryKey: ['curation-proposals'], queryFn: api.curationProposals, retry: false })
}
// useApproveCurationProposal is the FIRST human step: it stages an inert ontology edge. It never changes a
// score on its own. On success the pending list is refreshed.
export function useApproveCurationProposal() {
const qc = useQueryClient()
return useMutation({
mutationFn: (id: string) => api.approveCurationProposal(id),
onSuccess: () => qc.invalidateQueries({ queryKey: ['curation-proposals'] }),
})
}
// useVerifyCurationProposal is the SECOND, distinct human step: it activates the staged edge for future
// scores. On success the pending list is refreshed.
export function useVerifyCurationProposal() {
const qc = useQueryClient()
return useMutation({
mutationFn: (id: string) => api.verifyCurationProposal(id),
onSuccess: () => qc.invalidateQueries({ queryKey: ['curation-proposals'] }),
})
}