Task #14: show a full version timeline for each skill family, not just the single most-similar prior scan. What changed: - OpenAPI spec (lib/api-spec/openapi.yaml): new GET /scans/{id}/lineage (operationId getScanLineage) returning an array of ScanLineageEntry (id, name, verdict, riskScore, relation, similarity, comparedScanId, fingerprint, createdAt). Regenerated api-zod + api-client-react via codegen. - API (artifacts/api-server/src/routes/scans.ts): new lineage endpoint. Builds an undirected graph over all scans linked by the comparedScanId chain AND identical (non-empty) fingerprints, then BFS-walks the connected component containing the requested scan and returns it newest-first. Works purely from existing data, no re-scanning. 404 for unknown ids. - UI (artifacts/skillguard/src/pages/scan-report.tsx): new VersionTimeline card rendering the family as a vertical timeline; each entry shows verdict, relation badge, similarity, risk score and date. The viewed scan is marked "Aktuell angezeigt"; every other entry links to the existing comparison view /vergleich/{viewedId}/{entryId}. Card hidden when the family has <=1 member. Notes: - Lineage = connected component, so any member returns the full family. - Verified end-to-end locally (created new/modified/identical chain, checked lineage ordering + 404, confirmed timeline + compare links in the UI), then deleted the test scans. Replit-Task-Id: c7f87ce6-59d8-4396-b16b-f20846f42f0b
15 lines
754 B
Markdown
15 lines
754 B
Markdown
---
|
|
name: Testing the SkillGuard api-server from the shell
|
|
description: How to reach the api-server with curl during development (external proxy fails).
|
|
---
|
|
|
|
# Testing the api-server from the shell
|
|
|
|
Curling the api-server through the external proxy (`$REPLIT_DEV_DOMAIN/api/...`)
|
|
fails during development — it returns HTTP 000 / connection refused (the proxy
|
|
routes by the selected artifact + mTLS, so a bare curl does not reach it).
|
|
|
|
**How to apply:** curl the api-server directly on its local port instead, e.g.
|
|
`http://localhost:8080/api/scans`. Confirm the port from the api-server workflow
|
|
log line `Server listening port: <PORT>` (it reads `PORT`, defaulting to 8080).
|
|
The web artifact's preview, however, reaches the API fine through the proxy.
|