8f20b2ef1b
- 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.
18 lines
745 B
TypeScript
18 lines
745 B
TypeScript
/**
|
||
* Hermetic test environment for API integration tests.
|
||
* Must run BEFORE any application module is imported so that `loadConfig`
|
||
* sees deterministic values instead of whatever happens to be in `.env`.
|
||
*/
|
||
process.env.NODE_ENV = "test";
|
||
process.env.AAMOS_MODE = "mock";
|
||
process.env.EMAIL_MODE = "log";
|
||
process.env.S3_MODE = "mock";
|
||
process.env.LOG_LEVEL = "error";
|
||
process.env.OPS_TOKEN = "test-ops-token-not-for-production";
|
||
|
||
// Local test database fallback – tests still need a Postgres instance, but
|
||
// the connection string is not a secret and the value is predictable.
|
||
process.env.TEST_DATABASE_URL ||=
|
||
"postgres://app_user:app_dev_password@localhost:5432/cibello_test";
|
||
process.env.DATABASE_URL = process.env.TEST_DATABASE_URL;
|