server: port: 8000 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://www.youlai.tech:3306/youlai_admin?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true username: youlai password: 123456 data: redis: database: 0 host: www.youlai.tech port: 6379 password: 123456 timeout: 10s lettuce: pool: # 连接池最大连接数 默认8 ,负数表示没有限制 max-active: 8 # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认-1 max-wait: -1 # 连接池中的最大空闲连接 默认8 max-idle: 8 # 连接池中的最小空闲连接 默认0 min-idle: 0 cache: enabled: false # 缓存类型 redis、none(不使用缓存) type: redis # 缓存时间(单位:ms) redis: time-to-live: 3600000 # 缓存null值,防止缓存穿透 cache-null-values: true caffeine: spec: initialCapacity=50,maximumSize=1000,expireAfterWrite=600s # 邮件配置 mail: host: smtp.youlai.tech port: 587 username: your-email@example.com password: 123456 properties: smtp: auth: true starttls: enable: true # 邮件发送者 from: youlaitech@163.com # AI 对话(本环境无默认密钥,默认关闭;演示环境配置见 application-youlai.yml) ai: # 装配开关:none 关闭,openai 启用 model: chat: none embedding: none image: none moderation: none audio: speech: none transcription: none # 启用后在此填写模型凭据与名称 openai: # 厂商接口地址(OpenAI 兼容根地址) base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 # 厂商 API 密钥(本文件入版本库,用环境变量 AI_API_KEY 提供) api-key: ${AI_API_KEY:} chat: options: # 对话模型标识 model: qwen3.7-flash # 采样温度,取值 0~1,越小输出越稳定 temperature: 0.3 # 百炼私有参数:推理模型的思考内容耗时可占整次调用的大头,false 关闭 extra-body: enable_thinking: false servlet: multipart: # 单文件大小上限,单一来源绑定 storage.upload.max-file-size max-file-size: ${storage.upload.max-file-size:50MB} max-request-size: ${storage.upload.max-file-size:50MB} mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml global-config: db-config: # 主键ID类型 id-type: none # 逻辑删除对应的全局属性名(注意:须是对象属性名,不能是表字段名,如 isDeleted 而非 is_deleted,否则逻辑删除失效) logic-delete-field: isDeleted # 逻辑删除-删除值 logic-delete-value: 1 # 逻辑删除-未删除值 logic-not-delete-value: 0 configuration: # 驼峰下划线转换 map-underscore-to-camel-case: true # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 接口限流 rate-limit: default-limit: 60 default-window: 60s ip: enabled: true # 开发环境开启 IP 全局限流(供限流测试) limit: 1000 window: 60s # 安全配置 security: token: type: jwt # 令牌策略 [jwt|redis-token] access-token-time-to-live: 7200 # 访问令牌 有效期(单位:秒),默认 2 小时,-1 表示永不过期 refresh-token-time-to-live: 604800 # 刷新令牌有效期(单位:秒),默认 7 天,-1 表示永不过期 jwt: secret-key: SecretKey012345678901234567890123456789012345678901234567890123456789 # JWT密钥(HS256算法至少32字符) redis-token: allow-multi-login: true # 是否允许多设备登录 # 匿名放行路径,仅跳过认证与授权判断,仍走过滤器链(保留安全响应头) permit-all-urls: - /api/v1/auth/login # 登录接口(账号密码登录) - /api/v1/auth/captcha # 验证码获取接口 - /api/v1/auth/sms/** # 短信验证码接口(发送验证码、短信登录) - /api/v1/auth/refresh-token # 刷新令牌接口 - /api/v1/auth/wxma/** # 微信小程序认证接口(静默登录/手机号快捷登录/绑定手机号) - /api/v1/auth/qr-code/** # 扫码登录接口(生成票据/查询状态/换取令牌) - /api/v1/forms/public/** # 公开表单接口(匿名渲染/提交,Service 校验 is_public 总闸 + IP 限流) - /api/v1/health # 健康检查接口(供探针与限流测试) - ${springdoc.swagger-ui.path} # Swagger UI 路径 - /doc.html - /swagger-ui/** - /v3/api-docs/** - /webjars/** - /favicon.ico - /error # 文件存储 storage: # 存储类型:s3 | aliyun | local type: s3 # 上传限制 upload: # 单文件大小上限(同时作为 spring.servlet.multipart 的上限,单一来源) max-file-size: 50MB # 允许的文件扩展名白名单(置空表示不限制) allowed-extensions: - jpg - jpeg - png - gif # S3 对象存储(S3 协议兼容服务,默认部署 RustFS) s3: endpoint: http://111.229.83.153:9000 access-key: bybaddp7zyARpgNbEGKf secret-key: p9rBdQZPBIJcMH23iyFkZkXmmawbmwPlk3JLlaaj bucket: public # 自定义域名:配置后文件 URL 走域名,留空则用 endpoint(IP)格式 domain: # 阿里云 OSS aliyun: endpoint: oss-cn-hangzhou.aliyuncs.com access-key-id: your-access-key-id access-key-secret: your-access-key-secret bucket: default # 本地存储 local: # 存储根目录(相对路径基于工作目录;生产建议挂载独立卷) path: ./uploads/ # springdoc 配置文档: https://springdoc.org/properties.html springdoc: swagger-ui: path: /swagger-ui.html # Swagger UI 访问路径 operationsSorter: alpha # 接口按方法名排序 tags-sorter: alpha # 标签按字母排序 api-docs: path: /v3/api-docs # OpenAPI JSON 地址 group-configs: # 分组配置 - group: "系统管理" # 分组名称 paths-to-match: "/**" # 匹配的请求路径 packages-to-scan: # 扫描的 Controller 包,限制只生成指定包的接口文档 - com.youlai.boot.auth.password.controller - com.youlai.boot.auth.sms.controller - com.youlai.boot.auth.qrcode.controller - com.youlai.boot.auth.wxma.controller - com.youlai.boot.auth.session.controller - com.youlai.boot.system.controller - com.youlai.boot.codegen.controller - com.youlai.boot.module.form.controller - com.youlai.boot.module.workflow.controller default-flat-param-object: true # knife4j 配置 knife4j: enable: true # 生产环境设置为 true 关闭文档 production: false setting: language: zh_cn # 验证码配置 captcha: # 验证码类型 circle-圆圈干扰验证码|gif-Gif验证码|line-干扰线验证码|shear-扭曲干扰验证码 type: circle # 验证码宽度 width: 120 # 验证码高度 height: 40 # 验证码干扰元素个数 interfere-count: 2 # 文本透明度(0.0-1.0) text-alpha: 0.8 # 验证码字符配置 code: # 验证码字符类型 math-算术|random-随机字符 type: math # 验证码字符长度,type=算术时,表示运算位数(1:个位数运算 2:十位数运算);type=随机字符时,表示字符个数 length: 1 # 验证码字体 font: # 字体名称 Dialog|DialogInput|Monospaced|Serif|SansSerif name: SansSerif # 字体样式 0-普通|1-粗体|2-斜体 weight: 1 # 字体大小 size: 24 # 验证码有效期(秒) expire-seconds: 120 # 短信配置 sms: # 阿里云短信 aliyun: accessKeyId: LTAI5tSMgfxxxxxxdiBJLyR accessKeySecret: SoOWRqpjtS7xxxxxxZ2PZiMTJOVC domain: dysmsapi.aliyuncs.com regionId: cn-shanghai signName: 有来技术 templates: # 注册短信验证码模板 register: SMS_22xxx771 # 登录短信验证码模板 login: SMS_22xxx772 # 修改手机号短信验证码模板 change-mobile: SMS_22xxx773 # xxl-job 定时任务配置 xxl: job: # 定时任务开关 enabled: false admin: # 调度中心地址,多个地址用逗号分割;3.4.1 起调度中心 context-path 为 /,地址不带 /xxl-job-admin 后缀 addresses: http://127.0.0.1:8080 accessToken: default_token executor: appname: xxl-job-executor-${spring.application.name} address: ip: port: 9999 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30 # 微信小程序配置 wx: miniapp: appid: your-app-id secret: your-app-secret # 工作流(可选扩展,开启只需将 enabled 改为 true,引擎开关自动跟随) workflow: enabled: false demo: # 演示流程自动部署开关 enabled: true # 工作流引擎 flowable: # 流程引擎跟随业务开关 workflow.enabled process: enabled: ${workflow.enabled:false} # 用户与角色走系统自有体系(sys_user/sys_role),不启用 Flowable IDM 与事件注册表 idm: enabled: false eventregistry: enabled: false # 引擎表初始化策略,true 启动时检查并自动建/更新 ACT_* 表;可选 true/false/create/create-drop database-schema-update: true