
# 开发环境配置
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.vetti: debug
        org.springframework: warn
    pathUrl: ./logs/

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

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://13.211.168.80:3306/vetti_service?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: vetti_service
                password: Hotake@2025
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password: 
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置连接超时时间
            connectTimeout: 30000
            # 配置网络超时时间
            socketTimeout: 60000
            # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间，单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间，单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter: 
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单，不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: ruoyi
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true
    # redis 配置
    redis:
        # 地址
        host: 127.0.0.1
        # 端口，默认为6379
        port: 6379
        # 数据库索引
        database: 0
        # 密码
        password:
        # 连接超时时间
        timeout: 10s
        lettuce:
            pool:
                # 连接池中的最小空闲连接
                min-idle: 0
                # 连接池中的最大空闲连接
                max-idle: 8
                # 连接池的最大数据库连接数
                max-active: 8
                # #连接池最大阻塞等待时间（使用负值表示没有限制）
                max-wait: -1ms
fs:
    minio:
        endpoint: https://vetti.hotake.cn:9000  # MinIO 服务地址
        access-key: minioadmin  # 访问密钥（替换为你的 Access Key）
        secret-key: minioadmin  # 密钥（替换为你的 Secret Key）
        max-file-size: 104857600 #字节（Byte）
        bucket-name.: # 存储桶名称（提前在 MinIO 控制台创建）
            system-fs: system-fs

# Twilio SendGrid 配置
twilio:
    sendgrid:
        #你的SendGrid API Key
        api-key: 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
        #已验证的发送邮箱地址
        from-email: noreply@routez.app
        #你的应用名称
        from-name: RouteZ
        from-email-em7941: noreply@em7941.routez.app
        from-name-em7941: Vetti
        reply-to-em7941: noreply@em7941.routez.app
        template-ids:
            routez-verification-code: d-18475c5d41e349e2bc3a35f2b4992182
            interview-template-code: d-c377f1e7f5e04cb794e2753af9d2e0c8
    accountSID: 1111
    authToken: 22222
    sendPhoneNumber: 33333

verification:
    code:
        email:
        # 验证码长度
            length: 6
        # 验证码过期时间（分钟）
            expiration-minutes: 10
# 文本转语音
elevenLabs:
    baseUrl: https://api.elevenlabs.io/v1
    apiKey: sk_dfe2b45e19bf8ad93a71d3a0faa61619a91e817df549d116
#    apiKey: sk_88f5a560e1bbde0e5b8b6b6eb1812163a98bfb98554acbec
    modelId: eleven_turbo_v2_5
    agent-id: 9c5cb2f7ba9efb61d0f0eee01427b6e00c6abe92d4754cfb794884ac4d73c79d
    api-key: sk_dfe2b45e19bf8ad93a71d3a0faa61619a91e817df549d116

# 语音转文本
whisper:
    apiUrl: https://api.openai.com/v1/audio/transcriptions
    model: gpt-4o-mini-transcribe
    apiKey: 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
    language: en
    apiClientTokenUrl: https://api.openai.com/v1/realtime/sessions
    prompt: You are an English translator. Detect when the user stops speaking. When a full sentence is complete, send recognized text as type:\'transcript\', and send its English translation as type:\'translation\'. The final translation result should all be returned to English.

# AI 聊天
chatGpt:
    apiKey: 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
    apiUrl: https://api.openai.com/v1/chat/completions
    model: ft:gpt-3.5-turbo-0125:vetti:interview-unified:CaGyCXOr
    modelQuestion: ft:gpt-4o-mini-2024-07-18:vetti:interview-corpus:ChvLmzLu
    modelCV: ft:gpt-3.5-turbo-0125:vetti:vetti-resume-full:CYT0C8JG
    modelJxCv: gpt-4o-mini
    modelJd: gpt-4o-mini
    modelIsq: ft:gpt-4o-mini-2024-07-18:vetti:question-gen-expanded:CncFPHBB
    modelRoleCv: ft:gpt-4o-mini-2024-07-18:vetti:resume-scoring-v2:CnbgEHQQ
    modelCvJx: gpt-4o-mini
    modelCbqpf: gpt-4o-mini
    modelAafx: gpt-4o-mini
    modelAaHb: gpt-4o-mini
    modelMarkdown: gpt-4o-mini
    modelWebAiTq: gpt-4o-mini
    modelPpg: gpt-4o-mini
    modelRLinkAl: gpt-4o-mini
    modelRLinkAl_1: gpt-4o-mini
    modelAiIntPf: gpt-4o-mini
    modelAiCvSr: gpt-4o-mini
    modelAiCac: gpt-4o-mini
    modelAiCiv: gpt-4o-mini
    role: system

http:
    client:
        connect-timeout-seconds: 600

# OAuth2.0 社交登录配置
oauth2:
    # ================================
    # Google (Gmail) 登录配置
    # 申请地址: https://console.cloud.google.com/apis/credentials
    # ================================
    google:
        client-id: 398978985110-ve0usu381mmdio12ff01iqvv1g087qvi.apps.googleusercontent.com                    # Google Cloud Console获取
        client-secret: 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            # Google Cloud Console获取
        redirect-uri: https://vetti.hotake.cn/oauth2/callback/google
        scope: openid email profile                         # Google标准scope（空格分隔）
        auth-uri: https://accounts.google.com/o/oauth2/v2/auth          # Google授权地址
        token-uri: https://oauth2.googleapis.com/token                   # Google令牌地址
        user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo    # Google用户信息接口

    # ================================
    # Microsoft (Outlook) 登录配置
    # 申请地址: https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps
    # ================================
    microsoft:
        client-id: 608cbc4f-3ee2-4f51-a72c-b2e3133fc5b2                 # Azure Portal获取
        client-secret: gvw8Q~dwG8Sv7HN3R3W3R7TQtcZyvrh88ZiJubPa         # Azure Portal获取
        redirect-uri: https://vetti.hotake.cn/oauth2/callback/microsoft
        scope: openid,email,profile,User.Read               # 需要额外的User.Read权限才能读取用户信息
        auth-uri: https://login.microsoftonline.com/common/oauth2/v2.0/authorize   # 微软授权地址
        token-uri: https://login.microsoftonline.com/common/oauth2/v2.0/token      # 微软令牌地址
        user-info-uri: https://graph.microsoft.com/v1.0/me                         # 使用Microsoft Graph API

    # ================================
    # LinkedIn 登录配置
    # 申请地址: https://www.linkedin.com/developers/apps
    # ================================
    linkedin:
        client-id: 86uq3opzshd3bq                  # LinkedIn Developer Portal获取
        client-secret: WPL_AP1.mipgyxfgfBoN12Th.1TXeFg==          # LinkedIn Developer Portal获取
        redirect-uri: https://vetti.hotake.cn/oauth2/callback/linkedin
        scope: openid profile email                         # LinkedIn使用OpenID Connect，scope顺序和命名略有不同
        auth-uri: https://www.linkedin.com/oauth/v2/authorization    # LinkedIn授权地址
        token-uri: https://www.linkedin.com/oauth/v2/accessToken     # LinkedIn令牌地址
        user-info-uri: https://api.linkedin.com/v2/userinfo          # LinkedIn用户信息接口
