# 灵犀 · 环境变量示例(入库,禁止写真实密钥) # 使用:cp .env.example .env.local(工程规范 09 ENV-09) # 注意:本地 PostgreSQL/Redis 复用本机已有 Docker 服务(127.0.0.1:5432 / 6379); # 对象存储为公网 RustFS,本地真实值只写入 .env.local / .env(已 gitignore)。 # ---------- 运行环境 ---------- NODE_ENV=development LOG_LEVEL=debug # ---------- 数据库(PostgreSQL 18) ---------- # 本地开发沿用 postgres 账号;生产 DATABASE_URL 应使用 A5 迁移创建的 NOLOGIN 角色 lingxi_app # (审计表仅 SELECT / INSERT,append-only 由 DB 触发器兜底;其他业务表的授权见运维 Runbook)。 DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/lingxi?schema=public # ---------- Redis(7.4) ---------- REDIS_URL=redis://127.0.0.1:6379 # ---------- 对象存储(RustFS,S3 协议;A0 统一使用 lingxi-dev 桶) ---------- S3_ENDPOINT=https://oss.xinsenidea.com S3_REGION=us-east-1 S3_BUCKET_ASSETS=lingxi-dev S3_BUCKET_RENDERS=lingxi-dev S3_BUCKET_TEMP=lingxi-dev S3_ACCESS_KEY= S3_SECRET_KEY= # ---------- 认证(本地 dev 值,生产由密钥管理注入;密钥至少 32 位) ---------- JWT_ACCESS_SECRET=dev-only-jwt-access-secret-change-me-32 JWT_REFRESH_SECRET=dev-only-jwt-refresh-secret-change-me-32 # access / refresh 有效期(秒):15 分钟 / 7 天 JWT_ACCESS_TTL_SECONDS=900 JWT_REFRESH_TTL_SECONDS=604800 # 登录失败阈值与锁定时长(分钟内累计失败达阈值即锁定) AUTH_MAX_LOGIN_FAILURES=5 AUTH_LOCK_MINUTES=15 # ---------- API ---------- PORT=3000 HOST=0.0.0.0 WEB_ORIGIN=http://127.0.0.1:5173,http://localhost:5173 MAX_UPLOAD_MB=500 # ---------- Worker / 队列(BullMQ,技术架构 §2.4 / §3.7) ---------- # 队列分 5 组共 9 条(script:generate / image:matting / image:render / video:keyframe / video:shot / # video:compose / delivery:zip / export:package / media:verify),名称与并发 / 重试 / 退避参数 # 的唯一事实源是 packages/shared 的 TASK_QUEUES,这里只决定 worker 启动哪些队列: # all 启动全部 9 条(本地开发默认) # 分组名,逗号分隔 script / image / video / export / verify(如 QUEUE=verify) # 具体队列名 如 QUEUE=media:verify 或 QUEUE=image:render,media:verify QUEUE=all # 可选:统一覆盖全部队列的消费并发;留空 / 注释时按 TASK_QUEUES 的每队列定义 # (如 media:verify=4、script:generate=8、video:shot=12)。 # WORKER_CONCURRENCY=2 # 可选:worker 标识,默认 -;写入心跳 lingxi:worker:heartbeat:(TTL 30s)。 # WORKER_ID=dev-worker-01 # API 进程内 Outbox dispatcher 的调度间隔(毫秒);未设置默认 1000。 # OUTBOX_DISPATCH_INTERVAL_MS=1000 # ---------- 前端(只能暴露 VITE_PUBLIC_* 前缀,ENV-07) ---------- VITE_PUBLIC_API_BASE_URL=http://127.0.0.1:3000/api/v1 # A0 登录壳没有接后端鉴权,置 true 时登录页写入本地演示会话以便查看布局;A1 接入真实登录后删除。 VITE_PUBLIC_DEMO_SESSION=false # ---------- 可观测 ---------- OTEL_EXPORTER_OTLP_ENDPOINT= # ---------- 功能开关 ---------- FEATURE_VIDEO=false