updates on the ai agents and time series prediction and updates on the api to
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"sort"
|
||||
@@ -11,6 +12,7 @@ import (
|
||||
"doormile/constants"
|
||||
"doormile/db"
|
||||
"doormile/internal/assignment"
|
||||
"doormile/internal/milergeo"
|
||||
"doormile/internal/notify"
|
||||
"doormile/models"
|
||||
"doormile/utils"
|
||||
@@ -153,6 +155,29 @@ func MilerEndDuty(c *fiber.Ctx) error {
|
||||
db.DB.Model(&models.MilerProfile{}).Where("userid = ?", milerUserID).Update("availabilitystatus", constants.MilerOffline)
|
||||
db.DB.Model(&models.AppUser{}).Where("userid = ?", milerUserID).Update("onduty", 0)
|
||||
|
||||
// Take the rider out of the live-position set.
|
||||
//
|
||||
// A GEO member never expires, and nothing used to remove one — so
|
||||
// milers:locations kept every rider who had ever started a shift, frozen
|
||||
// where they last reported. Assignment asks for the TEN NEAREST members,
|
||||
// and riders who finished weeks ago parked near the hub are the closest
|
||||
// members there are: they filled all ten slots, every one was then
|
||||
// discarded by the GPS-freshness check, and the candidate pool collapsed
|
||||
// to whoever survived — often one person, who then received every order in
|
||||
// the city. The balancing below that is correct and powerless; it can only
|
||||
// balance across the pool it is handed.
|
||||
//
|
||||
// Best-effort: the rider IS off duty either way, and the freshness check
|
||||
// still excludes them. This stops them crowding out riders who are on.
|
||||
if db.Rdb != nil {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
||||
if err := milergeo.Remove(ctx, db.Rdb, milerUserID); err != nil {
|
||||
utils.Warn("MilerEndDuty: could not remove the rider from the live-position set",
|
||||
"miler_userid", milerUserID, "error", err)
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
|
||||
return utils.OK(c, fiber.Map{
|
||||
"dutylogid": dutyLog.Dutylogid,
|
||||
"logoutat": dutyLog.Logoutat,
|
||||
|
||||
Reference in New Issue
Block a user