# SmartFlow 后端配置示例
#
# 说明：
# 1. 请复制为 config.yaml 后按实际环境填写。
# 2. 本示例只保留当前代码仍会读取的配置项，避免示例与运行配置持续漂移。

# 服务启动配置。
server:
  port: 8080

# MySQL 主库配置。
database:
  host: localhost
  port: 3306
  user: smartflow_user
  password: "put_your_database_password_here"
  dbname: "put_your_database_name_here"

# 登录态与鉴权令牌配置。
jwt:
  accessSecret: "put_your_jwt_access_secret_here"
  refreshSecret: "put_your_jwt_refresh_secret_here"
  accessTokenExpire: 15min
  refreshTokenExpire: 7d

# Redis 配置。
redis:
  host: localhost
  port: 6379
  password: ""

# Kafka outbox 事件总线配置。
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:
  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 配置。
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://localhost:19530"
    token: "root:Milvus"
    dbName: ""
    collectionName: "smartflow_rag_chunks"
    metricType: "COSINE"
    requestTimeoutMs: 1500

# 记忆模块配置。
memory:
  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: ""
