package org.ta.gateway.config;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Status;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

/**
 * 适配 Spring Boot 3.x 的 Actuator 配置（修正 HealthEndpoint 构造参数错误）
 * 核心：
 * 1. 无需手动创建 HealthEndpoint（Spring Boot 3.x 自动创建，基于 HealthContributorRegistry）
 * 2. 仅需自定义 HealthIndicator，Spring 会自动将其注册到 HealthContributorRegistry
 * 3. 用 @Primary 解决多 HealthIndicator 冲突
 */
@Configuration
public class ActuatorConfig {

    /**
     * 自定义健康指标（标记 @Primary 解决多 Bean 冲突）
     * Spring Boot 3.x 会自动将该 Bean 注册到 HealthContributorRegistry
     */
    @Bean
    @Primary
    public HealthIndicator gatewayHealthIndicator() {
        return () -> Health.status(Status.UP)
                // 自定义网关相关健康信息
                .withDetail("gateway", "running")
                .withDetail("mode", "reactive")
                .withDetail("port", 8090)
                .withDetail("actuator-port", 8091)
                // 可选：添加后端服务连通性检查
                .withDetail("auth-server", "reachable")
                .build();
    }
}