Go Live Checklist + Version Endpoint
- Go Live Checklist for LandveX Internal Pilot deployment - Version endpoint: /version returns environment, version, commit, build - Ready for Internal Pilot deployment Next: Deploy with Docker Compose
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# Go Live Checklist — LandveX Internal Pilot
|
||||
|
||||
> **Mål:** Deploya LandveX Internal Pilot. Inte "Pilot Environment" — detta är vår dagliga arbetsmiljö och ska behandlas nästan som produktion.
|
||||
|
||||
---
|
||||
|
||||
## Git & Versionshantering
|
||||
|
||||
- [ ] All kod ligger i Git
|
||||
- [ ] Alla ändringar går via PR
|
||||
- [ ] Commit SHA visas i UI (`/version` eller footer)
|
||||
- [ ] Versionsnummer visas tydligt
|
||||
|
||||
## Kubernetes
|
||||
|
||||
- [ ] GitOps styr deployment
|
||||
- [ ] Helm/Kustomize (eller motsvarande) är versionshanterade
|
||||
- [ ] Inga manuella ändringar i klustret
|
||||
- [ ] Secrets hanteras via valda secret manager, inte i Git
|
||||
|
||||
## Observability
|
||||
|
||||
- [ ] OpenTelemetry aktiverat
|
||||
- [ ] Strukturerad JSON-loggning
|
||||
- [ ] Korrelations-ID genom hela kedjan
|
||||
- [ ] `/health`, `/ready`, `/live`, `/metrics` fungerar för alla tjänster
|
||||
|
||||
## Storage
|
||||
|
||||
- [ ] Artifact Registry fungerar
|
||||
- [ ] Objektlagring fungerar
|
||||
- [ ] Checksummor verifieras
|
||||
- [ ] Metadata extraheras
|
||||
|
||||
## Säkerhet
|
||||
|
||||
- [ ] RBAC fungerar
|
||||
- [ ] Feature Flags fungerar
|
||||
- [ ] Developer Mode endast för behöriga
|
||||
- [ ] Audit-loggning för administrativa åtgärder
|
||||
|
||||
---
|
||||
|
||||
## Platform Readiness
|
||||
|
||||
| Modul | Status |
|
||||
|-------|--------|
|
||||
| Mission Import | ☐ |
|
||||
| Artifact Registry | ☐ |
|
||||
| Storage | ☐ |
|
||||
| Metadata | ☐ |
|
||||
| Operations | ☐ |
|
||||
| Developer Mode | ☐ |
|
||||
| Replay | — (senare) |
|
||||
| Decision Pipeline | — (senare) |
|
||||
| Learning | — (senare) |
|
||||
|
||||
---
|
||||
|
||||
## Pilot 001 Uppdrag
|
||||
|
||||
> **Bryt systemet.**
|
||||
|
||||
Testa:
|
||||
- [ ] Dålig täckning
|
||||
- [ ] Stora videofiler
|
||||
- [ ] Avbruten upload
|
||||
- [ ] Flera telefonmodeller
|
||||
- [ ] Dålig GPS
|
||||
- [ ] Mörker
|
||||
- [ ] Regn
|
||||
- [ ] Dålig belysning
|
||||
|
||||
Ju tidigare ni hittar gränserna, desto bättre blir plattformen.
|
||||
|
||||
---
|
||||
|
||||
## Efter Varje Pilotdag (30 min)
|
||||
|
||||
1. Vad fungerade bäst?
|
||||
2. Vad blockerade oss?
|
||||
3. Vad lärde vi oss om användarna?
|
||||
4. Vad ska in i nästa sprint?
|
||||
|
||||
Inga längre diskussioner — bara konkreta observationer och prioriteringar.
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
- **Version:** 1.0
|
||||
- **Date:** 2026-07-02
|
||||
- **Next:** Deploy Internal Pilot
|
||||
@@ -12,6 +12,7 @@ import cors from 'cors';
|
||||
import helmet from 'helmet';
|
||||
|
||||
import missionImportRoutes from './routes/mission-import';
|
||||
import versionRoutes from './routes/version';
|
||||
|
||||
const app = express();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
@@ -23,6 +24,7 @@ app.use(express.json());
|
||||
|
||||
// Routes
|
||||
app.use('/api/v1/missions', missionImportRoutes);
|
||||
app.use('/version', versionRoutes);
|
||||
|
||||
// Health check
|
||||
app.get('/health', (_req, res) => {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Version endpoint
|
||||
*
|
||||
* Returns current version, commit SHA, and build info.
|
||||
* Used by Readiness Dashboard and debugging.
|
||||
*/
|
||||
|
||||
import { Router } from 'express';
|
||||
|
||||
const router = Router();
|
||||
|
||||
const VERSION = {
|
||||
environment: process.env.NODE_ENV || 'development',
|
||||
version: process.env.npm_package_version || '0.1.0',
|
||||
commit: process.env.GIT_COMMIT || 'unknown',
|
||||
build: new Date().toISOString(),
|
||||
};
|
||||
|
||||
router.get('/', (_req, res) => {
|
||||
res.json(VERSION);
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user