2026-04-01 00:58:42 +08:00
|
|
|
# Copy this file to config.local.yaml and adjust values for your local environment.
|
|
|
|
|
# config.local.yaml is gitignored.
|
|
|
|
|
|
|
|
|
|
server:
|
|
|
|
|
port: 8080
|
|
|
|
|
mode: debug
|
|
|
|
|
|
|
|
|
|
database:
|
|
|
|
|
host: localhost
|
|
|
|
|
port: 5432
|
|
|
|
|
user: geo
|
|
|
|
|
password: geo_dev
|
|
|
|
|
dbname: geo
|
2026-05-03 15:04:08 +08:00
|
|
|
sslmode: disable
|
|
|
|
|
max_open_conns: 12
|
|
|
|
|
max_idle_conns: 3
|
2026-04-01 00:58:42 +08:00
|
|
|
|
2026-04-12 09:56:18 +08:00
|
|
|
monitoring_database:
|
|
|
|
|
host: localhost
|
|
|
|
|
port: 5433
|
|
|
|
|
user: geo
|
|
|
|
|
password: geo_dev
|
|
|
|
|
dbname: geo_monitoring
|
|
|
|
|
sslmode: disable
|
2026-05-03 15:04:08 +08:00
|
|
|
max_open_conns: 8
|
|
|
|
|
max_idle_conns: 2
|
2026-04-12 09:56:18 +08:00
|
|
|
|
|
|
|
|
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
|
2026-04-15 14:18:55 +08:00
|
|
|
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
|
2026-04-27 21:33:36 +08:00
|
|
|
desktop_account_health_exchange: desktop.account.health
|
|
|
|
|
desktop_account_health_routing_key: desktop.account.health.report
|
|
|
|
|
desktop_account_health_queue: desktop.account.health.report
|
|
|
|
|
desktop_account_health_dlx: desktop.account.health.dlx
|
|
|
|
|
desktop_account_health_dlq: desktop.account.health.report.dlq
|
|
|
|
|
desktop_account_health_dlq_routing_key: desktop.account.health.report.dlq
|
2026-04-15 14:18:55 +08:00
|
|
|
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
|
2026-05-05 20:48:14 +08:00
|
|
|
compliance_review_exchange: compliance.review
|
|
|
|
|
compliance_review_routing_key: compliance.review.run
|
|
|
|
|
compliance_review_queue: compliance.review.run
|
|
|
|
|
compliance_review_dlx: compliance.review.dlx
|
|
|
|
|
compliance_review_dlq: compliance.review.run.dlq
|
|
|
|
|
compliance_review_dlq_routing_key: compliance.review.run.dlq
|
2026-04-12 09:56:18 +08:00
|
|
|
consumer_prefetch: 10
|
2026-04-15 14:18:55 +08:00
|
|
|
publish_channel_pool_size: 32
|
2026-04-12 09:56:18 +08:00
|
|
|
# Prefer environment override when needed:
|
|
|
|
|
# export RABBITMQ_URL=amqp://geo:geo_dev@localhost:5672/geo
|
|
|
|
|
|
2026-04-15 14:18:55 +08:00
|
|
|
scheduler:
|
|
|
|
|
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
|
|
|
|
|
|
2026-04-18 20:56:05 +08:00
|
|
|
membership:
|
|
|
|
|
default_plan_code: free
|
|
|
|
|
plans:
|
|
|
|
|
- code: free
|
|
|
|
|
name: Free
|
|
|
|
|
article_generation: 3
|
|
|
|
|
article_quota_cycle: lifetime
|
2026-04-28 11:33:30 +08:00
|
|
|
ai_points_monthly: 0
|
|
|
|
|
ai_point_base_chars: 1000
|
2026-04-18 20:56:05 +08:00
|
|
|
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
|
2026-04-28 11:33:30 +08:00
|
|
|
ai_points_monthly: 0
|
|
|
|
|
ai_point_base_chars: 1000
|
2026-04-18 20:56:05 +08:00
|
|
|
image_storage_bytes: 524288000
|
|
|
|
|
company_limit: 1
|
|
|
|
|
subscription_duration: 720h
|
|
|
|
|
- code: pro
|
|
|
|
|
name: Pro
|
|
|
|
|
article_generation: 400
|
|
|
|
|
article_quota_cycle: monthly
|
2026-04-28 11:33:30 +08:00
|
|
|
ai_points_monthly: 1500
|
|
|
|
|
ai_point_base_chars: 1000
|
2026-04-18 20:56:05 +08:00
|
|
|
image_storage_bytes: 1073741824
|
|
|
|
|
company_limit: 2
|
|
|
|
|
subscription_duration: 720h
|
|
|
|
|
|
2026-04-16 21:01:40 +08:00
|
|
|
brand_library:
|
|
|
|
|
free_brand_limit: 1
|
|
|
|
|
paid_brand_limit: 2
|
|
|
|
|
max_keywords: 5
|
|
|
|
|
max_questions_per_keyword: 5
|
|
|
|
|
|
2026-04-01 00:58:42 +08:00
|
|
|
redis:
|
|
|
|
|
addr: localhost:6379
|
|
|
|
|
|
2026-04-05 17:14:13 +08:00
|
|
|
qdrant:
|
|
|
|
|
url: localhost:6334
|
|
|
|
|
collection: geo_knowledge_chunks
|
|
|
|
|
timeout: 15s
|
|
|
|
|
|
|
|
|
|
object_storage:
|
|
|
|
|
provider: minio
|
|
|
|
|
endpoint: localhost:9000
|
|
|
|
|
bucket: geo-private
|
|
|
|
|
use_ssl: false
|
2026-04-05 22:10:05 +08:00
|
|
|
public_base_url: ""
|
|
|
|
|
region: ""
|
2026-04-05 17:14:13 +08:00
|
|
|
# Prefer environment override for secrets:
|
|
|
|
|
# export OBJECT_STORAGE_ACCESS_KEY=minioadmin
|
|
|
|
|
# export OBJECT_STORAGE_SECRET_KEY=minioadmin
|
2026-04-05 22:10:05 +08:00
|
|
|
# MinIO example:
|
|
|
|
|
# provider: minio
|
|
|
|
|
# endpoint: localhost:9000
|
|
|
|
|
# bucket: geo-private
|
|
|
|
|
# use_ssl: false
|
|
|
|
|
#
|
|
|
|
|
# Aliyun OSS example:
|
|
|
|
|
# provider: aliyun
|
|
|
|
|
# endpoint: https://oss-cn-hangzhou.aliyuncs.com
|
|
|
|
|
# bucket: your-bucket
|
|
|
|
|
# region: cn-hangzhou
|
|
|
|
|
# use_ssl: true
|
|
|
|
|
# public_base_url: https://your-bucket.oss-cn-hangzhou.aliyuncs.com
|
|
|
|
|
# export OBJECT_STORAGE_ACCESS_KEY=your-access-key
|
|
|
|
|
# export OBJECT_STORAGE_SECRET_KEY=your-secret-key
|
2026-04-05 17:14:13 +08:00
|
|
|
|
2026-04-01 00:58:42 +08:00
|
|
|
jwt:
|
|
|
|
|
secret: "your-local-secret"
|
2026-04-25 18:09:01 +08:00
|
|
|
access_ttl: 15m
|
|
|
|
|
refresh_ttl: 720h
|
2026-04-01 00:58:42 +08:00
|
|
|
|
|
|
|
|
llm:
|
|
|
|
|
provider: ark
|
|
|
|
|
base_url: https://ark.cn-beijing.volces.com/api/v3
|
|
|
|
|
model: doubao-seed-2-0-lite-260215
|
2026-04-05 20:41:42 +08:00
|
|
|
knowledge_url_model: doubao-seed-2-0-mini-260215
|
2026-04-01 00:58:42 +08:00
|
|
|
timeout: 2m
|
|
|
|
|
max_output_tokens: 4000
|
|
|
|
|
temperature: 0.7
|
2026-04-02 00:31:28 +08:00
|
|
|
reasoning_effort: minimal
|
|
|
|
|
web_search_limit: 3
|
|
|
|
|
# top_p: 0.95
|
2026-04-01 00:58:42 +08:00
|
|
|
# Prefer environment override for secrets:
|
|
|
|
|
# export LLM_API_KEY=your-api-key
|
|
|
|
|
|
2026-05-05 20:48:14 +08:00
|
|
|
compliance:
|
|
|
|
|
enabled: true
|
|
|
|
|
llm_judge_enabled: false
|
|
|
|
|
snapshot_reload_interval: 30s
|
|
|
|
|
publish_gate_timeout: 800ms
|
|
|
|
|
review_worker_concurrency: 1
|
|
|
|
|
review_worker_timeout: 45s
|
|
|
|
|
review_max_attempts: 3
|
|
|
|
|
# Emergency deployment kill switch:
|
|
|
|
|
# export COMPLIANCE_ENABLED=false
|
|
|
|
|
|
2026-04-05 17:14:13 +08:00
|
|
|
retrieval:
|
|
|
|
|
provider: siliconflow
|
|
|
|
|
base_url: https://api.siliconflow.cn/v1
|
|
|
|
|
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
|
|
|
|
|
# Prefer environment override for retrieval api key:
|
|
|
|
|
# export SILICONFLOW_API_KEY=your-siliconflow-api-key
|
|
|
|
|
# or export RETRIEVAL_API_KEY=your-retrieval-api-key
|
|
|
|
|
|
2026-04-01 00:58:42 +08:00
|
|
|
generation:
|
|
|
|
|
queue_size: 128
|
2026-04-15 14:18:55 +08:00
|
|
|
worker_concurrency: 8
|
2026-04-01 00:58:42 +08:00
|
|
|
stream_enabled: false
|
2026-04-02 00:31:28 +08:00
|
|
|
article_timeout: 8m
|