""" GovBridge India — Centralized Configuration All environment variables are declared here with Pydantic validation. Usage: from config import settings """ from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic import Field from typing import Optional class Settings(BaseSettings): # ── Database ───────────────────────────────────────── SUPABASE_URL: str = Field(default="") SUPABASE_KEY: str = Field(default="") # ── LLM ────────────────────────────────────────────── GROQ_API_KEY: str = Field(default="") # ── Knowledge Extraction (Sprint 30 — INDRA Phase 1.5) ─── GROQ_EXTRACTION_MODEL: str = Field( default="llama-3.3-70b-versatile", description="Groq model for Knowledge Triplet extraction" ) GROQ_MAX_CONCURRENCY: int = Field( default=5, description="Max concurrent Groq API calls during extraction" ) # ── Admin ──────────────────────────────────────────── ADMIN_SECRET: str = Field(default="change-this-in-production") # ── Translation (Bhashini) ─────────────────────────── BHASHINI_USER_ID: Optional[str] = Field(default=None) BHASHINI_API_KEY: Optional[str] = Field(default=None) # ── WhatsApp ───────────────────────────────────────── WHATSAPP_TOKEN: Optional[str] = Field(default=None) WHATSAPP_PHONE_NUMBER_ID: Optional[str] = Field(default=None) WHATSAPP_VERIFY_TOKEN: Optional[str] = Field(default=None) WHATSAPP_APP_SECRET: Optional[str] = Field(default=None) # ── Feature Flags ──────────────────────────────────── ENVIRONMENT: str = Field(default="development") # ── Migration Flag ─────────────────────────────────── # Set to "true" during the expand-contract migration window. # When true, ingest writes to BOTH embedding AND embedding_v2. # After migration 009 is complete, set back to "false". DUAL_WRITE_EMBEDDINGS: str = Field(default="false") model_config = SettingsConfigDict( env_file=(".env", "../.env"), env_file_encoding="utf-8", extra="ignore" ) settings = Settings()