image search
This commit is contained in:
@@ -47,8 +47,13 @@ const (
|
||||
scanLookupTimeout = 5 * time.Second
|
||||
scanMaxLabelLen = 200
|
||||
scanCatalogueTopK = 15
|
||||
// Below this the best hit is not shown as a match at all.
|
||||
scanMinScore = 0.30
|
||||
// Below this the best hit is not shown as a match at all. A correct label
|
||||
// scores ~0.92 against its own product's vector and ~0.23 against an
|
||||
// unrelated one, so the floor sits in the empty middle of that split
|
||||
// rather than just above the unrelated band: at 0.30, "Paracetamol"
|
||||
// came back as "Paneer Makhni 500ml" (0.304) — a near-miss on an
|
||||
// unrelated row clears a floor set that close to the noise.
|
||||
scanMinScore = 0.50
|
||||
)
|
||||
|
||||
// ScanErrors the controller maps to statuses. Everything else is a 500.
|
||||
@@ -241,6 +246,14 @@ func (s *scanService) Confirm(ctx context.Context, req models.ScanConfirmRequest
|
||||
}
|
||||
resp.Store = chosen
|
||||
|
||||
// Distance on the store they tapped, for every outcome and not just the
|
||||
// out-of-stock one below: the app renders this store from the reply it
|
||||
// gets. The phone's fix is free to parse; the saved address costs a
|
||||
// query, so it is only reached for on the path that also ranks other
|
||||
// outlets. Without either, distanceKm leaves the -1 the repository set.
|
||||
lat, lng, hasPos := utils.ParseLatLng(string(req.Latitude), string(req.Longitude))
|
||||
chosen.DistanceKm = distanceKm(*chosen, lat, lng, hasPos)
|
||||
|
||||
row, err := s.repo.ProductAt(ctx, req.Tenantid, req.Locationid, req.Productid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -268,10 +281,10 @@ func (s *scanService) Confirm(ctx context.Context, req models.ScanConfirmRequest
|
||||
}
|
||||
|
||||
// The same product elsewhere, nearest first, with enough of it.
|
||||
lat, lng, hasPos := utils.ParseLatLng(string(req.Latitude), string(req.Longitude))
|
||||
if !hasPos {
|
||||
if hl, hg, ok, err := s.repo.CustomerHome(ctx, req.Customerid); err == nil && ok {
|
||||
lat, lng, hasPos = hl, hg, true
|
||||
chosen.DistanceKm = distanceKm(*chosen, lat, lng, hasPos)
|
||||
}
|
||||
}
|
||||
others := make([]models.ScanStore, 0, len(stores))
|
||||
|
||||
Reference in New Issue
Block a user