bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
184 lines
3.9 KiB
Markdown
184 lines
3.9 KiB
Markdown
# LandveX Finance — Integrationsguide för Sprint 3
|
|
|
|
> Steg-för-steg guide för att integrera de nya filerna i produktion.
|
|
|
|
---
|
|
|
|
## 1. Backend-integration
|
|
|
|
### 1.1 Kopiera filer
|
|
|
|
```bash
|
|
# Skapa finance-mapp om den inte finns
|
|
sudo mkdir -p /opt/amos/api/finance
|
|
|
|
# Kopiera nya filer
|
|
sudo cp /home/bernt/.openclaw/workspace/landvex-finance-sprint3/metrics.mjs \
|
|
/home/bernt/.openclaw/workspace/landvex-finance-sprint3/logger.mjs \
|
|
/home/bernt/.openclaw/workspace/landvex-finance-sprint3/health.mjs \
|
|
/opt/amos/api/finance/
|
|
|
|
# Sätt rättigheter
|
|
sudo chown -R amos:amos /opt/amos/api/finance
|
|
sudo chmod 644 /opt/amos/api/finance/*.mjs
|
|
```
|
|
|
|
### 1.2 Modifiera server.mjs
|
|
|
|
Lägg till följande rader:
|
|
|
|
```javascript
|
|
// LÄNGST UPP (efter andra imports)
|
|
import { getMetrics, getContentType } from './api/finance/metrics.mjs';
|
|
import { financeInfo, financeError, requestLogger } from './api/finance/logger.mjs';
|
|
import { financeHealthHandler } from './api/finance/health.mjs';
|
|
|
|
// EFTER app = express()
|
|
app.use(requestLogger); // Logga alla requests
|
|
|
|
// EFTER app.get('/health/detailed', ...)
|
|
app.get('/health/finance', financeHealthHandler);
|
|
|
|
// I /prom-metrics endpoint (ersätt befintlig)
|
|
app.get('/prom-metrics', async (req, res) => {
|
|
try {
|
|
let out = await promRegistry.metrics();
|
|
out += await getMetrics(); // NYTT: Finance metrics
|
|
|
|
// ... befintlig error tracker kod ...
|
|
|
|
res.set('Content-Type', getContentType());
|
|
res.end(out);
|
|
} catch (e) {
|
|
res.status(500).end(e.message);
|
|
}
|
|
});
|
|
|
|
// VID STARTUP (efter app.listen)
|
|
financeInfo('finance_service_started', {
|
|
context: { port: PORT, node_version: process.version }
|
|
});
|
|
```
|
|
|
|
### 1.3 Verifiera
|
|
|
|
```bash
|
|
# Starta om servern
|
|
pm2 restart amos-finance
|
|
|
|
# Testa health
|
|
curl http://localhost:3100/health/finance | jq
|
|
|
|
# Testa metrics
|
|
curl http://localhost:3100/prom-metrics | grep finance_
|
|
|
|
# Testa loggning
|
|
tail -f /var/log/amos/finance.log | jq
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Frontend-integration (valfritt, Sprint 4)
|
|
|
|
### 2.1 Kopiera JS-filer
|
|
|
|
```bash
|
|
sudo mkdir -p /opt/amos/public/ouroboros/finance/js
|
|
sudo cp /home/bernt/.openclaw/workspace/landvex-finance-sprint3/js/*.mjs \
|
|
/opt/amos/public/ouroboros/finance/js/
|
|
```
|
|
|
|
### 2.2 Modifiera index.html
|
|
|
|
Ersätt `<script>`-taggen med:
|
|
|
|
```html
|
|
<script type="module" src="js/main.mjs"></script>
|
|
```
|
|
|
|
### 2.3 Feature-flagg
|
|
|
|
Lägg till i index.html för bakåtkompatibilitet:
|
|
|
|
```javascript
|
|
// I befintlig <script>
|
|
const useV2 = new URLSearchParams(location.search).has('v2');
|
|
if (useV2) {
|
|
// Ladda nya modulära system
|
|
import('./js/main.mjs');
|
|
} else {
|
|
// Kör befintlig inline-kod
|
|
// ...
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Prometheus-konfiguration
|
|
|
|
### 3.1 Lägg till scrape job
|
|
|
|
```yaml
|
|
# /etc/prometheus/prometheus.yml
|
|
scrape_configs:
|
|
- job_name: 'landvex-finance'
|
|
static_configs:
|
|
- targets: ['localhost:3100']
|
|
metrics_path: '/prom-metrics'
|
|
scrape_interval: 15s
|
|
```
|
|
|
|
### 3.2 Ladda om Prometheus
|
|
|
|
```bash
|
|
curl -X POST http://localhost:9090/-/reload
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Grafana-dashboard
|
|
|
|
### 4.1 Importera dashboard
|
|
|
|
Skapa filen `grafana-dashboard.json` (se METRICS-IMPLEMENTATION.md) och importera via Grafana UI.
|
|
|
|
---
|
|
|
|
## 5. Larm (Alertmanager)
|
|
|
|
### 5.1 Lägg till regler
|
|
|
|
```yaml
|
|
# /etc/prometheus/alerts.yml
|
|
groups:
|
|
- name: finance
|
|
rules:
|
|
- alert: FinanceDBDown
|
|
expr: finance_health_status{check="database"} == 2
|
|
for: 1m
|
|
labels:
|
|
severity: critical
|
|
annotations:
|
|
summary: "Finance database is down"
|
|
|
|
- alert: FinanceDiskFull
|
|
expr: finance_disk_used_percent > 90
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
annotations:
|
|
summary: "Finance disk is almost full"
|
|
|
|
- alert: FinanceHighLatency
|
|
expr: histogram_quantile(0.95, rate(finance_api_duration_seconds_bucket[5m])) > 2
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
annotations:
|
|
summary: "Finance API latency is high"
|
|
```
|
|
|
|
---
|
|
|
|
*Senast uppdaterad: 2026-06-24*
|