# 应用配置文件示例
# 包含服务器、数据库等基础配置
# 请根据实际情况修改并保存为 config.yaml

server:
  port: 8080
  mode: debug
  timeout: 30s

database:
  host: localhost
  port: 3306
  user: smartflow_user
  password: "put_your_database_password_here"
  dbname: "put_your_database_name_here"
  charset: utf8mb4
  parseTime: true
  loc: Local

jwt:
  accessSecret: "put_your_jwt_access_secret_here"
  refreshSecret: "put_your_jwt_refresh_secret_here"
  accessTokenExpire: 15min
  refreshTokenExpire: 7d

log:
  level: info
  path: logs/

redis:
  host: localhost
  port: 6379
  password: ""
  db: 0

kafka:
  enabled: true
  brokers:
    - "localhost:9092"
  topic: "smartflow.agent.outbox"
  groupID: "smartflow-agent-outbox-consumer"
  retryScanInterval: 1s
  retryBatchSize: 100
  maxRetry: 20

time:
    zone: "Asia/Shanghai"
    semesterStartDate: "2026-03-02" #学期开始日期，一定要设定为周一，以便于计算周数
    semesterEndDate: "2026-07-19" #学期结束日期，一定要设定为周日，确保最后一周完整

agent:
  workerModel: "doubao-seed-2-0-code-preview-260215" # 智能体使用的Worker模型，需根据实际情况调整
  strategistModel: "doubao-seed-2-0-code-preview-260215" # 策略师使用的Worker模型，需根据实际情况调整
  baseURL: "https://ark.cn-beijing.volces.com/api/v3" # Worker服务的基础URL，需根据实际情况调整
  dailyRefineConcurrency: 7 # 日内并发优化并发度，建议按模型配额调整
  weeklyAdjustBudget: 5 # 周级跨天配平额度上限，防止过度调整

rag:
  enabled: true
  store: "milvus" # 可选：inmemory / milvus
  topK: 8
  threshold: 0.55
  retrieve:
    timeoutMs: 1500
  ingest:
    chunkSize: 400
    chunkOverlap: 80
  embed:
    provider: "eino" # 可选：mock / eino
    model: "doubao-embedding-vision-251215" # 例如 Ark/OpenAI 兼容 embedding 模型名
    baseURL: "https://ark.cn-beijing.volces.com/api/v3" # 这里填服务根路径，SDK 会自动拼接 /embeddings；API Key 统一从环境变量 ARK_API_KEY 读取
    timeoutMs: 1200
    dimension: 1024
  reranker:
    enabled: false
    provider: "noop" # 当前默认 noop，后续可扩展
  milvus:
    address: "http://localhost:19530" # Milvus REST 入口，当前联调确认不要填 9091 健康检查口
    token: "root:Milvus"
    dbName: ""
    collectionName: "smartflow_rag_chunks"
    metricType: "COSINE"
    requestTimeoutMs: 1500

memory:
  enabled: true
  rag:
    enabled: true
  prompt:
    extract: ""
    decision: ""
  threshold: 0.55
  enableReranker: false
  llm:
    temperature: 0.1
    topP: 0.2
  job:
    maxRetry: 6
  worker:
    pollEvery: 2s
    claimBatch: 1

websearch:
  provider: bocha         # 可选：mock | bocha（mock 为空实现，跑通链路用）
  apiKey: ""              # 搜索供应商 API Key（bocha 模式必填，否则降级为 mock）
  timeout: 10s            # 单次搜索请求超时
  fetchTimeout: 15s       # 单次 URL 抓取超时
  fetchMaxChars: 4000     # 抓取正文最大字符数
  rag:
    enabled: false
