Grille : les candidats sont classés par score de chance, pas par charge
Dans le panneau d'affectation, la liste des candidats d'un créneau n'était triée que par disponibilité puis par nombre d'heures déjà assignées — les vœux n'y jouaient aucun rôle tant qu'on ne cliquait pas sur « Suggestions (solveur) ». Nouveau `candidateChanceScore` (`lib/planning.ts`), portage local et synchrone du scoring du solveur : vœu de poste (bonus), disponibilité déclarée y compris conflit avec un artiste souhaité (malus), charge déjà assignée (malus). C'est ce score qui classe désormais la liste par défaut, dès l'ouverture du détail d'un poste — sans requête réseau ni clic sur le solveur. Si celui-ci a effectivement tourné, ses candidats retenus (vraie optimisation jointe) restent prioritaires en tête. Chaque candidat affiche maintenant, en plus de sa disponibilité, des badges « Vœu de poste » et « Manquerait un artiste souhaité » quand applicable — pour que le classement reste lisible. typecheck / lint / build / smoke au vert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
282be85498
commit
55f634e25b
@@ -171,6 +171,7 @@ export function GrillePage() {
|
||||
<aside className="max-h-[calc(100vh-118px)] w-[392px] flex-none overflow-auto border-l-[3px] border-ink bg-paper">
|
||||
{selected ? (
|
||||
<AssignmentPanel
|
||||
positionId={selected.position.id}
|
||||
positionName={selected.position.name}
|
||||
positionLocation={selected.position.location}
|
||||
positionCategory={selected.position.category}
|
||||
|
||||
Reference in New Issue
Block a user