Files
sapl/.env.example
Hermes Agent 9aacd1f4f6 promote(prod): uat@f8033bc5 -> main - weekly release (75 PRs / 170 files)
Union resolution on .gitea/workflows/ci.yml (2 hunks, test-gate lists only):
- offline gate: main + test_scraper_proxy + test_scraper_browser_lane
  (sources/worker_modes/v2_loop/rtve stay in the dep-richer step per #1664 -
  they importorskip fastapi and would fake coverage offline)
- dep-richer tail: UNION of main coverage (concept_auto_tag..taxonomy_resolver)
  + uat reverse_lookup x4. Side-pick either way drops real coverage.
Preflight: 13/13 canaries, YAML valid, 87/87 gated tests exist,
py_compile clean, lazy parity 56/56, security scan clean.
2026-10-23 13:16:57 +05:30

107 lines
2.8 KiB
Bash

# SAPL Backend — Dokploy Environment Reference
# Get values from backend/.env (local machine)
# Paste into Dokploy → Compose → Environment
# Azure OpenAI (Vision / Chat)
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_API_BASE=
AZURE_OPENAI_DEPLOYMENT_NAME=
AZURE_OPENAI_API_VERSION=
# Azure OpenAI (Embeddings)
AZURE_OPENAI_EMBEDDINGS_API_KEY=
AZURE_OPENAI_EMBEDDINGS_API_BASE=
AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=
AZURE_OPENAI_EMBEDDINGS_API_VERSION=
# Mistral AI
MISTRAL_API_KEY=
MISTRAL_VISION_MODEL=pixtral-large-latest
MISTRAL_EMBED_MODEL=mistral-embed
MISTRAL_AGENT_MODEL=mistral-large-latest
# Groq (agent reasoning)
GROQ_API_KEY=
GROQ_AGENT_MODEL=llama-3.3-70b-versatile
# Claude (backup)
CLAUDE_API_KEY=
# Gemini (vision, embeddings, image gen)
GEMINI_API_KEY=
GEMINI_VISION_MODEL=gemini-3.7-flash
GEMINI_SYNTHESIS_MODEL=gemini-3.7-flash
GEMINI_EMBED_MODEL=gemini-embedding-2-preview
GEMINI_IMAGE_MODEL=gemini-3-pro-image
# Moodboard PDF page analysis (concurrency/perf knobs — bounded semaphore
# replaces the old sequential page loop + fixed 5s sleep)
MOODBOARD_PAGE_CONCURRENCY=2
MOODBOARD_PAGE_DELAY=5.0
MOODBOARD_PAGE_RETRY_DELAYS=15,30,60
MOODBOARD_PAGE_ATTEMPT_TIMEOUT=300.0
# Stitch ERP
STITCH_USERNAME=
STITCH_PASSWORD=
STITCH_API_KEY=
STITCH_API_HOST=https://portal2.stitcherp.com
# WFX WebAPI
WFX_USERNAME=
WFX_PASSWORD=
WFX_COMPANYID=
WFX_TOKEN_ID=
WFX_TOKEN_SECRET=
WFX_API_HOST=https://sapl.worldfashionexchange.com
# Auth — REQUIRED in every environment. Auth tokens are HMAC-SHA256 signed with
# this key; the app boots with a FORGEABLE dev default until you set it.
# Generate a strong value: openssl rand -hex 32
# NOTE: changing SECRET_KEY invalidates all existing sessions (users re-login).
SECRET_KEY=change-this-in-production
# CORS / URLs
CORS_ORIGINS=https://sapl.ai-automation-hub.tech
QR_BASE_URL=https://sapl.ai-automation-hub.tech
# Database / Paths (Dokploy defaults — match docker-compose.yml)
DATABASE_URL=sqlite:////app/data/sapl_garment_intel.db
CHROMADB_PATH=/app/data/chromadb
IMAGES_PATH=/app/data/images
# Gmail Bot (Order Ingest)
MAIL_AUTH_USER=
MAIL_APP_PASSWORD=
MAIL_FROM=
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
MAIL_MAILBOX=BOM
MAIL_FILTER_TO=
# Feature Flags
ENABLE_SCRAPER=false
# Build-time only (Dokploy env-only changes won't apply without rebuild)
VITE_APP_VERSION=uat-local
# Reverse Lookup S2+S3 (refs #1525) — empty = that half fails/skips cleanly
TREG_TOKEN=
GOOGLE_VISION_API_KEY=
REVERSE_LOOKUP_PUBLIC_BASE_URL=
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=
# Scraper egress proxy + lanes (refs #1780) — empty = direct + fail-soft skips
SCRAPER_PROXY_URL=
SCRAPER_PROXY_BRANDS=
BD_SCRAPE_WSS=
BD_SCRAPER_WSS=
BRIGHTDATA_API_KEY=
BD_UNLOCKER_ZONE=
# UAT mail safety — dry-run logs instead of delivering (UAT default true)
MAIL_DRY_RUN=true