server:
  port: 8083
  cors:
    allowedOrigins:
      - http://localhost:8083
      - http://127.0.0.1:8083

db:
  type: sqlite
  dsn: file:/app/data/app.db?_busy_timeout=5000
  maxIdleConns: 5
  maxOpenConns: 20
  connMaxIdleTimeSeconds: 300
  connMaxLifetimeSeconds: 1800

logger:
  level: info
  format: text
  addSource: false

auth:
  tokenTTLHours: 12
  maxFailedAttempts: 5
  credentialLockMinute: 15

customerSession:
  secret: replace-with-a-random-secret
  ttlMinutes: 120
  refreshThresholdMinutes: 30

storage:
  default: local
  maxUploadSizeMB: 20
  local:
    root: /app/data/storage
    baseUrl: /storage
  oss:
    endpoint: ""
    bucket: ""
    accessKeyId: ""
    accessKeySecret: ""
    baseUrl: ""
    private: false
    signedUrlExpireSeconds: 600

vectorDB:
  type: lancedb
  qdrant:
    host: qdrant
    grpcPort: 6334
    apiKey: ""
    useTls: false
  lancedb:
    path: /app/data/lancedb

mcp:
  enabled: true
  servers:
    system:
      enabled: true
      endpoint: http://127.0.0.1:8083/api/mcp
      timeoutMs: 60000
      headers: {}

wxWork:
  enabled: false
  corpId: ""
  corpSecret: ""
  agentId: ""
  oauthRedirect: ""
  stateSecret: ""
  rsaPrivateKey: ""
  token: ""
  encodingAESKey: ""
  notify:
    enabled: false
    toUsers: []
    safe: false
    enableDuplicateCheck: true
    duplicateCheckInterval: 1800

oidc:
  enabled: false
  issuer: ""
  clientId: ""
  clientSecret: ""
  redirectUrl: http://127.0.0.1:8083/api/auth/oidc_callback
  stateSecret: ""
  scopes:
    - openid
    - profile
    - email
