// Package commandcenter computes the Workforce Command Center™ executive dashboard — an org-level, // RLS-scoped, set-based COVERAGE rollup answering "Can we staff this mission today?". It adds NO new // per-candidate scoring; it reuses the engine's clearance ordinals + effective-status rule (via the // mm_lvl_ord/mm_poly_ord SQL functions, locked to the engine by test) and the persisted slate bands. // All math is shopspring/decimal; every aggregate runs inside one tenant transaction. package commandcenter // View is the full GET /api/command-center payload. type View struct { AsOf string `json:"as_of"` OrganizationID string `json:"organization_id"` GeneratedAt string `json:"generated_at"` Meta Meta `json:"meta"` Banner Banner `json:"banner"` MissionReadiness MissionReadiness `json:"mission_readiness"` ActiveOpportunities []Opportunity `json:"active_opportunities"` StaffingGaps []Gap `json:"staffing_gaps"` ClearanceIntelligence ClearanceIntel `json:"clearance_intelligence"` LaborCategoryCoverage []LcatCoverage `json:"labor_category_coverage"` ProposalReadiness ProposalReadiness `json:"proposal_readiness"` WinImpact WinImpact `json:"win_impact"` HeatMap []HeatMetro `json:"heat_map"` AIRecommendations []Recommendation `json:"ai_recommendations"` ActionCenter ActionCenter `json:"action_center"` } type Meta struct { Empty bool `json:"empty"` Notes []string `json:"notes"` } type Banner struct { TotalClearedWorkforce int `json:"total_cleared_workforce"` AvailableCandidates int `json:"available_candidates"` ProposalReadyCandidates int `json:"proposal_ready_candidates"` ActiveRequirements int `json:"active_requirements"` StaffingGaps int `json:"staffing_gaps"` HighRiskOpportunities int `json:"high_risk_opportunities"` } type MissionReadiness struct { Score string `json:"score"` Band string `json:"band"` Status string `json:"status"` Drivers []Driver `json:"drivers"` AvailabilityReqCoverage string `json:"availability_req_coverage"` Flags []string `json:"flags"` } type Driver struct { Key string `json:"key"` Label string `json:"label"` Pct string `json:"pct"` State string `json:"state"` Weight string `json:"weight"` } type Opportunity struct { OpportunityID string `json:"opportunity_id"` Name string `json:"name"` CustomerAgency string `json:"customer_agency,omitempty"` SolicitationNumber string `json:"solicitation_number,omitempty"` DueDate string `json:"due_date,omitempty"` Value *string `json:"value"` ReadinessScore string `json:"readiness_score"` TotalRequirements int `json:"total_requirements"` CoveredRequirements int `json:"covered_requirements"` HeadcountNeeded int `json:"headcount_needed"` HeadcountCovered int `json:"headcount_covered"` KeyPersonnelOpen int `json:"key_personnel_open"` StaffingRisk string `json:"staffing_risk"` StaffingRiskCode string `json:"staffing_risk_code"` } type Gap struct { LaborCategory string `json:"labor_category"` RequiredLevel string `json:"required_level"` RequiredLevelLabel string `json:"required_level_label"` Unmet int `json:"unmet"` BlocksKeyPersonnel bool `json:"blocks_key_personnel"` ImpactedOpportunities []string `json:"impacted_opportunities"` ValueAtRisk *string `json:"value_at_risk"` Headline string `json:"headline"` Recommendation string `json:"recommendation"` } type ClearanceIntel struct { InventoryByLevel []LevelCount `json:"inventory_by_level"` InventoryByPoly []PolyCount `json:"inventory_by_poly"` AvailabilityWindows AvailWindows `json:"availability_windows"` Expiring ExpiringSummary `json:"expiring"` } type LevelCount struct { Level string `json:"level"` Label string `json:"label"` Total int `json:"total"` Available int `json:"available"` } type PolyCount struct { Poly string `json:"poly"` Label string `json:"label"` Total int `json:"total"` Available int `json:"available"` } type AvailWindows struct { Now int `json:"now"` D30 int `json:"d30"` D60 int `json:"d60"` D90 int `json:"d90"` } type ExpiringSummary struct { Expired int `json:"expired"` Due30 int `json:"due_30"` Due60 int `json:"due_60"` Due90 int `json:"due_90"` ReinvestigationOverdue int `json:"reinvestigation_overdue"` Alerts []ExpiryAlert `json:"alerts"` } type ExpiryAlert struct { CandidateID string `json:"candidate_id"` FullName string `json:"full_name"` ClearanceLevel string `json:"clearance_level"` DaysUntilExpiry int `json:"days_until_expiry"` Severity string `json:"severity"` } type LcatCoverage struct { LaborCategory string `json:"labor_category"` Filled int `json:"filled"` Demanded int `json:"demanded"` Coverage string `json:"coverage"` Color string `json:"color"` } type ProposalReadiness struct { Ready int `json:"ready"` AtRisk int `json:"at_risk"` KeyPersonnelMissing int `json:"key_personnel_missing"` LaborCategoriesMissing int `json:"labor_categories_missing"` ReadyOpportunities []OppRef `json:"ready_opportunities"` AtRiskOpportunities []OppRef `json:"at_risk_opportunities"` KeyPersonnelMissingOpportunities []OppRef `json:"key_personnel_missing_opportunities"` LaborCategoriesMissingOpportunities []OppRef `json:"labor_categories_missing_opportunities"` } type OppRef struct { OpportunityID string `json:"opportunity_id"` Name string `json:"name"` } type WinImpact struct { HighImpactCount int `json:"high_impact_count"` Top []WinCandidate `json:"top"` } type WinCandidate struct { CandidateID string `json:"candidate_id"` FullName string `json:"full_name"` ClearanceLevel string `json:"clearance_level"` Poly string `json:"poly"` YearsExperience int `json:"years_experience"` } type HeatMetro struct { Metro string `json:"metro"` Total int `json:"total"` Available int `json:"available"` Cleared int `json:"cleared"` } type Recommendation struct { Severity string `json:"severity"` Message string `json:"message"` ActionTarget string `json:"action_target"` RelatedIDs []string `json:"related_ids"` SourceRef string `json:"source_ref"` } type ActionCenter struct { SuggestedRequirementID *string `json:"suggested_requirement_id"` SuggestedOpportunityID *string `json:"suggested_opportunity_id"` OpenOpportunitiesWithoutSlate int `json:"open_opportunities_without_slate"` RequirementsUnscreened int `json:"requirements_unscreened"` Launch []Launch `json:"launch"` } type Launch struct { Product string `json:"product"` Action string `json:"action"` Label string `json:"label"` Route string `json:"route"` }