ProbeSimulateApi.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. import java.nio.charset.StandardCharsets;
  6. import java.time.Duration;
  7. /**
  8. * HTTP probe for POST /workflow/simulate (needs Bearer token).
  9. * Usage:
  10. * javac java/scripts/ProbeSimulateApi.java
  11. * java -cp java/scripts ProbeSimulateApi <token> <templateId>
  12. * java -cp java/scripts ProbeSimulateApi <token> <templateId> "custom message"
  13. */
  14. public class ProbeSimulateApi {
  15. private static final String DEFAULT_MSG =
  16. "\u4f60\u597d\uff0c\u82b9\u83dc\u80fd\u6cbb\u7597\u7cd6\u5c3f\u75c5\u5417\uff1f"
  17. + "\u5bf9\u7cd6\u5c3f\u75c5\u6709\u597d\u5904\u5417\uff1f";
  18. public static void main(String[] args) throws Exception {
  19. if (args.length < 2) {
  20. System.out.println("Usage: ProbeSimulateApi <token> <templateId> [content]");
  21. System.out.println(" token: JWT from browser (Admin-Token) or login API");
  22. System.exit(1);
  23. }
  24. String token = args[0].startsWith("Bearer ") ? args[0] : "Bearer " + args[0];
  25. long templateId = Long.parseLong(args[1]);
  26. String content = args.length > 2 ? args[2] : DEFAULT_MSG;
  27. String base = System.getenv().getOrDefault("LOBSTER_API_BASE", "http://127.0.0.1:8004");
  28. String body = "{\"templateId\":" + templateId + ",\"content\":"
  29. + jsonEscape(content) + "}";
  30. HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15)).build();
  31. HttpRequest req = HttpRequest.newBuilder()
  32. .uri(URI.create(base + "/workflow/simulate"))
  33. .timeout(Duration.ofSeconds(120))
  34. .header("Authorization", token)
  35. .header("Content-Type", "application/json; charset=utf-8")
  36. .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
  37. .build();
  38. System.out.println("POST " + base + "/workflow/simulate");
  39. System.out.println("templateId=" + templateId);
  40. HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
  41. System.out.println("HTTP " + resp.statusCode());
  42. System.out.println(resp.body());
  43. if (resp.statusCode() != 200) {
  44. System.exit(1);
  45. }
  46. String bodyText = resp.body();
  47. if (bodyText.contains("\"mode\":\"legacy\"")) {
  48. System.out.println("\n[ROOT CAUSE] mode=legacy -> FastGPT path, no intent/UDD probe");
  49. System.exit(3);
  50. }
  51. if (bodyText.contains("\"shouldProbe\":true")) {
  52. System.out.println("\n[OK] shouldProbe=true");
  53. } else {
  54. System.out.println("\n[WARN] shouldProbe not true");
  55. }
  56. }
  57. private static String jsonEscape(String s) {
  58. return "\"" + s.replace("\\", "\\\\").replace("\"", "\\\"")
  59. .replace("\n", "\\n").replace("\r", "\\r") + "\"";
  60. }
  61. }