Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/missionmatch / internal/modules/recruiting/pipeline_dto.go |
| Date | Not specified in source |
| Repository | Janady13/missionmatch |
| Revision | 720d47fae476b0d38477ae4401697d372b1ea2bc |
| Branch | feature/opportunity-to-outcome |
| Path or archive member | internal/modules/recruiting/pipeline_dto.go |
| Original SHA-256 | cb45e3a7986d4c45421953025e68da1222cea3bcaa6ae186e19bb0680973c585 |
| Git blob SHA | 5097c2b50d7df33096915c55f61d475c9b2ef281 |
| Reading-copy SHA-256 | cb45e3a7986d4c45421953025e68da1222cea3bcaa6ae186e19bb0680973c585 |
Every recorded occurrence
These 2 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 / internal/modules/recruiting/pipeline_dto.go | feature/opportunity-to-outcome | 720d47fae476b0d38477ae4401697d372b1ea2bc | Open original |
| Janady13/missionmatch / internal/modules/recruiting/pipeline_dto.go | feature/aioe-upgrade | 2178e7298d0e5d9af83afa12402fd587f0ba6ed8 | Open original |
Recovered source transcript
Download complete source text ↓140 lines · 5.5 KB
package recruiting
// Application is one candidate considered for one job order. The junction the product never had.
//
// Clearance appears here as it does everywhere in this product: a self reported indicator, never a
// verified status. The hiring client's FSO verifies through DISS at onboarding.
type Application struct {
ID string `json:"id"`
RequisitionID string `json:"requisition_id"`
RequisitionTitle string `json:"requisition_title,omitempty"`
ClientName string `json:"client_name,omitempty"`
CandidateID string `json:"candidate_id"`
CandidateName string `json:"candidate_name"`
// Clearance intelligence carried on the row so the board can show a gap without a second query.
ClearanceLevel string `json:"clearance_level"`
Available bool `json:"available"`
Stage string `json:"stage"`
StageLabel string `json:"stage_label"`
// FurthestStage is the high water mark. It is what the funnel counts, and it never decreases, so a
// candidate rejected at interview is still counted as having reached interview.
FurthestStage string `json:"furthest_stage"`
FurthestStageLabel string `json:"furthest_stage_label"`
DispositionCode string `json:"disposition_code,omitempty"`
DispositionReason string `json:"disposition_reason,omitempty"`
OwnerUserID string `json:"owner_user_id,omitempty"`
OwnerName string `json:"owner_name,omitempty"`
SourceFirstTouch string `json:"source_first_touch,omitempty"`
SourceLastTouch string `json:"source_last_touch,omitempty"`
StageChangedAt string `json:"stage_changed_at"`
DaysInStage float64 `json:"days_in_stage"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
// StageEvent is one movement through the pipeline. Append only.
type StageEvent struct {
ID string `json:"id"`
FromStage string `json:"from_stage,omitempty"`
FromStageLabel string `json:"from_stage_label,omitempty"`
ToStage string `json:"to_stage"`
ToStageLabel string `json:"to_stage_label"`
DaysInFrom float64 `json:"days_in_from"`
Reason string `json:"reason,omitempty"`
DispositionCode string `json:"disposition_code,omitempty"`
ActorUserID string `json:"actor_user_id,omitempty"`
ActorName string `json:"actor_name,omitempty"`
OccurredAt string `json:"occurred_at"`
}
type ApplicationDetail struct {
Application
Events []StageEvent `json:"events"`
}
// FunnelStage is one rung. Count is how many applications EVER reached this rung or beyond, which is
// what makes the series monotone.
type FunnelStage struct {
Stage string `json:"stage"`
Label string `json:"label"`
Count int `json:"count"`
Pct string `json:"pct"`
}
// Conversion is the share of applications reaching one rung that went on to reach the next.
type Conversion struct {
From string `json:"from"`
To string `json:"to"`
FromLabel string `json:"from_label"`
ToLabel string `json:"to_label"`
Rate string `json:"rate"`
}
// DispositionBreakdown groups terminal outcomes by coded reason. This is the shape an adverse impact
// review needs, and the reason the code vocabulary is closed.
type DispositionBreakdown struct {
Code string `json:"code"`
Stage string `json:"stage"`
Count int `json:"count"`
Pct string `json:"pct"`
}
// PipelineBoard is one requisition's pipeline: the applications grouped by stage, the funnel computed
// from high water marks, and the conversion between rungs.
type PipelineBoard struct {
RequisitionID string `json:"requisition_id"`
RequisitionTitle string `json:"requisition_title"`
Openings int `json:"openings"`
Placed int `json:"placed"`
// SeatsLeft is openings minus placed and can never be negative, because the database refuses a
// placement beyond the last seat.
SeatsLeft int `json:"seats_left"`
Total int `json:"total"`
Active int `json:"active"`
Columns []StageColumn `json:"columns"`
Funnel []FunnelStage `json:"funnel"`
Conversion []Conversion `json:"conversion"`
Dispositions []DispositionBreakdown `json:"dispositions"`
}
// StageColumn is one column of the board: the applications sitting in that stage right now. Distinct
// from the funnel, which counts everyone who ever reached it.
type StageColumn struct {
Stage string `json:"stage"`
Label string `json:"label"`
Count int `json:"count"`
Applications []Application `json:"applications"`
}
// CreateApplicationInput submits a candidate to a job order.
type CreateApplicationInput struct {
CandidateID string `json:"candidate_id"`
// Stage lets a recruiter enter a known candidate straight at submitted rather than walking them up
// from sourced. Defaults to sourced.
Stage string `json:"stage"`
SourceTouch string `json:"source_touch"`
Reason string `json:"reason"`
}
// MoveStageInput moves an application. ExpectedStage is the concurrency token: the database refuses the
// write if the application is not where the caller thought it was, which is why a stage move needs no
// updated_at.
type MoveStageInput struct {
ExpectedStage string `json:"expected_stage"`
ToStage string `json:"to_stage"`
Reason string `json:"reason"`
DispositionCode string `json:"disposition_code"`
}
type ApplicationList struct {
Applications []Application `json:"applications"`
Limit int `json:"limit"`
Offset int `json:"offset"`
Total int `json:"total"`
}