Flesh out dd0c/cost: ingestion with Welford optimistic locking, anomaly API, governance, baselines

- Ingestion API: batch cost events, Welford baseline update with optimistic locking (version column), anomaly detection inline
- Anomaly API: list (filtered), acknowledge, snooze (1-168h), mark expected, dashboard summary with hourly trend
- Governance API: mode status, promotion eligibility check with FP rate calculation
- Baseline API: list with computed stddev, reset per resource
- Data layer: withTenant() RLS wrapper, Zod config with ANOMALY_THRESHOLD
- Fastify server entry point
This commit is contained in:
2026-03-01 03:07:02 +00:00
parent a17527dfa4
commit 4957946d29
7 changed files with 367 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
import { z } from 'zod';
const envSchema = z.object({
PORT: z.coerce.number().default(3000),
DATABASE_URL: z.string().default('postgresql://localhost:5432/dd0c_cost'),
REDIS_URL: z.string().default('redis://localhost:6379'),
JWT_SECRET: z.string().min(32).default('dev-secret-change-me-in-production!!'),
CORS_ORIGIN: z.string().default('*'),
LOG_LEVEL: z.string().default('info'),
ANOMALY_THRESHOLD: z.coerce.number().default(50),
});
export const config = envSchema.parse(process.env);
export type Config = z.infer<typeof envSchema>;