Push the rest

This commit is contained in:
2026-05-11 10:58:46 +02:00
parent adb5c1a439
commit 0031caf16c
94 changed files with 11777 additions and 3474 deletions

View File

@@ -1,59 +1,68 @@
APP_NAME=otel-bi-backend
# ---------------------------------------------------------------------------
# OTel BI Backend — local development (without Docker)
# Copy to .env and fill in your values.
# Run services from the backend/ directory so pydantic-settings finds .env.
# ---------------------------------------------------------------------------
APP_ENV=dev
LOG_LEVEL=INFO
API_HOST=0.0.0.0
API_PORT=8000
# ============================================================
# Go analytics service (same image, ROLE=analytics)
# Set this to wherever the analytics container is reachable.
# ============================================================
ANALYTICS_SERVICE_URL=http://localhost:8080
# MSSQL — required when ROLE=analytics
# go-mssqldb DSN: sqlserver://user:pass@host:port?database=name&...
AW_MSSQL_DSN=sqlserver://sa:YourStrongPassword123!@localhost:1433?database=AdventureWorksDW2022&TrustServerCertificate=true&ApplicationIntent=ReadOnly
WWI_MSSQL_DSN=sqlserver://sa:YourStrongPassword123!@localhost:1433?database=WideWorldImportersDW&TrustServerCertificate=true&ApplicationIntent=ReadOnly
# ============================================================
# PostgreSQL — write store for derived data
# ============================================================
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=otel_bi
POSTGRES_USERNAME=otel_bi
POSTGRES_PASSWORD=otel_bi_dev
# prefer for dev, require for production
POSTGRES_SSLMODE=prefer
# Optional: override the generated connection URL directly
# POSTGRES_CONNECTION_STRING=postgresql+psycopg://otel_bi:otel_bi_dev@localhost:5432/otel_bi?sslmode=prefer
# ============================================================
# Frontend JWT validation
# Validates the Bearer token the browser sends on every request.
# ============================================================
# Set false to disable auth entirely (dev only)
REQUIRE_FRONTEND_AUTH=false
# When REQUIRE_FRONTEND_AUTH=true, fill in your OIDC provider:
# FRONTEND_JWT_ISSUER_URL=https://your-idp.example.com/realms/your-realm
# FRONTEND_JWT_AUDIENCE=your-api-audience
# FRONTEND_JWT_JWKS_URL=https://your-idp.example.com/realms/your-realm/protocol/openid-connect/certs
# FRONTEND_REQUIRED_SCOPES=openid profile
# ============================================================
# Frontend OIDC runtime config (served to the SPA via GET /api/config
# — NOT baked into the JS bundle)
# ============================================================
# FRONTEND_OIDC_CLIENT_ID=otel-bi-frontend
# FRONTEND_OIDC_SCOPE=openid profile email
CORS_ORIGINS=http://localhost:5173
MSSQL_HOST=localhost
MSSQL_PORT=1433
MSSQL_USERNAME=readonly_user
MSSQL_PASSWORD=readonly_password
MSSQL_DRIVER=ODBC Driver 18 for SQL Server
MSSQL_TRUST_SERVER_CERTIFICATE=false
WWI_DATABASE=WorldWideImporters
AW_DATABASE=AdventureWorks2022DWH
# Optional direct URLs (override generated URLs):
# WWI_CONNECTION_STRING=mssql+pyodbc://user:pass@host:1433/WorldWideImporters?driver=ODBC+Driver+18+for+SQL+Server&ApplicationIntent=ReadOnly
# AW_CONNECTION_STRING=mssql+pyodbc://user:pass@host:1433/AdventureWorks2022DWH?driver=ODBC+Driver+18+for+SQL+Server&ApplicationIntent=ReadOnly
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=otel_bi_app
POSTGRES_USERNAME=otel_bi_app
POSTGRES_PASSWORD=otel_bi_app
POSTGRES_SSLMODE=require
# Optional direct URL:
# POSTGRES_CONNECTION_STRING=postgresql+psycopg://otel_bi_app:otel_bi_app@localhost:5432/otel_bi_app?sslmode=prefer
POSTGRES_REQUIRED=true
QUERY_SERVICE_URL=http://localhost:8101
ANALYTICS_SERVICE_URL=http://localhost:8102
PERSISTENCE_SERVICE_URL=http://localhost:8103
REQUEST_TIMEOUT_SECONDS=20
REQUIRE_FRONTEND_AUTH=true
FRONTEND_JWT_ISSUER_URL=https://<your-idp-domain>/realms/<your-realm>
FRONTEND_JWT_AUDIENCE=otel-bi-api
FRONTEND_JWT_JWKS_URL=https://<your-idp-domain>/realms/<your-realm>/protocol/openid-connect/certs
FRONTEND_JWT_ALGORITHM=RS256
FRONTEND_REQUIRED_SCOPES=openid profile email
FRONTEND_CLOCK_SKEW_SECONDS=30
INTERNAL_SERVICE_AUTH_ENABLED=true
INTERNAL_SERVICE_SHARED_SECRET=replace-with-strong-random-secret-min-32-bytes
INTERNAL_SERVICE_TOKEN_TTL_SECONDS=120
INTERNAL_SERVICE_TOKEN_AUDIENCE=bi-internal
INTERNAL_SERVICE_ALLOWED_ISSUERS=api-gateway
INTERNAL_TOKEN_CLOCK_SKEW_SECONDS=15
# ============================================================
# Reports — filesystem path for generated XLSX + PDF files
# Mount a K8s CSI / SMB PVC here in production.
# ============================================================
REPORT_OUTPUT_DIR=/tmp/otel-bi-reports
# ============================================================
# OpenTelemetry
# ============================================================
OTEL_SERVICE_NAME=otel-bi-backend
OTEL_SERVICE_NAMESPACE=final-thesis
OTEL_COLLECTOR_ENDPOINT=http://localhost:4318
# K8s + Alloy example:
# OTEL_COLLECTOR_ENDPOINT=http://alloy.monitoring.svc.cluster.local:4318
OTEL_EXPORT_TIMEOUT_MS=10000
FORECAST_HORIZON_DAYS=30
DEFAULT_HISTORY_DAYS=365
RANKING_DEFAULT_TOP_N=10