73 Commits

Author SHA1 Message Date
65deb2e55c fix(cache): resolve test failures in Gitea Actions by closing Redis clients and using IPv4 address
Some checks failed
CI / test (push) Failing after 1m15s
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
CI / lint (push) Successful in 13s
2026-08-20 18:12:09 +03:00
ca8b137e55 fmt: apply gofmt to test files
Some checks failed
CI / lint (push) Successful in 14s
CI / test (push) Failing after 1m13s
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
2026-08-20 18:04:23 +03:00
6bebfa86fe fix(gitignore): make api ignore pattern root-specific
Some checks failed
CI / lint (push) Failing after 11s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
fix(test): add missing os import to test files
chore(deps): update dependencies from go mod tidy
2026-08-20 18:02:46 +03:00
900db58043 fix(test): use REDIS_ADDR environment variable in cron test mocks to match CI service hostname
Some checks failed
CI / lint (push) Failing after 11s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
2026-08-20 17:56:05 +03:00
e73ed82b7e fix(test): use REDIS_ADDR environment variable in test mocks to match CI service hostname
Some checks failed
CI / lint (push) Failing after 12s
CI / build (push) Has been skipped
CI / test (push) Has been skipped
CI / docker (push) Has been skipped
2026-08-20 17:49:04 +03:00
dbafaf57ce fix(ci): use Redis service hostname instead of localhost to avoid IPv6 connection issues
Some checks failed
CI / docker (push) Has been skipped
CI / lint (push) Successful in 13s
CI / test (push) Failing after 1m15s
CI / build (push) Has been skipped
2026-08-20 17:44:35 +03:00
6396f4e6ab fix(ci): add Redis service to test and build jobs to resolve connection refused errors
Some checks failed
CI / lint (push) Successful in 14s
CI / test (push) Failing after 1m48s
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
2026-08-20 17:40:37 +03:00
904c0c35ce fix(ci): replace single-job workflow with proper 4-job Gitea Actions pipeline (lint → test → build → build → docker)
Some checks failed
CI / lint (push) Successful in 54s
CI / test (push) Failing after 1m13s
CI / build (push) Has been skipped
CI / docker (push) Has been skipped
2026-08-20 17:36:20 +03:00
70768d420e fix(ci): update Go version to 1.26.4 and modernize GitHub Actions
Some checks failed
/ build-and-deploy (push) Failing after 2m5s
2026-08-20 17:26:18 +03:00
b08e7b1b00 Merge branch 'full-implementation' into master
Some checks failed
/ build-and-deploy (push) Failing after 4m59s
2026-08-19 15:12:55 +03:00
ae48045055 fix: remove build artifacts and coverage files from tracking
- Remove compiled binary 'api' from git tracking
- Remove 'cover.out' coverage file from git tracking
- Update .gitignore to include 'api' and 'cover.out'
- Clean up temporary files: coverage.out, dump.rdb
2026-08-19 15:04:51 +03:00
f48ec66166 move completed plan: 2026-08-18-implement-deployment-infrastructure.md 2026-08-19 14:48:43 +03:00
c3bc719878 fix: address code review findings 2026-08-19 14:02:08 +03:00
c2bdffb0ab fix: address code review findings 2026-08-19 13:26:05 +03:00
4a7be531ed fix: address code review findings 2026-08-19 12:48:30 +03:00
b14682f424 fix: address code review findings
- Create README.md with project overview, quick start, Docker deployment, CI/CD info
- Update CLAUDE.md with Deployment section
- Fix cmd/api/main.go to use REDIS_ADDR env var with fallback
- Fix Dockerfile to use golang:1.22-alpine instead of golang:1.26-alpine
- Fix .gitea/workflows/deploy.yml to include Docker registry prefix in image tags
2026-08-19 01:11:55 +03:00
da67d0eae7 feat: verify acceptance criteria for deployment infrastructure
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 23:01:18 +03:00
adfffa0f4b feat: create Gitea Actions CI/CD workflow
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 22:53:18 +03:00
cca176270c feat: update docker-compose.yml with cron and watchtower services 2026-08-18 22:47:27 +03:00
69312022ea feat: implement multi-stage Dockerfile for deployment infrastructure
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 22:41:07 +03:00
3a9dd24e33 move completed plan: 2026-08-18-implement-leaflet-frontend.md 2026-08-18 22:00:16 +03:00
ef77b2c0a0 fix: address code review findings 2026-08-18 22:00:07 +03:00
1513a9fb67 fix: address code review findings
- Add SearchID field to routeSearchRoute struct and generate search_id in RouteSearch handler
- Populate Itinerary.ID field with unique IDs using generateItineraryID function
- Fix information disclosure in error handling - log errors internally instead of leaking to clients
- Fix circuit breaker trip metric recording - only record when state transitions to open
- Fix context not passed in route expansion - use context.WithTimeout instead of context.TODO
- Fix admin auth fails open on missing API key - return 401 Unauthorized without revealing configuration
2026-08-18 20:51:09 +03:00
b0dcc2dd3a fix: address code review findings 2026-08-18 19:59:12 +03:00
502979d43b fix: address code review findings 2026-08-18 19:54:12 +03:00
6e65e6161c feat: mark manual testing tasks as completed 2026-08-18 15:22:34 +03:00
b000d7d44f feat: update Go server to serve static files 2026-08-18 15:19:46 +03:00
bd83cca99d feat: create static directory and frontend files 2026-08-18 15:12:50 +03:00
a509b71614 move completed plan: 2026-08-15-full-implementation.md 2026-08-18 14:27:05 +03:00
0d603ad15f fix: address code review findings 2026-08-18 14:25:34 +03:00
48650d96cf fix: address code review findings 2026-08-18 13:57:30 +03:00
2cf9e20608 fix: address code review findings 2026-08-18 13:30:11 +03:00
4e55b52a86 fix: update CLAUDE.md with missing documentation for new API endpoints and architectural features 2026-08-18 12:59:48 +03:00
8aecaf1468 fix: address code review findings 2026-08-17 23:40:52 +03:00
9b89b7b9ab fix: address code review findings 2026-08-17 23:12:24 +03:00
6dcec6a7a5 fix: address code review findings
- Fix type mismatch in search_cache.go: SearchWithCache now returns *yandex.Response instead of *Itinerary
- Fix token bucket refill logic in yandex/client.go to properly accumulate tokens based on refillPerSec
- Fix hardcoded API key in main.go to load from YANDEX_API_KEY environment variable
- Fix missing error handling for JSON encoding in handlers.go RouteGeoJSON function
- Fix incorrect redis.Nil handling in cache/store.go CacheAside.Exists method
- Fix incorrect error return type in station_status.go updateStationStatus to return newStatus instead of empty string
2026-08-17 22:42:08 +03:00
78f662c985 fix: address code review findings 2026-08-17 22:14:48 +03:00
777fda95a3 fix: address code review findings 2026-08-17 21:50:37 +03:00
9c402c0086 fix: address code review findings 2026-08-17 21:19:36 +03:00
82757665e9 fix: address code review findings 2026-08-17 20:34:17 +03:00
0bba23692c feat: Full test suite and linter - increased coverage to 61.7%, fixed test failures 2026-08-17 17:06:50 +03:00
81686e9adc feat: Full test suite and linter - fixed test failures and increased coverage to 61.1% 2026-08-17 17:00:10 +03:00
c58fbb50b1 feat: implement observability and metrics (Task 22)
- Add metrics package tracking cache hit-rate, API quota, circuit breaker trips, search time
- Integrate metrics with cache layer, yandex client, and API handlers
- Add /metrics HTTP endpoint for Prometheus-compatible metrics exposure
- Write tests for metrics functionality across cache, yandex, and API handlers
- Update test files to support new metrics infrastructure
2026-08-17 15:27:44 +03:00
5842667fff feat: Implement user preferences (saved cities, search history) with Redis storage and API handlers 2026-08-17 14:30:54 +03:00
2907ed3e0d feat: Implement flight change notifications with route re-search on cancellation/major delay
- Add CheckAndRescheduleRoute, checkRouteForChanges, rescheduleRoute methods to Graph
- Add Route tracking fields (LastChecked, NeedsReSearch, ReSearchReason) to Itinerary
- Implement change detection: cancellation (duration > 86400s), major delay (duration > cost*2)
- Write TestRouteReSearchOnChange test covering both cancellation and major delay scenarios
- Fix graph.go syntax errors and getStationNeighbors function
2026-08-17 13:45:34 +03:00
d67bc5aca7 feat: Implement Pareto-front ranking integration with multi-criteria sorting
- Add RankingMode field to SearchOptions (fastest/fewest_transfers/cheapest)
- Update FindRoutesPareto to respect ranking mode when sorting
- Add ranking_mode query parameter to RouteSearch endpoint
- Add TestParetoFrontGeneration with subtests for all three modes

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 19:27:02 +03:00
026b779cb3 feat: Implement lazy hub expansion depth limiting with MaxTransfers support
- Add transfer depth limiting in BFS/Dijkstra (MaxTransfers field in SearchOptions)
- Track transfer count at each step; stop when depth > 5
- Synthetic edge fallback on expansion failure
- Add TestLazyExpansionDepthLimit and TestFindRouteMaxTransfers tests

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 18:59:48 +03:00
7c6fe4a99c feat: Implement lazy hub expansion depth limiting with transfer depth limit of 5 (Task 14) 2026-08-16 18:17:36 +03:00
06730fe05c feat: Implement synthetic edges city↔airport (Task 10)
- Add TransferTime constants (AirportToCity, CityToStation, StationToStation)
- Update Edge struct with Synthetic field
- Enhance addSyntheticEdgesForNode to use constants and mark synthetic edges
- Update BuildGraphFromStations to set Synthetic field
- Mark synthetic edges in GeoJSON output as dashed lines
- Write TestSyntheticAirportCityEdges and TestRouteWithSyntheticAirportCityEdges tests
2026-08-16 16:05:50 +03:00
d93445ad55 feat: Add bus transport type to routing with Pareto ranking support 2026-08-16 15:30:03 +03:00