# SmartFlow 容器化部署配置模板。 # # 说明: # 1. 该文件面向 Docker Compose 内部网络,所有依赖地址都改为服务名。 # 2. 本地开发仍可继续使用 backend/config.yaml,不与该文件冲突。 # 3. 正式部署前请至少替换 JWT 密钥、模型密钥与外部服务凭证。 server: port: 8080 database: host: mysql port: 3306 user: smartflow_user password: "smartflow_password_456" dbname: "smartflow" jwt: accessSecret: "change_me_access_secret" refreshSecret: "change_me_refresh_secret" accessTokenExpire: 15min refreshTokenExpire: 7d geetest: captchaID: "80eb5b33de9fba62c69f5e57e36d9638" privateKey: "991f9ad68191cbf6b823257ac67372f3" redis: host: redis port: 6379 password: "redis_password_789" userauth: allowRegister: false rpc: listenOn: "0.0.0.0:9081" endpoints: - "userauth:9081" timeout: 2s taskclassforum: rpc: listenOn: "0.0.0.0:9090" endpoints: - "taskclassforum:9090" timeout: 2s tokenstore: reward: forumLikeAmount: 1 forumImportAmount: 5 rpc: listenOn: "0.0.0.0:9095" endpoints: - "tokenstore:9095" timeout: 2s llm: rpc: listenOn: "0.0.0.0:9096" endpoints: - "llm:9096" timeout: 0s kafka: enabled: true brokers: - "kafka:9092" topic: "smartflow.agent.outbox" groupID: "smartflow-agent-outbox-consumer" retryScanInterval: 1s retryBatchSize: 100 maxRetry: 20 outbox: services: agent: topic: "smartflow.agent.outbox" groupID: "smartflow-agent-outbox-consumer" table: "agent_outbox_messages" task: topic: "smartflow.task.outbox" groupID: "smartflow-task-outbox-consumer" table: "task_outbox_messages" memory: topic: "smartflow.memory.outbox" groupID: "smartflow-memory-outbox-consumer" table: "memory_outbox_messages" active-scheduler: topic: "smartflow.active-scheduler.outbox" groupID: "smartflow-active-scheduler-outbox-consumer" table: "active_scheduler_outbox_messages" notification: topic: "smartflow.notification.outbox" groupID: "smartflow-notification-outbox-consumer" table: "notification_outbox_messages" taskclass-forum: topic: "smartflow.taskclass-forum.outbox" groupID: "smartflow-taskclass-forum-outbox-consumer" table: "taskclass_forum_outbox_messages" llm: topic: "smartflow.llm.outbox" groupID: "smartflow-llm-outbox-consumer" table: "llm_outbox_messages" token-store: topic: "smartflow.token-store.outbox" groupID: "smartflow-token-store-outbox-consumer" table: "token_store_outbox_messages" notification: rpc: listenOn: "0.0.0.0:9082" endpoints: - "notification:9082" timeout: 6s frontendBaseURL: "https://smartflow.example.com" retryScanEvery: 1m retryBatchSize: 50 cors: allowedOrigins: - "http://localhost:5173" - "https://smartflow.example.com" schedule: rpc: listenOn: "0.0.0.0:9084" endpoints: - "schedule:9084" timeout: 6s task: rpc: listenOn: "0.0.0.0:9085" endpoints: - "task:9085" timeout: 6s taskClass: rpc: listenOn: "0.0.0.0:9086" endpoints: - "task-class:9086" timeout: 6s course: rpc: listenOn: "0.0.0.0:9087" endpoints: - "course:9087" timeout: 5m activeScheduler: rpc: listenOn: "0.0.0.0:9083" endpoints: - "active-scheduler:9083" timeout: 8s jobScanEvery: 1m jobScanLimit: 50 time: zone: "Asia/Shanghai" semesterStartDate: "2026-03-02" semesterEndDate: "2026-07-19" agent: rpc: listenOn: "0.0.0.0:9089" endpoints: - "agent:9089" timeout: 0s chat: enabled: true api: enabled: true liteModel: "doubao-seed-2-0-code-preview-260215" proModel: "doubao-seed-2-0-code-preview-260215" maxModel: "doubao-seed-2-0-code-preview-260215" baseURL: "https://ark.cn-beijing.volces.com/api/v3" thinking: plan: true execute: true deliver: false memory: false courseImport: visionModel: "" maxImageBytes: 5242880 maxTokens: 8192 rag: enabled: true store: "milvus" topK: 8 threshold: 0.55 retrieve: timeoutMs: 1500 ingest: chunkSize: 400 chunkOverlap: 80 embed: provider: "eino" model: "doubao-embedding-vision-251215" baseURL: "https://ark.cn-beijing.volces.com/api/v3" timeoutMs: 1200 dimension: 1024 reranker: enabled: false provider: "noop" timeoutMs: 1200 milvus: address: "http://milvus-standalone:19530" token: "root:Milvus" dbName: "" collectionName: "smartflow_rag_chunks" metricType: "COSINE" requestTimeoutMs: 1500 memory: rpc: listenOn: "0.0.0.0:9088" endpoints: - "memory:9088" timeout: 6s enabled: true rag: enabled: true read: mode: legacy constraintLimit: 5 preferenceLimit: 5 factLimit: 5 inject: renderMode: flat prompt: extract: "" decision: "" threshold: 0.55 enableReranker: false llm: temperature: 0.1 topP: 0.2 job: maxRetry: 6 worker: pollEvery: 2s claimBatch: 1 decision: enabled: true candidateTopK: 5 candidateMinScore: 0.6 fallbackMode: legacy_add write: mode: legacy minConfidence: 0.5 websearch: provider: bocha apiKey: ""