add reconcile function, loud log multiple reps per dept
This commit is contained in:
parent
9ef2d7689d
commit
64ae38e11c
2 changed files with 41 additions and 6 deletions
41
reconcile.go
Normal file
41
reconcile.go
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
)
|
||||
|
||||
func (s *Server) reconcile(ctx context.Context, runID int64, rep *User, dept string) error {
|
||||
reps, err := s.store.RepsFor(rep.ChapterID, dept)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(reps) == 0 {
|
||||
// Shouldn't happen: the webhook fired for a rep in this department.
|
||||
log.Printf("run %d: no reps found for chapter %d dept %q", runID, rep.ChapterID, dept)
|
||||
return nil
|
||||
}
|
||||
if len(reps) > 1 {
|
||||
log.Printf("WARNING: run %d: %d reps for chapter %d dept %q; assigning all to %d (fill-only mode)",
|
||||
runID, len(reps), rep.ChapterID, dept, reps[0])
|
||||
}
|
||||
agent := reps[0]
|
||||
|
||||
members, err := s.store.EligibleMembers(rep.ChapterID, dept)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
assigned, skipped := 0, 0
|
||||
for _, m := range members {
|
||||
// ... ActiveAgent check, AssignAgent or skip
|
||||
}
|
||||
|
||||
if assigned == 0 && skipped > 0 {
|
||||
log.Printf("WARNING: run %d: assigned nobody; all %d members already have agents",
|
||||
runID, skipped)
|
||||
}
|
||||
log.Printf("run %d: %d assigned, %d skipped, dept %q chapter %d",
|
||||
runID, assigned, skipped, dept, rep.ChapterID)
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue