spring:
  application:
    name: gateway-server

  profiles:
    active: local

  http:
    codecs:
      max-in-memory-size: 10MB # 调整缓冲区大小https://gitee.com/zhijiantianya/rdms-cloud/pulls/176

  # Jackson 配置项
  jackson:
    serialization:
      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式，使用时间戳
      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401，而是直接 1611460870401
      write-durations-as-timestamps: true # 设置 Duration 的格式，使用时间戳
      fail-on-empty-beans: false # 允许序列化无属性的 Bean

  main:
    allow-circular-references: true # 允许循环依赖，因为项目是三层架构，无法避免这个情况。

  config:
    import:
      - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置
      - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置

  cloud:
    # Spring Cloud Gateway 配置项，对应 GatewayProperties 类
    gateway:
      server:
        webflux:
          # 路由配置项，对应 RouteDefinition 数组
          routes:
            ## system-server 服务
            - id: system-admin-api # 路由的编号
              uri: grayLb://rdms-system-server
              predicates: # 断言，作为路由的匹配条件，对应 RouteDefinition 数组
                - Path=/admin-api/system/**
              filters:
                  - RewritePath=/admin-api/system/v3/api-docs, /v3/api-docs # 配置，保证转发到 /v3/api-docs
            - id: system-app-api # 路由的编号
              uri: grayLb://rdms-system-server
              predicates: # 断言，作为路由的匹配条件，对应 RouteDefinition 数组
                - Path=/app-api/system/**
              filters:
                  - RewritePath=/app-api/system/v3/api-docs, /v3/api-docs
            - id: system-websocket # 路由的编号（WebSocket）
              uri: grayLb://rdms-system-server
              predicates: # 断言，作为路由的匹配条件，对应 RouteDefinition 数组
                - Path=/system/ws/**
            ## bpm-server 服务
            - id: bpm-admin-api # 路由的编号
              uri: grayLb://rdms-bpm-server
              predicates: # 断言，作为路由的匹配条件，对应 RouteDefinition 数组
                - Path=/admin-api/bpm/**
              filters:
                  - RewritePath=/admin-api/bpm/v3/api-docs, /v3/api-docs
          x-forwarded:
            prefix-enabled: false # 避免 Swagger 重复带上额外的 /admin-api/system 前缀
          default-filters:
            - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin # 采用 https://github.com/spring-cloud/spring-cloud-gateway/pull/866 解决响应头重复问题

server:
  port: 48080

logging:
  file:
    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名，全路径

knife4j:
  # 聚合 Swagger 文档，参考 https://doc.xiaominfo.com/docs/action/springcloud-gateway 文档
  gateway:
    enabled: true
    routes:
      - name: system-server
        service-name: rdms-system-server
        url: /admin-api/system/v3/api-docs
      - name: bpm-server
        service-name: bpm-server
        url: /admin-api/bpm/v3/api-docs

--- #################### 灿能相关配置 ####################

rdms:
  info:
    version: 1.0.0
