Commit Graph

10 Commits

Author SHA1 Message Date
4de50f4948 feat: Implement on-demand /search integration in lazy graph expansion
- Integrate on-demand Yandex /search calls in FindRoute when lazy expansion + synthetic fallback fails
- Add real route segments from API response as edges, then retry BFS search
- Integrate existing cache key generation and TTL policies (SearchNearTermTTL: 3h, SearchFarTermTTL: 7d)
- Write tests: TestSearchRoutes_onDemand, TestSearchRoutes_onDemandVerifyIntegration, TestFindRouteWithSyntheticFallback
- All tests pass before task 5 (transfer depth limiting)
2026-08-16 13:17:02 +03:00
286cb8653a feat: Add ResetCircuitBreaker helper 2026-08-16 03:41:26 +03:00
26c4be2d3a feat: implement synthetic edge fallback in FindRoute
- Add addSyntheticEdgesForNode function that connects nodes to city hubs
- Modify FindRoute to add synthetic edges as fallback when no route found
- Write TestFindRouteWithSyntheticFallback test

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-15 01:33:23 +03:00
88d27421ce feat: implement MVP routing endpoints and cron station status detection
This commit implements the core routing functionality for the trip planner MVP:

1. API handlers for city autocomplete, station listing, route search, and route GeoJSON
2. Router integration with Yandex Schedules API for building routing graphs
3. Pareto-optimal route search with max 1 transfer and MCT filtering
4. Cron job for station status detection and closure monitoring
5. Circuit breaker and rate limiter integration in Yandex client
6. Redis cache-aside layer for city directories and station lists

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 13:06:29 +03:00
e063d26d4c fix: code correctness, security, and simplicity improvements 2026-08-13 21:23:15 +03:00
2101362d31 feat: complete Task 7 - end-to-end integration and full test suite 2026-08-13 21:01:53 +03:00
1bfe659d2c feat: implement API handlers for MVP endpoints (Task 5)
- Create cmd/api/handlers.go with HTTP handlers for all MVP endpoints
- Implement GET /v1/cities?query= city autocomplete
- Implement GET /v1/cities/{id}/stations city stations including neighbors
- Implement POST /v1/routes/search route search with Pareto-optimal results
- Implement GET /v1/routes/{search_id}/{route_id}/geojson route geometry
- Implement GET /v1/stations/{id}/status station status endpoint
- Add handler tests with success and error cases
- All existing tests pass
2026-08-13 20:26:28 +03:00
39f20bff4f feat: implement routing graph and search algorithm (max 1 transfer) - Task 4
- Create Graph type with Node/Edge types and methods
- Implement BuildGraphFromStations, SortEdges
- Implement BFS/Dijkstra FindRoute with 1-transfer limit
- Implement ApplyMCT for Minimum Connection Time rules
- Add search algorithm tests (success route, no-route, transfer limit)
- Add MCT application tests (city hub reduction, mode change)
- Update plan Task 4 checkboxes
2026-08-13 20:13:49 +03:00
571d11d376 feat: implement cache-aside layer with Redis cache interface, cache keys, TTL policies, and tests
- Created cache/store.go with Cache interface, redisClient wrapper, cacheStore, TTL constants (CityTTL 30d, SearchNearTermTTL 3h, SearchFarTermTTL 7d)
- Implemented cache keys: cities:{code}, stations:{id}, search:{from}:{to}:{date}
- Implemented cache-aside pattern via CacheAside struct with GetOrSetFuncPattern, GetCity, GetStation, GetSearch
- Added TTL-aware search result caching with near-term (3h) and far-term (7d) policies
- Wrote 6 unit tests: CacheGetSet, CacheKeyString, CacheAsideGetOrSet, CacheAsideGetCity, CacheAsideGetSearch, CacheInvalidate
- All tests pass with Redis integration
2026-08-13 19:55:02 +03:00
6a5c586187 feat: implement Yandex API client with rate limiter and circuit breaker 2026-08-13 19:35:59 +03:00