98f73c5bea
Introduces Aliyun OSS as an alternative to MinIO; deploy scripts and CI workflows now read object_storage.provider from config and conditionally include or skip MinIO resources in both Docker Compose and k3s paths. Also adds ops scheduler domain and its migration tables. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
261 lines
6.9 KiB
YAML
261 lines
6.9 KiB
YAML
server:
|
|
port: 8080
|
|
mode: debug
|
|
# 生产环境请配置为真实前端域名,例如 https://app.example.com。
|
|
# 留空时沿用开发环境 CORS 放开策略。
|
|
allowed_origins: []
|
|
security_headers:
|
|
enabled: true
|
|
trusted_proxies:
|
|
- 127.0.0.1
|
|
- ::1
|
|
- 10.42.0.0/16
|
|
- 10.43.0.0/16
|
|
- 172.16.0.0/12
|
|
|
|
database:
|
|
host: localhost
|
|
port: 5432
|
|
user: geo
|
|
password: geo_dev
|
|
dbname: geo
|
|
sslmode: disable
|
|
max_open_conns: 12
|
|
max_idle_conns: 3
|
|
|
|
monitoring_database:
|
|
host: localhost
|
|
port: 5433
|
|
user: geo
|
|
password: geo_dev
|
|
dbname: geo_monitoring
|
|
sslmode: disable
|
|
max_open_conns: 8
|
|
max_idle_conns: 2
|
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
ai_points_monthly: 10
|
|
ai_point_base_chars: 1000
|
|
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
|
|
ai_points_monthly: 1000
|
|
ai_point_base_chars: 1000
|
|
image_storage_bytes: 26214000
|
|
company_limit: 1
|
|
subscription_duration: 720h
|
|
- code: pro
|
|
name: Pro
|
|
article_generation: 400
|
|
article_quota_cycle: monthly
|
|
ai_points_monthly: 1500
|
|
ai_point_base_chars: 1000
|
|
image_storage_bytes: 524288000
|
|
company_limit: 2
|
|
subscription_duration: 720h
|
|
|
|
brand_library:
|
|
free_brand_limit: 1
|
|
paid_brand_limit: 2
|
|
question_limits_by_plan:
|
|
default: 25
|
|
free: 5
|
|
plus: 25
|
|
pro: 50
|
|
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: aliyun
|
|
endpoint: https://oss-cn-shanghai.aliyuncs.com
|
|
access_key: LTAI5tAEj8euR8B1gXzMoG84
|
|
secret_key: lJPrKo9ViyHJE8UWIMmMCY0B6Je8v2
|
|
bucket: shengxintui
|
|
use_ssl: true
|
|
public_base_url: ""
|
|
region: cn-shanghai
|
|
|
|
cache:
|
|
driver: redis
|
|
|
|
jwt:
|
|
secret: "dev-secret-change-in-production"
|
|
access_ttl: 15m
|
|
refresh_ttl: 720h
|
|
|
|
auth:
|
|
login_guard:
|
|
enabled: true
|
|
password_cipher:
|
|
# 留空 private_key_pem 时会在单进程内生成临时密钥;生产多实例请通过环境变量注入同一把私钥。
|
|
enabled: true
|
|
key_id: login-password-rsa-oaep-v1
|
|
private_key_pem: ""
|
|
|
|
log:
|
|
level: debug,info,warn,error
|
|
format: json
|
|
|
|
# https://console.volcengine.com/ark/region:ark+cn-beijing/model/detail?Id=doubao-seed-2-0-pro
|
|
|
|
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-260428 # doubao-seed-2-0-pro-260215 #
|
|
knowledge_url_model: doubao-seed-2-0-mini-260428 #doubao-seed-2-0-mini-260215
|
|
timeout: 2m
|
|
max_output_tokens: 16000
|
|
temperature: 0.7
|
|
reasoning_effort: minimal
|
|
web_search_limit: 3
|
|
|
|
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
|
|
|
|
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
|
|
task_lease_ttl: 10m
|
|
task_recovery_interval: 1m
|
|
task_recovery_timeout: 30s
|
|
task_recovery_batch_size: 100
|
|
task_queued_stale_after: 2m
|
|
task_max_attempts: 3
|
|
|
|
browser_fetch:
|
|
enabled: true
|
|
provider: lightpanda
|
|
service_url: http://localhost:8082
|
|
token: dev-browser-fetch-token
|
|
queue_size: 64
|
|
worker_concurrency: 3
|
|
request_timeout: 45s
|
|
cache_ttl: 6h
|
|
allowed_domains:
|
|
- zhuanlan.zhihu.com
|
|
- zhihu.com
|
|
- baidu.com
|
|
- weixin.sogou.com
|
|
trigger_status:
|
|
- 403
|
|
- 429
|
|
- 500
|
|
- 502
|
|
- 503
|
|
- 504
|
|
|