| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import java.net.URI;
- import java.net.http.HttpClient;
- import java.net.http.HttpRequest;
- import java.net.http.HttpResponse;
- import java.nio.charset.StandardCharsets;
- import java.time.Duration;
- /**
- * HTTP probe for POST /workflow/simulate (needs Bearer token).
- * Usage:
- * javac java/scripts/ProbeSimulateApi.java
- * java -cp java/scripts ProbeSimulateApi <token> <templateId>
- * java -cp java/scripts ProbeSimulateApi <token> <templateId> "custom message"
- */
- public class ProbeSimulateApi {
- private static final String DEFAULT_MSG =
- "\u4f60\u597d\uff0c\u82b9\u83dc\u80fd\u6cbb\u7597\u7cd6\u5c3f\u75c5\u5417\uff1f"
- + "\u5bf9\u7cd6\u5c3f\u75c5\u6709\u597d\u5904\u5417\uff1f";
- public static void main(String[] args) throws Exception {
- if (args.length < 2) {
- System.out.println("Usage: ProbeSimulateApi <token> <templateId> [content]");
- System.out.println(" token: JWT from browser (Admin-Token) or login API");
- System.exit(1);
- }
- String token = args[0].startsWith("Bearer ") ? args[0] : "Bearer " + args[0];
- long templateId = Long.parseLong(args[1]);
- String content = args.length > 2 ? args[2] : DEFAULT_MSG;
- String base = System.getenv().getOrDefault("LOBSTER_API_BASE", "http://127.0.0.1:8004");
- String body = "{\"templateId\":" + templateId + ",\"content\":"
- + jsonEscape(content) + "}";
- HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15)).build();
- HttpRequest req = HttpRequest.newBuilder()
- .uri(URI.create(base + "/workflow/simulate"))
- .timeout(Duration.ofSeconds(120))
- .header("Authorization", token)
- .header("Content-Type", "application/json; charset=utf-8")
- .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
- .build();
- System.out.println("POST " + base + "/workflow/simulate");
- System.out.println("templateId=" + templateId);
- HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
- System.out.println("HTTP " + resp.statusCode());
- System.out.println(resp.body());
- if (resp.statusCode() != 200) {
- System.exit(1);
- }
- String bodyText = resp.body();
- if (bodyText.contains("\"mode\":\"legacy\"")) {
- System.out.println("\n[ROOT CAUSE] mode=legacy -> FastGPT path, no intent/UDD probe");
- System.exit(3);
- }
- if (bodyText.contains("\"shouldProbe\":true")) {
- System.out.println("\n[OK] shouldProbe=true");
- } else {
- System.out.println("\n[WARN] shouldProbe not true");
- }
- }
- private static String jsonEscape(String s) {
- return "\"" + s.replace("\\", "\\\\").replace("\"", "\\\"")
- .replace("\n", "\\n").replace("\r", "\\r") + "\"";
- }
- }
|