server:
  port: 8080
  tomcat:
    max-swallow-size: -1
  error:
    include-exception: true
    include-stacktrace: ALWAYS
    include-message: ALWAYS
  servlet:
    context-path: /jeecg-boot
  compression:
    enabled: true
    min-response-size: 1024
    mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*

management:
  endpoints:
    web:
      exposure:
        include: metrics,httpexchanges,jeecghttptrace

spring:
#  main:
#    # 启动加速 (建议开发环境，开启后flyway自动升级失效)
#    lazy-initialization: true
  flyway:
    # 是否启用flyway
    enabled: false
    # 迁移sql脚本存放路径
    locations: classpath:flyway/sql/mysql
    # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库，非常重要！！！
    clean-disabled: true
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
  mail:
    # 定时任务发送邮件
    timeJobSend: false
    host: smtp.163.com
    username: jeecgos@163.com
    password: ??
    properties:
      mail.smtp.timeout: 10000  # 连接超时（毫秒）
      mail.smtp.connectiontimeout: 10000  # 连接超时（毫秒）
      mail.smtp.writetimeout: 10000  # 写入超时（毫秒）
      mail.smtp.auth: true
      smtp.ssl.enable: true
#      mail.debug: true  # 启用调试模式(查看详细日志)
  ## quartz定时任务,采用数据库方式
  quartz:
    job-store-type: jdbc
    jdbc:
      initialize-schema: embedded
    #定时任务启动开关，true-开  false-关
    auto-startup: true
    #延迟1秒启动定时任务
    startup-delay: 1s
    #启动时更新己存在的Job
    overwrite-existing-jobs: true
    properties:
      org:
        quartz:
          scheduler:
            instanceName: MyScheduler
            instanceId: AUTO
          jobStore:
            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            misfireThreshold: 12000
            clusterCheckinInterval: 15000
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
  #json 时间戳统一转换
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  jpa:
    open-in-view: false
  aop:
    proxy-target-class: true
  #配置freemarker
  freemarker:
    # 设置模板后缀名
    suffix: .ftl
    # 设置文档类型
    content-type: text/html
    # 设置页面编码格式
    charset: UTF-8
    # 设置页面缓存
    cache: false
    prefer-file-system-access: false
    # 设置ftl文件路径
    template-loader-path:
      - classpath:/templates
    template_update_delay: 0
  # 设置静态文件路径，js,css等
  mvc:
    static-path-pattern: /**
    #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher
    pathmatch:
      matching-strategy: ant_path_matcher
  resource:
    static-locations: classpath:/static/,classpath:/public/
  autoconfigure:
    exclude:
      - com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
      - org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      druid:
        # 连接池的配置信息
        # 初始化大小，最小，最大
        initial-size: 5
        min-idle: 5
        maxActive: 1000
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间，单位是毫秒
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        # 打开PSCache，并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计拦截的filters，去掉后监控界面sql无法统计，'wall'用于防火墙
        filters: stat,slf4j
        # 允许SELECT语句的WHERE子句是一个永真条件
        wall:
          selectWhereAlwayTrueCheck: false
        # 打开mergeSql功能；慢SQL记录
        stat:
          merge-sql: false
          slow-sql-millis: 5000
      datasource:
        master:
          url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
#        # shardingjdbc数据源
#        sharding-db:
#          driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver
#          url: jdbc:shardingsphere:classpath:sharding.yaml
  #redis 配置
  data:
    redis:
      database: 0
      host: 127.0.0.1
      port: 6379
      password:
#mybatis plus 设置
mybatis-plus:
  mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml
  global-config:
    # 关闭MP3.0自带的banner
    banner: false
    db-config:
      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
      id-type: ASSIGN_ID
      # 默认数据库表下划线命名
      table-underline: true
  configuration:
    # 这个配置会将执行的sql打印出来，在开发或测试的时候可以用
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 返回类型为Map,显示null对应的字段
    call-setters-on-nulls: true
#jeecg专用配置
minidao:
  base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
jeecg:
  # 自定义资源请求前缀（js、css等解决nginx转发问题）
  custom-resource-prefix-path:
  # AI集成
  ai-chat:
    enabled: true
    model: deepseek-chat
    apiKey: ??
    apiHost: https://api.deepseek.com/v1
    timeout: 60
    skills-dir:
    skills-shell-dir:
    # AI文生图绘画
    ai-model-draw:
      # 提供商 OPENAI/ZHIPU/QWEN
      provider: QWEN
      model: wan2.2-t2i-flash
      apiKey: sk-??
      apiHost: https://dashscope.aliyuncs.com/api/v1/
      timeout: 60
    # AI图生图绘画
    ai-model-pic-draw:
      # 提供商 QWEN
      provider: QWEN
      # 目前只支持 wan2.5-i2i-preview和wanx2.1-imageedit模型
      model: wan2.5-i2i-preview
      apiKey: sk-??
      apiHost: https://dashscope.aliyuncs.com/api/v1/
      timeout: 60
    # AI语音
    ai-model-voice:
      provider: ZHIPU
      model: glm-tts
      apiKey: ??
      apiHost: https://open.bigmodel.cn/api/paas/v4
      timeout: 60
      # tongtong、chuichui、xiaochen、jam、kazi、douji、luodo
      voice: tongtong
      speed: 1.0
      volume: 0.0
    # AI视频
    ai-model-video:
      provider: ZHIPU
      model: ??
      apiKey: sk-??
      apiHost: https://api.deepseek.com/v1
      timeout: 60
      ffmpeg-path:
      edge-tts-path:
    # 默认向量模型
    ai-model-embed:
      provider: QWEN
      model: text-embedding-v1
      apiKey: sk-??
      apiHost: https://dashscope.aliyuncs.com/api/v1/services/
      timeout: 60
  # AIRag向量库
  ai-rag:
    # AI流程敏感节点(stdio=命令行节点, sql=SQL节点)
    allow-sensitive-nodes: sql,stdio
    embed-store:
      host: 127.0.0.1
      port: 5432
      database: postgres
      user: postgres
      password: postgres
      table: embeddings
    # Brave Search 联网检索（AI Agent 工具）
    brave-search:
      api-key: ??
      endpoint: https://api.search.brave.com/res/v1/web/search
      count: 10
      timeout: 15
  #  Unipush配置 云函数调用 URL 化地址
  unicloud:
    pushUrl:
  # 平台上线安全配置
  firewall:
    # 数据源安全 (开启后，Online报表和图表的数据源为必填)
    dataSourceSafe: false
    # 低代码模式（dev:开发模式，prod:发布模式——关闭所有在线开发配置能力）
    lowCodeMode: dev
    # 是否允许同一账号多地同时登录 （为 true 时允许一起登录, 为 false 时新登录挤掉旧登录）
    is-concurrent: true
  # 签名密钥串(前后端要一致，正式发布请自行修改)
  signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
  #签名拦截接口
  signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys,/sys/sendChangePwdSms,/sys/user/sendChangePhoneSms,/sys/sms,/desform/api/sendVerifyCode
  # 本地：local、Minio：minio、阿里云：alioss
  uploadType: local
  # 前端访问地址
  domainUrl:
    pc: http://localhost:3100
    app: http://localhost:8051
  path:
    #文件上传根目录 设置
    upload: /opt/upFiles
    #webapp文件路径
    webapp: /opt/webapp
  shiro:
    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/**
  # 短信发送方式 aliyun阿里云短信 tencent腾讯云短信
  smsSendType: aliyun
  #阿里云oss存储和大鱼短信秘钥配置
  oss:
    accessKey: ??
    secretKey: ??
    endpoint: oss-cn-beijing.aliyuncs.com
    bucketName: jeecgdev
    # 短信模板
    sms-template:
      # 签名
      signature:
      # 模板code
      templateCode:
        # 登录短信、忘记密码模板编码
        SMS_175435174:
        # 修改密码短信模板编码
        SMS_465391221:
        # 注册账号短信模板编码
        SMS_175430166:
  #腾讯短信秘钥配置
  tencent:
    # 接入域名
    endpoint: sms.tencentcloudapi.com
    secretId: ??
    secretKey: ??
    # 应用ID
    sdkAppId: ??
    # 地域信息
    region: ap-beijing
  # 在线预览文件服务器地址配置
  file-view-domain: http://fileview.jeecg.com
  # minio文件上传
  minio:
    minio_url: http://minio.jeecg.com
    minio_name: ??
    minio_pass: ??
    bucketName: otatest
  #大屏报表参数设置
  jmreport:
    #多租户模式，默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
    saasMode: 
    # 平台上线安全配置(v1.6.2+ 新增)
    firewall:
      # 数据源安全 (开启后，不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
      dataSourceSafe: false
      # 低代码开发模式（dev:开发模式，prod:发布模式—关闭在线报表设计功能，分配角色admin、lowdeveloper可以放开限制）
      lowCodeMode: dev
    # 高德地图Api配置(v2.1.3+ BI新增高德地图)
    gao-de-api:
      # 应用key
      api-key: ??
      # 应用秘钥
      secret-key: ??
  #xxl-job配置
  xxljob:
    enabled: false
    adminAddresses: http://127.0.0.1:9080/xxl-job-admin
    appname: ${spring.application.name}
    accessToken: ''
    address: 127.0.0.1:30007
    ip: 127.0.0.1
    port: 30007
    logPath: logs/jeecg/job/jobhandler/
    logRetentionDays: 30
  #分布式锁配置
  redisson:
    address: 127.0.0.1:6379
    password:
    type: STANDALONE
    enabled: true
  # 百度开放API配置
  baidu-api:
    app-id: ??
    api-key: ??
    secret-key: ??
#cas单点登录
cas:
  prefixUrl: http://cas.example.org:8443/cas
#Mybatis输出sql日志
logging:
  level:
    org.springframework.context.support.PostProcessorRegistrationDelegate: error
    org.flywaydb: debug
    org.jeecg.modules.system.mapper: info
    org.jeecg.modules.demo.test.mapper: info
#swagger
knife4j:
  #开启增强配置
  enable: true
  #开启生产环境屏蔽
  production: false
  basic:
    enable: false
    username: jeecg
    password: jeecg1314
#第三方登录
justauth:
  enabled: true
  type:
    GITHUB:
      client-id: ??
      client-secret: ??
      redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback
    WECHAT_ENTERPRISE:
      client-id: ??
      client-secret: ??
      redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback
      agent-id: ??
    DINGTALK:
      client-id: ??
      client-secret: ??
      redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback
    WECHAT_OPEN:
      client-id: ??
      client-secret: ??
      redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback
  cache:
    type: default
    prefix: 'demo::'
    timeout: 1h
