package com.agent.management.config;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * SPA 路由 Fallback Controller
 *
 * 对于不带文件扩展名的路径（如 /management、/skills/detail），
 * 如果对应的静态资源不存在，则返回 index.html 让前端路由接管。
 *
 * 优先级低于 ResourceHandler，仅当静态资源不存在时才匹配。
 */
@Controller
public class SpaController {

    @RequestMapping(value = {
            "/{x:[^.]+}",
            "/{x:[^.]+}/{y:[^.]+}",
            "/{x:[^.]+}/{y:[^.]+}/{z:[^.]+}"
    })
    public ResponseEntity<Resource> forward() {
        Resource indexHtml = new ClassPathResource("/static/index.html");
        return ResponseEntity.ok()
                .contentType(MediaType.TEXT_HTML)
                .body(indexHtml);
    }
}
