Phase 1 - Internal reference cleanup:
- Delete dev_docs/meetings/ (internal meeting notes/transcripts)
- Replace hardcoded usernames (padak/matejkys/dasa) with deploy/generic
- Replace "Internal AI Data Analyst" with "AI Data Analyst"
- Replace keboola/internal_ai_data_analyst URLs with your-org/ai-data-analyst
- Replace /tmp/keboola_load/ with /tmp/data_analyst_staging/ in dev_docs
Phase 2 - Deployment hardening:
- Tighten sudoers wildcards to explicit paths (visudo, sudoers cp)
- setup.sh creates all groups (data-ops, dataread, data-private) and deploy user
- webapp-setup.sh copies sudoers-webapp from repo instead of inline definition
- deploy.sh conditional copy for data_description.md (not in git for OSS)
- deploy.sh ownership changed to deploy:data-ops for /data/{scripts,docs,examples}
Phase 3 - Config and misc:
- Add ${ENV_VAR} interpolation to config/loader.py
- Expand config/instance.yaml.example with all sections (admins, deployment, auth, etc.)
- Create config/.env.template for secret values
- Add MIT LICENSE
- Fix .gitignore: add .venv/, docs/data_description.md
- Fix README.md: CSV status Planned, remove metrics/, update license text
- Translate Czech comments in requirements.txt to English
- Fix test_account_service.py: mock username mapping instead of relying on instance config
All 118 tests pass.
22 lines
607 B
Text
22 lines
607 B
Text
# AI Data Analyst - Environment Variables
|
|
# ========================================
|
|
# Secret values referenced by ${VAR} in config/instance.yaml.
|
|
# Copy to .env: cp config/.env.template .env
|
|
# .env is gitignored - NEVER commit it.
|
|
|
|
# Required for webapp
|
|
WEBAPP_SECRET_KEY= # python -c "import secrets; print(secrets.token_hex(32))"
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
|
|
# Keboola adapter (skip if using CSV)
|
|
# KEBOOLA_STORAGE_TOKEN=
|
|
|
|
# Optional
|
|
# SENDGRID_API_KEY=
|
|
# TELEGRAM_BOT_TOKEN=
|
|
# DESKTOP_JWT_SECRET=
|
|
# JIRA_API_TOKEN=
|
|
# JIRA_WEBHOOK_SECRET=
|
|
# JIRA_SLA_API_TOKEN=
|
|
# ANTHROPIC_API_KEY=
|