# 服务器部署环境变量模板
# 使用方式：复制到 /opt/edu/.env 并填入生产值
#   cp infra/deploy.env.example /opt/edu/.env
#   vim /opt/edu/.env
#
# 安全警告：
#   - 此文件含敏感信息，禁止提交到 Git
#   - .gitignore 已忽略 .env
#   - 仅 SRE AI 或人类决策者可编辑

# ============ 数据库（服务器已有 MySQL）============
# DATABASE_URL 中的 host 需用容器名（如 edu-mysql）而非 localhost
# 因为应用容器通过 edu-shared 网络访问 MySQL 容器
DATABASE_URL=mysql://edu:changeme@edu-mysql:3306/next_edu_cloud

# ============ Redis（服务器已有 Redis）============
# 同理用容器名
REDIS_URL=redis://edu-redis:6379

# ============ JWT（生产密钥，必须修改）============
# 生成方式：openssl rand -hex 32
JWT_SECRET=CHANGE_ME_TO_STRONG_RANDOM_SECRET
JWT_ISSUER=next-edu-cloud
JWT_AUDIENCE=next-edu-cloud

# ============ 服务端口 ============
API_GATEWAY_PORT=8080
TEACHER_PORTAL_PORT=3000
ADMIN_PORTAL_PORT=4003

# ============ Kafka（P3+ 启用，留空则 Outbox publisher 持续重试）============
KAFKA_BROKERS=

# ============ push-gateway（WebSocket 推送服务）============
# /internal/push 鉴权 token（msg 服务调用时需携带 X-Internal-Token 头）
INTERNAL_API_TOKEN=CHANGE_ME_TO_STRONG_INTERNAL_TOKEN
# WebSocket 允许的 Origin 白名单（逗号分隔）
WS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:4000,http://localhost:4001,http://localhost:4002,http://localhost:4003
# push-gateway 对外端口
PUSH_GATEWAY_PORT=8081

# ============ 可观测性（P6 启用）============
# OTLP collector 端点，留空则服务跳过 trace 上报
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
LOG_LEVEL=info

# ============ Neo4j（content 服务，留空则降级模式）============
NEO4J_URL=
NEO4J_PASSWORD=

# ============ Elasticsearch（msg 服务，留空则降级模式）============
ES_URL=

# ============ ClickHouse（data-ana 服务，留空则降级模式）============
CLICKHOUSE_HOST=
CLICKHOUSE_PORT=8123
CLICKHOUSE_DATABASE=edu_analytics
CLICKHOUSE_USER=
CLICKHOUSE_PASSWORD=

# ============ LLM 配置（ai 服务，留空则降级模式）============
OPENAI_API_KEY=
OPENAI_BASE_URL=https://api.openai.com/v1
ANTHROPIC_API_KEY=
