Nieuw script `npm run db:sync-model-prices` haalt de actuele Claude 4.x modellijst op bij de Anthropic API en upsert prijzen in `model_prices`. Anthropic biedt geen prijs-API, dus prijzen blijven onderhouden in een PRICE_TABLE constante in het script. Cache-tier-prijzen worden afgeleid via vaste multipliers (read 0.1x, write 1.25x). Nieuwe Claude 4.x modellen worden gedetecteerd en gelogd als warning zodat duidelijk is wanneer de tabel handmatig moet worden bijgewerkt. - scripts/sync-model-prices.ts: idempotent upsert, --dry-run, retry op 5xx - ANTHROPIC_API_KEY als optional env-var (.env.example, lib/env.ts) - scripts/README.md: gebruiksinstructies + edge cases - docs/plans/sync-model-prices.md: ontwerpdocument Verificatie: `npm run lint`, `vitest` (563/563), TypeScript clean. Echt gedraaid tegen DB: 3 created (eerste run) -> 3 unchanged (tweede run). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
1.8 KiB
Text
43 lines
1.8 KiB
Text
# Database
|
|
DATABASE_URL="postgresql://user:password@host/dbname?sslmode=require"
|
|
DIRECT_URL="postgresql://user:password@host/dbname?sslmode=require"
|
|
|
|
# Auth/session
|
|
# Generate with: openssl rand -base64 32
|
|
SESSION_SECRET="replace-with-at-least-32-characters"
|
|
|
|
# Optional; Vercel and Node set this automatically in deployed environments.
|
|
NODE_ENV="development"
|
|
|
|
# M11 (ST-1107) — shared secret between Vercel cron-trigger and the
|
|
# /api/cron/expire-questions handler. Required in production; optional in
|
|
# local dev (the route returns 401 if the Authorization header doesn't match).
|
|
# Generate with: openssl rand -base64 32
|
|
CRON_SECRET=""
|
|
|
|
# PBI-55 — Web Push (VAPID). All optional; app starts without these.
|
|
# Generate keys with: npx web-push generate-vapid-keys
|
|
NEXT_PUBLIC_VAPID_PUBLIC_KEY=""
|
|
VAPID_PRIVATE_KEY=""
|
|
# Must start with mailto: e.g. mailto:admin@example.com
|
|
VAPID_SUBJECT="mailto:admin@example.com"
|
|
# Shared secret for POST /api/internal/push/send — min 32 chars
|
|
# Generate with: openssl rand -base64 32
|
|
INTERNAL_PUSH_SECRET=""
|
|
|
|
# PBI-66 — Anthropic API key voor `npm run db:sync-model-prices`.
|
|
# Optional. Alleen nodig om wekelijks de model_prices tabel te synchroniseren.
|
|
# Genereer op https://console.anthropic.com/ → API Keys.
|
|
# /v1/models is een gratis metadata-call (geen tokens, geen credit nodig).
|
|
ANTHROPIC_API_KEY=""
|
|
|
|
# v1-readiness item 2 — Sentry error monitoring.
|
|
# Optional. Without DSN, the SDK is a no-op (no network, no overhead).
|
|
# Get a DSN at https://sentry.io → Project → Settings → Client Keys (DSN).
|
|
NEXT_PUBLIC_SENTRY_DSN=""
|
|
|
|
# Required ONLY if you want source-map upload during build (production deploy).
|
|
# In Vercel: project settings → Environment Variables → add as encrypted.
|
|
SENTRY_ORG=""
|
|
SENTRY_PROJECT=""
|
|
SENTRY_AUTH_TOKEN=""
|