// Package slatematch is the slateMATCH tool router: proposal slates over the SHARED scoring core. It // generates a ranked slate, records the human approve or reject of each member with an optional note, // rolls up proposal readiness, and exports a branded candidate slate. It is a thin HTTP namespace over // internal/modules/matching and never re implements scoring, so a member's score here equals the same // candidate's score in screenMATCH and missionMATCH. The same core handlers also serve the flat alias // paths (POST /slates/generate and friends), so the pre split URLs keep working while the canonical // paths move under /api/slatematch. package slatematch import ( "github.com/go-chi/chi/v5" "github.com/missionworkforce/missionmatch/internal/modules/matching" ) // Handler mounts the slateMATCH endpoints. It holds the shared matching handler so the namespace and // the flat aliases share exactly one implementation and one engine. type Handler struct{ core *matching.Handler } // NewHandler builds the slateMATCH router over the shared matching handler. func NewHandler(core *matching.Handler) *Handler { return &Handler{core: core} } // Routes registers the slateMATCH namespace under the caller's mount point: slate generation, the per // member human decision, the detail and readiness reads, the branded export, plus the shared candidate // and requirement pickers the tool needs to choose a target. func (h *Handler) Routes(r chi.Router) { h.core.SlateRoutes(r) h.core.ReadRoutes(r) }