3d47227fbd
Remove embedded frontend and workflow editor assets, add standalone API deployment configuration, and retain the current backend service updates.
171 lines
7.5 KiB
YAML
171 lines
7.5 KiB
YAML
language: zh-CN
|
|
|
|
server:
|
|
port: 8083
|
|
# Public address of the independently deployed frontend. Login callbacks redirect here.
|
|
frontendUrl: http://127.0.0.1:3000
|
|
cors:
|
|
# Browser CORS allowlist. In production, replace this with the actual frontend or embedded-site domains, such as https://support.example.com.
|
|
# Leave it empty to reject cross-origin browser requests. Same-origin and non-browser calls are still supported.
|
|
allowedOrigins:
|
|
- http://127.0.0.1:3000
|
|
- http://localhost:3000
|
|
|
|
db:
|
|
# Database driver. Supported values: sqlite, mysql, postgres (postgresql is also accepted).
|
|
type: sqlite
|
|
# Database connection string.
|
|
# SQLite example: file:./data/app.db?_busy_timeout=5000
|
|
# MySQL example: user:password@tcp(127.0.0.1:3306)/cs_ai_agent_db?charset=utf8mb4&parseTime=True&multiStatements=true&loc=Local
|
|
# For MySQL, keep parseTime=True so datetime fields are scanned into Go time values correctly.
|
|
# PostgreSQL example: host=127.0.0.1 user=cs_ai_agent password=change-me dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai
|
|
dsn: file:./data/app.db?_busy_timeout=5000
|
|
# Maximum number of idle connections kept in the pool. Values <= 0 use the database/sql default.
|
|
maxIdleConns: 5
|
|
# Maximum number of open connections. Values <= 0 mean no explicit limit.
|
|
maxOpenConns: 20
|
|
# Maximum time an idle connection may stay in the pool, in seconds. Values <= 0 leave it unset.
|
|
connMaxIdleTimeSeconds: 300
|
|
# Maximum lifetime of a connection, in seconds. Values <= 0 leave it unset.
|
|
connMaxLifetimeSeconds: 1800
|
|
|
|
logger:
|
|
level: info
|
|
format: text
|
|
addSource: false
|
|
|
|
auth:
|
|
# Login access token lifetime, in hours. Values <= 0 fall back to 12 hours.
|
|
# Applies to password login, OIDC login, and WeCom login sessions.
|
|
tokenTTLHours: 12
|
|
# Maximum failed password attempts allowed within the lock window.
|
|
# Values <= 0 disable credential lockout.
|
|
maxFailedAttempts: 5
|
|
# Failed-login lock window, in minutes. When maxFailedAttempts is reached within this window, login is temporarily blocked.
|
|
# Values <= 0 fall back to 15 minutes when lockout is enabled.
|
|
credentialLockMinute: 15
|
|
|
|
customerSession:
|
|
# Signing secret for customer service session tokens. Use a separate, high-entropy random string; do not reuse the channel userTokenSecret.
|
|
secret: ""
|
|
# Default lifetime for customer service session tokens, in minutes.
|
|
ttlMinutes: 120
|
|
# Automatically refresh the token when its remaining lifetime falls below this value, in minutes.
|
|
refreshThresholdMinutes: 30
|
|
|
|
storage:
|
|
# Default file storage provider used for uploads. Supported values: local, oss.
|
|
# Empty value is treated as local by the backend.
|
|
default: local
|
|
# Maximum size of a single uploaded file, in MB. Values <= 0 fall back to the backend default.
|
|
maxUploadSizeMB: 20
|
|
local:
|
|
# Files are written under this directory, relative to the process working directory unless an absolute path is used.
|
|
root: data/storage
|
|
# Public URL prefix used when returning local file URLs. The server must expose this path as static files.
|
|
# Example: storage key "images/a.png" becomes "/storage/images/a.png".
|
|
baseUrl: http://127.0.0.1:8083/storage
|
|
oss:
|
|
# Aliyun OSS endpoint. Both "oss-cn-hangzhou.aliyuncs.com" and "https://oss-cn-hangzhou.aliyuncs.com" are accepted.
|
|
endpoint: ""
|
|
# OSS bucket name.
|
|
bucket: ""
|
|
# OSS access credentials. Keep the secret out of committed environment-specific config.
|
|
accessKeyId: ""
|
|
accessKeySecret: ""
|
|
# Optional public CDN/custom domain prefix for object URLs, for example https://files.example.com.
|
|
# If empty, public buckets use the default bucket endpoint URL; private buckets use signed URLs.
|
|
baseUrl: ""
|
|
# Set to true for private buckets. Private buckets return temporary signed URLs for reads.
|
|
private: false
|
|
# Expiration for generated OSS signed GET URLs, in seconds. Values <= 0 fall back to 600.
|
|
signedUrlExpireSeconds: 600
|
|
|
|
vectorDB:
|
|
type: qdrant # qdrant, lancedb
|
|
qdrant:
|
|
host: 127.0.0.1
|
|
grpcPort: 6334
|
|
apiKey: ""
|
|
useTls: false
|
|
# LanceDB requires building the backend with -tags lancedb and LanceDB native libraries.
|
|
lancedb:
|
|
path: data/lancedb
|
|
|
|
mcp:
|
|
# Global switch for MCP tool integration.
|
|
# When false, MCP tool catalog, debug endpoints, and runtime tool calls are disabled.
|
|
enabled: true
|
|
# MCP server registry. Each map key is the serverCode used by toolCode values like "system/tool_name".
|
|
servers:
|
|
system:
|
|
# Whether this MCP server is available for catalog listing, debug calls, and agent runtime calls.
|
|
enabled: true
|
|
# Streamable HTTP MCP endpoint. The built-in system server is exposed by this backend at /api/mcp.
|
|
endpoint: "http://127.0.0.1:8083/api/mcp"
|
|
# Connection and request timeout in milliseconds. Values <= 0 fall back to 15000.
|
|
timeoutMs: 15000
|
|
# Extra HTTP headers sent to this MCP server on every request, for example Authorization or tenant headers.
|
|
headers: {}
|
|
|
|
oidc:
|
|
# Whether to enable OIDC login. This system acts as the OIDC client.
|
|
enabled: false
|
|
# OIDC provider issuer, for example https://idp.example.com/realms/demo.
|
|
issuer: ""
|
|
clientId: ""
|
|
clientSecret: ""
|
|
# Must exactly match the redirect_uri registered with the OIDC provider.
|
|
redirectUrl: "http://127.0.0.1:8083/api/auth/oidc_callback"
|
|
# Signing secret for the OIDC login state. If left empty, clientSecret is used as the fallback.
|
|
stateSecret: ""
|
|
scopes:
|
|
- openid
|
|
- profile
|
|
- email
|
|
|
|
wxWork:
|
|
# Whether to enable WeCom features.
|
|
# When set to false, the WeCom SDK is not initialized, and login, customer service callbacks, and app notifications are unavailable.
|
|
enabled: false
|
|
# WeCom corporate ID.
|
|
# Example: wwxxxxxxxxxxxxxxxx, from the WeCom admin console.
|
|
corpId:
|
|
# WeCom app secret.
|
|
# Used by the backend to obtain access tokens and user identities. Keep it confidential.
|
|
corpSecret: ""
|
|
# AgentID of the WeCom custom app.
|
|
# Used for web authorization when scope=snsapi_privateinfo.
|
|
agentId:
|
|
# WeCom web authorization callback URL.
|
|
# Must be a full URL pointing to the backend endpoint:
|
|
# Example: http://127.0.0.1:8083/api/auth/wxwork_callback
|
|
# In production, use an official domain that WeCom can access, and make sure the domain is configured in the WeCom admin console.
|
|
oauthRedirect: ""
|
|
# Signing secret for the WeCom login state.
|
|
# Used for tamper protection and replay protection. A separate random string is recommended.
|
|
# If left empty, the code falls back to corpSecret, but this is not recommended.
|
|
stateSecret: ""
|
|
# Private key for decrypting WeCom callbacks.
|
|
# Not used by the current login flow. Reserved for message callbacks and similar scenarios.
|
|
rsaPrivateKey: ""
|
|
# WeCom callback token.
|
|
# Not used by the current login flow. Reserved for message callbacks and similar scenarios.
|
|
token: ""
|
|
# WeCom message encryption/decryption EncodingAESKey.
|
|
# Not used by the current login flow. Reserved for message callbacks and similar scenarios.
|
|
encodingAESKey: ""
|
|
|
|
notify:
|
|
# Whether to enable WeCom app message notifications.
|
|
enabled: false
|
|
# Default list of system user IDs to receive notifications. If the target business user has a bound WeCom identity, that user is preferred.
|
|
# System user IDs are mapped to WeCom member IDs through identity bindings before messages are sent.
|
|
toUsers: []
|
|
# Whether to send confidential messages.
|
|
safe: false
|
|
# Whether to enable duplicate message checks.
|
|
enableDuplicateCheck: true
|
|
# Duplicate message check window, in seconds.
|
|
duplicateCheckInterval: 1800
|