spring:
  application:
    name: rdms-project-server
  main:
    allow-circular-references: true # 允许循环依赖，因为项目当前沿用三层架构组织方式。
    allow-bean-definition-overriding: true # 允许 Bean 覆盖，例如 Feign 等会存在重复定义的服务
  cloud:
    # 注册中心 + 配置中心连接（值由根 pom 的 nacos.* 属性在打包时注入）
    nacos:
      server-addr: @nacos.server-addr@
      username: @nacos.username@
      password: @nacos.password@
      discovery:
        namespace: @nacos.namespace@
        group: @nacos.group@
        metadata:
          version: ${rdms.info.version} # 灰度发布用的实例版本号
      config:
        namespace: @nacos.namespace@
        group: @nacos.group@
  config:
    import:
      - nacos:rdms-common.yaml        # 公共非敏感配置（数据库地址/Redis/开关等）
      - nacos:rdms-common-secret.yaml # 公共敏感配置（数据库账密/加解密秘钥）
  # Servlet 配置
  servlet:
    # 文件上传相关配置项
    multipart:
      max-file-size: 16MB # 单个文件大小
      max-request-size: 32MB # 设置总上传的文件大小
  # Jackson 配置项
  jackson:
    serialization:
      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式，使用时间戳
      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式，例如 1611460870401
      write-durations-as-timestamps: true # 设置 Duration 的格式，使用时间戳
      fail-on-empty-beans: false # 允许序列化无属性的 Bean
  # Cache 配置项
  cache:
    type: REDIS
    redis:
      time-to-live: 1h # 设置过期时间为 1 小时
  data:
    redis:
      repositories:
        enabled: false # 项目未使用到 Spring Data Redis 的 Repository，所以直接禁用，保证启动速度
  # 热部署配置
  devtools:
    restart:
      enabled: true

server:
  port: 48082
  tomcat:
    # 长连接保活时长：默认沿用 connection-timeout(20s)，过短会和网关侧 HttpClient 连接池形成 race，
    # 导致网关复用已被服务端关闭的连接抛 PrematureCloseException。
    # 必须大于网关 spring.cloud.gateway.server.webflux.httpclient.pool.max-idle-time(30s)。
    keep-alive-timeout: 60s

logging:
  file:
    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名，全路径
  level:
    com.njcn.rdms.module.project.dal.mysql: debug # 打印本模块 Mapper 的 SQL 日志

--- #################### 接口文档配置 ####################
springdoc:
  api-docs:
    enabled: true # 1. 是否开启 Swagger 接口文档的元数据
    path: /v3/api-docs
  swagger-ui:
    enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面
    path: /swagger-ui
  default-flat-param-object: true

knife4j:
  enable: true
  setting:
    language: zh_cn

# MyBatis Plus 的配置项
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true # 虽然默认为 true，但是还是显示指定下。
  global-config:
    db-config:
      id-type: ASSIGN_ID # 分配 ID，默认使用雪花算法
      logic-delete-value: 1 # 逻辑已删除值（默认为 1）
      logic-not-delete-value: 0 # 逻辑未删除值（默认为 0）
    banner: false # 关闭控制台的 Banner 打印
  type-aliases-package: ${rdms.info.base-package}.dal.dataobject
  # encryptor.password（@EncryptField 字段加解密秘钥）已外置到 Nacos rdms-common-secret.yaml，不再硬编码进 git

mybatis-plus-join:
  banner: false # 关闭控制台的 Banner 打印

# VO 转换（数据翻译）相关
easy-trans:
  is-enable-global: false # 默认禁用全局翻译，避免额外性能开销

--- #################### RDMS 相关配置 ####################
rdms:
  info:
    version: 1.0.0
    base-package: com.njcn.rdms.module.project
  web:
    admin-ui:
      url: https://www.baidu.com # Admin 管理后台 UI 的占位地址，联调时替换成实际前端入口
  xss:
    enable: false
    exclude-urls:
      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
  swagger:
    title: 项目交付域管理后台
    description: 提供项目集、项目、产品、需求、任务、工单、执行等管理能力
    author: RDMS
    version: ${rdms.info.version}
    url: https://example.com
    email: dev@example.com
    license: Apache 2.0
    license-url: https://www.apache.org/licenses/LICENSE-2.0.html
  work-report:
    auto-gen:
      enabled: true
      weekly:
        enabled: true
        cron: "0 0 12 ? * FRI"
      monthly:
        enabled: true
        cron: "0 0 12 1-31 * ?"
      project:
        enabled: true
        cron: "0 0 12 1-31 * ?"
      scope:
        dept-ids: [100]
  performance:
    score-cell-mapping:
      actual-score-total: J10
      base-score-total: K10
      extra-score-total: L10

debug: false
