d1e11c705d
- api-server 新增启动期门禁:会提交或会执行 3D job 的角色(api / external-generation-worker / all)缺 TRIPO_BASE_URL 或 TRIPO_API_KEY、值为空白或网关不是合法 HTTP(S) 地址时直接拒绝启动;bgfilter-worker 与 external-generation-controller 不受影响 - 删除内置默认网关常量,AppConfig::default() 的 tripo_base_url 改为空串;请求路径不再把超时静默钳到 .max(1)、重试钳到 .min(10),坏值原样交给 TripoSettings 并映射 503,作为启动期之后的第二道防线 - 两个运行旋钮仍可缺省(沿用内置 60000 / 2),显式声明时零超时、非数字或重试超过 10 都判启动失败 - .env.example 与 deploy/env/api-server.env.example 补齐 TRIPO_* 必填说明;deploy/container/api-server.env.example 与 container-worker-smoke 生成 env 补占位值,避免容器压测与 Jenkins 分支预览起不来 - 文档:新增 ADR 0006 并登记 docs/README.md,同步外部生成 Worker 化方案、开发运维文档、CONTEXT.md、决策记录、踩坑记录与实施计划
83 lines
4.3 KiB
Bash
83 lines
4.3 KiB
Bash
# 复制为 deploy/container/api-server.env 后填入本机或预发值。
|
||
# 该文件只用于容器隔离方案,不参与 systemd/Jenkins 生产部署。
|
||
# 不要在这里写真实 token 后提交 Git。
|
||
|
||
GENARRATIVE_ENV=container
|
||
GENARRATIVE_API_HOST=0.0.0.0
|
||
GENARRATIVE_API_PORT=8082
|
||
# 官网客户端下载与客户端埋点共用部署渠道;修改后重启 API Server。
|
||
# dev 对应 https://dev.genarrative.world;container + dev 额外允许 loopback 地址及可变映射端口。
|
||
# release 对应 https://www.genarrative.world,且不接受 loopback 地址;其它渠道不接收埋点。
|
||
GENARRATIVE_CLIENT_DOWNLOAD_CHANNEL=dev
|
||
GENARRATIVE_API_LOG=info,tower_http=info
|
||
GENARRATIVE_API_LISTEN_BACKLOG=1024
|
||
GENARRATIVE_API_WORKER_THREADS=4
|
||
# 容器 smoke 可临时设 all;压测或预发按 api / external-generation-worker 拆进程。
|
||
GENARRATIVE_PROCESS_ROLE=api
|
||
# 默认 queue 进入 external_generation_job;本地/小流量同步排查可显式设 inline。
|
||
GENARRATIVE_EXTERNAL_GENERATION_MODE=queue
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_ID=
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_CONCURRENCY=2
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_POLL_INTERVAL_MS=2000
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_LEASE_SECONDS=600
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_JOB_TIMEOUT_SECONDS=900
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_LONG_JOB_TIMEOUT_SECONDS=1800
|
||
GENARRATIVE_API_MAX_CONCURRENT_REQUESTS=512
|
||
GENARRATIVE_API_ADMIN_MAX_CONCURRENT_REQUESTS=16
|
||
GENARRATIVE_TRACKING_OUTBOX_ENABLED=true
|
||
GENARRATIVE_TRACKING_OUTBOX_DIR=/var/lib/genarrative/tracking-outbox
|
||
GENARRATIVE_TRACKING_OUTBOX_BATCH_SIZE=500
|
||
GENARRATIVE_TRACKING_OUTBOX_FLUSH_INTERVAL_MS=1000
|
||
GENARRATIVE_TRACKING_OUTBOX_MAX_BYTES=268435456
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_ENABLED=true
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_DIR=/var/lib/genarrative/wallet-refund-outbox
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_BATCH_SIZE=100
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_FLUSH_INTERVAL_MS=1000
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_MAX_BYTES=67108864
|
||
GENARRATIVE_BGFILTER_WORKER_CONCURRENCY=16
|
||
GENARRATIVE_EDITOR_BGFILTER_SINGLE_IMAGE_ESTIMATE_MS=5000
|
||
GENARRATIVE_EDITOR_BGFILTER_CIRCUIT_FAILURE_THRESHOLD=3
|
||
GENARRATIVE_EDITOR_BGFILTER_CIRCUIT_COOLDOWN_SECONDS=120
|
||
# BgFilter 失败后的中间兜底:阿里云通用抠图(SegmentCommonImage)。AccessKey 留空则跳过该层,
|
||
# BgFilter 失败直接本地 editor_green_screen 去背;填入后恢复 BgFilter→阿里云→本地三级兜底。
|
||
# AccessKey 也可复用标准 SDK 命名 ALIBABA_CLOUD_ACCESS_KEY_ID / ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||
GENARRATIVE_ALIYUN_MATTING_ENABLED=true
|
||
GENARRATIVE_ALIYUN_MATTING_ENDPOINT=imageseg.cn-shanghai.aliyuncs.com
|
||
GENARRATIVE_ALIYUN_MATTING_ACCESS_KEY_ID=
|
||
GENARRATIVE_ALIYUN_MATTING_ACCESS_KEY_SECRET=
|
||
GENARRATIVE_ALIYUN_MATTING_REQUEST_TIMEOUT_MS=30000
|
||
|
||
# Tripo 3D 生成:网关与密钥没有内置默认值,会提交 / 执行 3D job 的角色
|
||
#(api / external-generation-worker / all)缺任意一项就拒绝启动。
|
||
# 下面的占位值只用于容器压测与 Jenkins 分支预览这类不跑真实 3D 请求的环境;
|
||
# 要真实跑 3D 必须换成真凭据,否则进程能起、3D 提交会在请求期 503。
|
||
TRIPO_BASE_URL=https://openapi.tripo3d.com/v3
|
||
TRIPO_API_KEY=CHANGE_ME_FOR_CONTAINER
|
||
TRIPO_REQUEST_TIMEOUT_MS=60000
|
||
TRIPO_RETRIES=2
|
||
|
||
GENARRATIVE_OTEL_ENABLED=true
|
||
OTEL_SERVICE_NAME=genarrative-api
|
||
OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4318
|
||
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=container,service.namespace=genarrative
|
||
|
||
GENARRATIVE_INTERNAL_API_SECRET=CHANGE_ME_FOR_CONTAINER
|
||
GENARRATIVE_JWT_ISSUER=genarrative-container
|
||
GENARRATIVE_JWT_SECRET=CHANGE_ME_FOR_CONTAINER
|
||
AUTH_REFRESH_COOKIE_SECURE=false
|
||
|
||
# 默认连接 compose 内部 SpacetimeDB;宿主机发布模块使用 127.0.0.1:13101。
|
||
GENARRATIVE_SPACETIME_SERVER_URL=http://spacetimedb:3101
|
||
GENARRATIVE_SPACETIME_DATABASE=genarrative-loadtest
|
||
GENARRATIVE_SPACETIME_TOKEN=
|
||
# HTTP 角色使用 8 条无 read-model 订阅的调用连接,并额外创建 1 条共享缓存读连接。
|
||
GENARRATIVE_SPACETIME_POOL_SIZE=8
|
||
GENARRATIVE_SPACETIME_PROCEDURE_TIMEOUT_SECONDS=45
|
||
|
||
GENARRATIVE_LLM_PROVIDER=openai-compatible
|
||
GENARRATIVE_LLM_BASE_URL=https://api.tiantoken.com/v1
|
||
GENARRATIVE_LLM_API_KEY=
|
||
GENARRATIVE_LLM_MODEL=gpt-5.4-mini
|
||
WECHAT_MINIPROGRAM_MESSAGE_TOKEN=
|
||
WECHAT_MINIPROGRAM_MESSAGE_ENCODING_AES_KEY=
|