# 项目相关配置
qaup:
  # 名称
  name: Qaup
  # 版本
  version: 1.0.1
  # 版权年份
  copyrightYear: 2025
  # 文件路径 示例（ Windows配置D:/qaup/uploadPath，Linux配置 /home/qaup/uploadPath）
  profile: ${UPLOAD_PATH:/app/uploadPath}
  # 获取ip地址开关
  addressEnabled: false
  # 验证码类型 math 数字计算 char 字符验证
  captchaType: math

# 开发环境配置
server:
  # 服务器的HTTP端口，默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # 连接数满后的排队数，默认为100
    accept-count: 1000
    threads:
      # tomcat最大线程数，默认为200
      max: 800
      # Tomcat启动初始化的线程数，默认值10
      min-spare: 100

# 日志配置
logging:
  level:
    com.qaup: debug
    org.springframework: warn

# 用户配置
user:
  password:
    # 密码最大错误次数
    maxRetryCount: 5
    # 密码锁定时间（默认10分钟）
    lockTime: 10

# Spring配置
spring:
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  profiles:
    active: dev,druid
  # 文件上传
  servlet:
    multipart:
      # 单个文件大小
      max-file-size: 10MB
      # 设置总上传的文件大小
      max-request-size: 20MB
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true
      # 重启目录
      additional-paths: src/main/java
      # 排除目录
      exclude: WEB-INF/**
  jackson:
    # 日期格式化
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      # 格式化输出
      indent_output: false
      # 忽略无法转换的对象
      fail_on_empty_beans: false
    deserialization:
      # 允许对象忽略json中不存在的属性
      fail_on_unknown_properties: false
  # redis 配置
  data:
    redis:
      # 地址
      host: localhost
      # 端口，默认为6379
      port: 6379
      # 数据库索引
      database: 0
      # 密码
      password:
      # 连接超时时间
      timeout: 10s
      lettuce:
        pool:
          # 连接池中的最小空闲连接
          min-idle: 0
          # 连接池中的最大空闲连接
          max-idle: 8
          # 连接池的最大数据库连接数
          max-active: 8
          # #连接池最大阻塞等待时间（使用负值表示没有限制）
          max-wait: -1ms
  
  # ==================== CollisionAvoidanceSystem 配置整合 ====================
  
  # Bean覆盖配置（支持collision模块的适配器）
  main:
    allow-bean-definition-overriding: true
  
  # JPA配置（collision模块空间数据处理）
  jpa:
    hibernate:
      ddl-auto: none  # 使用数据库管理方式
    show-sql: false
    properties:
      hibernate:
        format_sql: false
        jdbc:
          lob:
            non_contextual_creation: true
          batch_size: 50
          fetch_size: 50
        cache:
          use_second_level_cache: false
          use_query_cache: false
        order_inserts: true
        order_updates: true
        batch_versioned_data: true
        generate_statistics: false

# token配置
token:
  # 令牌自定义标识
  header: Authorization
  # 令牌密钥
  secret: abcdefghijklmnopqrstuvwxyz
  # 令牌有效期（默认30分钟）
  expireTime: 30

# MyBatis配置
mybatis:
  # 搜索指定包别名
  typeAliasesPackage: com.qaup.system.domain,com.qaup.common.core.domain.entity,com.qaup.generator.domain,com.qaup.quartz.domain,com.qaup.collision.common.model.spatial,com.qaup.collision.datacollector.model.dto,com.qaup.collision.geofence.model.entity
  # 配置mapper的扫描，找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

# PageHelper分页插件
pagehelper: 
  helperDialect: postgresql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql 

# SpringDoc 配置
springdoc:
  swagger-ui:
    path: /swagger-ui.html # Swagger UI 访问路径
    url: /v3/api-docs # OpenAPI JSON 文档路径
    disable-swagger-default-url: true
  api-docs:
    path: /v3/api-docs # OpenAPI JSON 文档路径

# 防止XSS攻击
xss:
  # 过滤开关
  enabled: true
  # 排除链接（多个用逗号分隔）
  excludes: /system/notice
  # 匹配链接
  urlPatterns: /system/*,/monitor/*,/tool/*

# 数据采集配置（collision模块）
data:
  collector:
    # 数据采集间隔，单位：毫秒（高频采集保证数据新鲜度）
    interval: 250
    # 路由数据采集间隔，单位：毫秒（较低频率采集路由信息）
    route:
      interval: 5000
    # 检测和推送间隔配置
    detection:
      # 检测间隔，单位：毫秒（控制围栏检测、冲突检测、违规检测和WebSocket推送频率）
      interval: 1000
    # 机场数据源配置
    airport-api:
      base-url: http://localhost:8090
      endpoints:
        login: /login
        refresh: /userInfoController/refreshToken
        aircraft: /openApi/getCurrentFlightPositions
        vehicle: /openApi/getCurrentVehiclePositions
        arrival-route: /runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat
        departure-route: /runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat
        aircraft-status: /aircraftStatusController/getAircraftStatus

      auth:
        username: dianxin
        password: dianxin@123
    # 无人车厂商数据源配置
    vehicle-api:
      base-url: http://localhost:8090
      endpoints:
        vehicle-location: /api/VehicleLocationInfo
        vehicle-state: /api/VehicleStateInfo
        vehicle-command: /api/VehicleCommandInfo
      timeout: 1000
      retry-attempts: 3
    # 无人车数据持久化配置
    unmanned-vehicle:
      persistence:
        enabled: true
        batch-size: 50
        location-retention-days: 90
        command-retention-days: 365
      command:
        timeout: 1000
        retry-attempts: 3
        validation:
          enabled: true
          strict-mode: false
  retention:
    redis-expire-seconds: 60
    postgresql-days: 30

# 坐标系统配置（collision模块）
coordinate-system:
  airport:
    center-longitude: 120.0834104
    center-latitude: 36.35406879

# 性能监控配置（collision模块扩展）
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
  metrics:
    export:
      simple:
        enabled: true
    enable:
      hikari: true
      jvm: true
  jmx:
    enabled: true
