feat(server): add go_version to /api/info response #54

Merged
arcodange merged 1 commits from vibe/add-go-version-info into main 2026-05-05 10:18:31 +02:00
4 changed files with 16 additions and 2 deletions
Showing only changes of commit 86831a3ce4 - Show all commits

View File

@@ -141,10 +141,13 @@ We will implement a new `GET /api/info` endpoint that returns a JSON object with
"build_date": "2026-05-04T08:00:00Z",
"uptime_seconds": 1234,
"cache_enabled": true,
"healthz_status": "healthy"
"healthz_status": "healthy",
"go_version": "go1.26.1"
}
```
The `go_version` field provides the Go runtime version via `runtime.Version()`, useful for ops debugging (e.g., identifying which Go version is running in production).
### Rationale
1. **Performance**: Single HTTP request instead of 3-4 separate calls

View File

@@ -30,7 +30,8 @@ Reference document for all HTTP endpoints exposed by `dance-lessons-coach` serve
"build_date": "2026-05-05",
"uptime_seconds": 1234,
"cache_enabled": true,
"healthz_status": "healthy"
"healthz_status": "healthy",
"go_version": "go1.26.1"
}
```

View File

@@ -36,3 +36,10 @@ Feature: Info Endpoint
Then the response header "X-Cache" should be "MISS"
When I request the info endpoint again
Then the response header "X-Cache" should be "HIT"
@go_version @critical
Scenario: go_version field is non-empty
Given the server is running
When I request the info endpoint
Then the status code should be 200
And the response should contain "go_version"

View File

@@ -9,6 +9,7 @@ import (
"net"
"net/http"
"os/signal"
"runtime"
"syscall"
"time"
@@ -453,6 +454,7 @@ type InfoResponse struct {
UptimeSeconds int64 `json:"uptime_seconds"`
CacheEnabled bool `json:"cache_enabled"`
HealthzStatus string `json:"healthz_status"`
GoVersion string `json:"go_version"`
}
// handleHealthz godoc
@@ -500,6 +502,7 @@ func (s *Server) handleInfo(w http.ResponseWriter, r *http.Request) {
UptimeSeconds: int64(time.Since(s.startedAt).Seconds()),
CacheEnabled: s.cacheService != nil,
HealthzStatus: "healthy",
GoVersion: runtime.Version(),
}
// Cache key