From 2cf9e20608e86171ba284dc47ad8b119d7c78a28 Mon Sep 17 00:00:00 2001 From: Vladimir Zagainov Date: Tue, 18 Aug 2026 13:30:11 +0300 Subject: [PATCH] fix: address code review findings --- internal/routing/graph.go | 41 ++++++++++----------------------------- internal/yandex/client.go | 5 ++--- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/internal/routing/graph.go b/internal/routing/graph.go index 5ec7e25..ad80c32 100644 --- a/internal/routing/graph.go +++ b/internal/routing/graph.go @@ -418,21 +418,21 @@ func (g *Graph) FindRoute(originID, destID string, opts SearchOptions, closedSta newDurationWithMCT := newDuration + transferTime - // Check if we've visited this node with fewer transfers - visKey := nextNode.ID - if existingTransfers, ok := visited[visKey]; ok { - if current.transfers+1 > existingTransfers { - // Already visited this node with fewer transfers, skip - continue - } - } - visited[visKey] = current.transfers + 1 - newTransfers := current.transfers if edge.IsTransfer { newTransfers++ } + // Check if we've visited this node with fewer transfers + visKey := nextNode.ID + if existingTransfers, ok := visited[visKey]; ok { + if newTransfers > existingTransfers { + // Already visited this node with fewer transfers, skip + continue + } + } + visited[visKey] = newTransfers + // Build new itinerary legs newLegs := make([]RouteLeg, len(current.itinerary.Legs)+1) copy(newLegs, current.itinerary.Legs) @@ -831,27 +831,6 @@ func (g *Graph) ApplyMCT(itinerary *Itinerary, mctBase int) *Itinerary { // Add the MCT to the total duration (as waiting time at transfer) totalMCT += mct - } - - // Update leg durations to include MCT for transfer legs - for i := 1; i < len(adjustedLegs); i++ { - prevLeg := &adjustedLegs[i-1] - currLeg := &adjustedLegs[i] - - // Determine MCT based on node types and transfer kinds - mct := mctBase - - // Reduce MCT for city hub transfers (the transfer point node is a city) - // The transfer point is the destination of the previous leg / start of current leg - transferPoint := prevLeg.To // = currLeg.From - if transferPoint.Type == NodeTypeCity { - mct = mctBase / 2 // 30 min -> 15 min for city hub transfers - } - - // Increase MCT for mode changes (different transport types) - if prevLeg.Transport != currLeg.Transport { - mct = mctBase + 600 // 30 min + 10 min for mode change - } // Add MCT to the current leg's duration (transfer wait time) adjustedLegs[i].Duration += mct diff --git a/internal/yandex/client.go b/internal/yandex/client.go index d84eb11..8710964 100644 --- a/internal/yandex/client.go +++ b/internal/yandex/client.go @@ -170,7 +170,6 @@ func (c *Client) Do(ctx context.Context, method, path string, query map[string]s } } - c.circuitBreaker.recordFailure() // final failure c.metrics.RecordCircuitBreakerTrip() return nil, err } @@ -299,7 +298,7 @@ func buildURL(path string, query map[string]string) string { return u } -// --- Token Bucket Rate Limitter --- +// --- Token Bucket Rate Limiter --- func newTokenBucket(capacity, perSeconds int) *tokenBucket { return &tokenBucket{ @@ -322,7 +321,7 @@ func (tb *tokenBucket) acquire() error { return nil } - return fmt.Errorf("rate limit: rate exceeded (%.1f TPS configured)", float64(tb.refillPerSec)/float64(time.Second)) + return fmt.Errorf("rate limit: rate exceeded (%.1f TPS configured)", float64(tb.refillPerSec)) } func (tb *tokenBucket) refill(now time.Time) {