Files
Cibello-app/apps/worker/package.json
T
Sven (AAMOS AI) 8f20b2ef1b feat(ops): /ops/v1/summary med ai/aktivering/engagemang/betalning/jobb/sakerhet + canary
- Nya toppnivåblock i /ops/v1/summary: ai_scan, aktivering, engagemang,
  betalning, jobb, sakerhet. Alla värden läses från DB/cache; null där data
  saknas, inga påhittade värden.
- AI-kostnad i USD mikrocent (native); intäkter fortsatt SEK-öre.
- product_analytics_events är källa för volym, latens, lyckandegrad,
  felfrekvens, aktivering, retention och engagemang.
- Nya händelser: scan_started (API) och scan_failed/scan_completed med
  latencyMs + felkod (worker). latencyMs flödar nu in i scan_completed.
- Safety canary-jobb varje timme: re-härleder allergener för alla recept,
  räknar överifierade publika recept och food-safety-lint; skriver EN rad till
  ops_safety_canary. Endpointen läser endast sista raden.
- Cache-refresh-jobb var 60 s skriver hela summariet till Redis; endpointen
  serverar cachen med 503 vid cache-miss.
- Bearer-token-skydd med OPS_TOKEN; HTTPS-tvång i produktion; ingen PII.
- Tester för endpoint, auth, cache-miss och safety canary.
2026-08-10 05:47:43 +07:00

54 lines
1.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"name": "@app/worker",
"version": "0.1.0",
"private": true,
"type": "module",
"description": "Worker asynkrona jobb: bildanalys via AAMOS, kvitton, veckoplan, minne, notiser, subscriptions (spec §54)",
"scripts": {
"dev": "tsx watch src/index.ts",
"start": "node dist/index.js",
"build": "tsup src/index.ts --format esm --target node22 --sourcemap --clean",
"typecheck": "tsc --noEmit",
"test": "vitest run --passWithNoTests",
"eval": "tsx src/eval/run.ts",
"eval:scan": "tsx src/eval/scan-eval.ts"
},
"dependencies": {
"@app/ai-contracts": "workspace:*",
"@app/analytics": "workspace:*",
"@app/database": "workspace:*",
"@app/events": "workspace:*",
"@app/inventory-engine": "workspace:*",
"@app/memory-client": "workspace:*",
"@app/nutrition-engine": "workspace:*",
"@app/recipe-engine": "workspace:*",
"@app/recommendation-engine": "workspace:*",
"@app/shared-types": "workspace:*",
"@app/subscriptions": "workspace:*",
"bullmq": "^6.0.0",
"dotenv": "^16.4.0",
"drizzle-orm": "^0.45.0",
"ioredis": "^6.0.0",
"pg": "^8.13.0"
},
"devDependencies": {
"@types/pg": "^8.11.0",
"tsup": "^8.3.0"
},
"tsup": {
"noExternal": [
"@app/ai-contracts",
"@app/analytics",
"@app/database",
"@app/events",
"@app/inventory-engine",
"@app/memory-client",
"@app/nutrition-engine",
"@app/recipe-engine",
"@app/recommendation-engine",
"@app/shared-types",
"@app/subscriptions"
]
}
}