Files
geo/server/configs/config.yaml
T
root c0253c98f9 feat(scheduler): expose metrics HTTP and add graceful shutdown
Scheduler now runs a token-protected HTTP server on scheduler.http_port
(default 8081, -1 disables) that exposes Prometheus /metrics and the
daily-task JSON snapshot endpoint. Workers gain a blocking Run(ctx) and
are supervised by a WaitGroup: on SIGINT/SIGTERM the metrics server
shuts down first, worker ticks stop scheduling but ongoing runOnce
calls keep their own context and finish, and the process waits up to
60s before exiting. Adds scheduler.http_host/http_port/internal_metrics_token
to config with SCHEDULER_* env overrides and exposes port 8081 in the
Docker image.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 22:20:43 +08:00

179 lines
4.5 KiB
YAML

server:
port: 8080
mode: debug
database:
host: localhost
port: 5432
user: geo
password: geo_dev
dbname: geo
sslmode: disable
max_open_conns: 25
max_idle_conns: 5
monitoring_database:
host: localhost
port: 5433
user: geo
password: geo_dev
dbname: geo_monitoring
sslmode: disable
max_open_conns: 25
max_idle_conns: 5
rabbitmq:
url: amqp://geo:geo_dev@localhost:5672/geo
monitor_result_exchange: monitor.result
monitor_result_routing_key: monitor.result.ingest
monitor_result_queue: monitor.result.ingest
monitor_result_dlx: monitor.result.dlx
monitor_result_dlq: monitor.result.ingest.dlq
monitor_result_dlq_routing_key: monitor.result.ingest.dlq
monitor_projection_exchange: monitor.projection
monitor_projection_routing_key: monitor.projection.rebuild
monitor_projection_queue: monitor.projection.rebuild
monitor_projection_dlx: monitor.projection.dlx
monitor_projection_dlq: monitor.projection.rebuild.dlq
monitor_projection_dlq_routing_key: monitor.projection.rebuild.dlq
generation_exchange: generation.task
generation_routing_key: generation.task.run
generation_queue: generation.task.run
generation_dlx: generation.task.dlx
generation_dlq: generation.task.run.dlq
generation_dlq_routing_key: generation.task.run.dlq
generation_event_exchange: generation.event
desktop_task_event_exchange: desktop.task.event
desktop_dispatch_exchange: desktop.task.dispatch
desktop_dispatch_publish_prefix: publish
desktop_dispatch_monitor_prefix: monitor
template_assist_exchange: template.assist
template_assist_routing_key: template.assist.run
template_assist_queue: template.assist.run
template_assist_dlx: template.assist.dlx
template_assist_dlq: template.assist.run.dlq
template_assist_dlq_routing_key: template.assist.run.dlq
kol_assist_exchange: kol.assist
kol_assist_routing_key: kol.assist.run
kol_assist_queue: kol.assist.run
kol_assist_dlx: kol.assist.dlx
kol_assist_dlq: kol.assist.run.dlq
kol_assist_dlq_routing_key: kol.assist.run.dlq
consumer_prefetch: 10
publish_channel_pool_size: 32
scheduler:
http_host: 127.0.0.1
http_port: 8081
internal_metrics_token: dev_scheduler_metrics_token
dispatch_interval: 15s
dispatch_timeout: 30s
dispatch_batch_size: 100
dispatch_concurrency: 4
generation_queue_backpressure_limit: 1000
monitoring_workers:
result_ingest_concurrency: 4
projection_rebuild_concurrency: 2
monitoring_dispatch:
desktop_tasks_rollout_percentage: 5
membership:
default_plan_code: free
plans:
- code: free
name: Free
article_generation: 3
article_quota_cycle: lifetime
image_storage_bytes: 10485760
company_limit: 1
subscription_duration: 72h
contact_admin_on_expiry: true
- code: plus
name: Plus
article_generation: 200
article_quota_cycle: monthly
image_storage_bytes: 524288000
company_limit: 1
subscription_duration: 720h
- code: pro
name: Pro
article_generation: 400
article_quota_cycle: monthly
image_storage_bytes: 1073741824
company_limit: 2
subscription_duration: 720h
brand_library:
free_brand_limit: 1
paid_brand_limit: 2
max_keywords: 5
max_questions_per_keyword: 5
redis:
addr: localhost:6379
db: 0
qdrant:
url: localhost:6334
api_key: ""
collection: geo_knowledge_chunks
timeout: 15s
object_storage:
provider: minio
endpoint: localhost:9000
access_key: minioadmin
secret_key: minioadmin
bucket: geo-private
use_ssl: false
public_base_url: ""
region: ""
cache:
driver: redis
jwt:
secret: "dev-secret-change-in-production"
access_ttl: 15m
refresh_ttl: 168h
log:
level: debug,info,warn,error
format: json
llm:
provider: ark
base_url: https://ark.cn-beijing.volces.com/api/v3
api_key: "7fb6c66b-129c-4935-9617-709236c4205a"
model: doubao-seed-2-0-lite-260215 #
knowledge_url_model: doubao-seed-2-0-mini-260215 #doubao-seed-2-0-mini-260215
timeout: 2m
max_output_tokens: 16000
temperature: 0.7
reasoning_effort: minimal
web_search_limit: 3
retrieval:
provider: siliconflow
base_url: https://api.siliconflow.cn/v1
api_key: "sk-dikvcafrdcbajjpfgjjephqcggpdxwxdkighllieijlehwsf"
embedding_model: BAAI/bge-m3
reranker_model: BAAI/bge-reranker-v2-m3
timeout: 30s
chunk_size: 900
chunk_overlap: 120
embedding_batch_size: 16
recall_limit: 12
rerank_top_n: 6
max_chunks_per_doc: 6
overlap_tokens: 60
generation:
queue_size: 128
worker_concurrency: 8
stream_enabled: false
article_timeout: 8m