fix_simulate_dialogue_test_utf8.mjs 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { writeFileSync } from 'node:fs';
  2. import { dirname, join } from 'node:path';
  3. import { fileURLToPath } from 'node:url';
  4. const scriptDir = dirname(fileURLToPath(import.meta.url));
  5. const path = join(
  6. scriptDir,
  7. '../src/test/java/com/fs/company/service/workflow/deepdialogue/SimulateDialogueFlowDiagnosticTest.java'
  8. );
  9. function u(s) {
  10. return s.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
  11. }
  12. const content = u(`package com.fs.company.service.workflow.deepdialogue;
  13. import com.fs.company.service.workflow.semantic.SemanticResult;
  14. import org.junit.Test;
  15. import static org.junit.Assert.*;
  16. /**
  17. * \u6a21\u62df\u5bf9\u8bdd\u94fe\u8def\u8bca\u65ad\uff1a\u4e0d\u4f9d\u8d56 Spring/HTTP\uff0c\u76f4\u63a5\u9a8c\u8bc1\u300c\u610f\u56fe\u8bc6\u522b + UDD \u8ffd\u95ee\u300d\u5173\u952e\u8282\u70b9\u3002
  18. * \u8fd0\u884c: mvn -pl fs-service test -Dtest=SimulateDialogueFlowDiagnosticTest
  19. */
  20. public class SimulateDialogueFlowDiagnosticTest {
  21. private static final String USER_MSG =
  22. "\u4f60\u597d\uff0c\u82b9\u83dc\u80fd\u6cbb\u7597\u7cd6\u5c3f\u75c5\u5417\uff1f\u5bf9\u7cd6\u5c3f\u75c5\u6709\u597d\u5904\u4e48\uff1f";
  23. @Test
  24. public void surfaceType_shouldBeGoodOrNot_notOther() {
  25. SurfaceQuestionType type = SurfaceQuestionTypeDetector.detect(USER_MSG);
  26. assertEquals(
  27. "\u663e\u6027\u95ee\u9898\u7c7b\u578b\u5e94\u8bc6\u522b\u4e3a GOOD_OR_NOT\uff08\u80fd\u6cbb\u7597/\u6709\u597d\u5904\uff09\uff0c\u5426\u5219 UDD \u4e0d\u4f1a\u6309\u7597\u6548\u54a8\u8be2\u5904\u7406",
  28. SurfaceQuestionType.GOOD_OR_NOT, type);
  29. }
  30. @Test
  31. public void implicitSignal_shouldDetectDiabetesConcern() {
  32. String signal = ImplicitSignalRuleCatalog.detectImplicitSignal(USER_MSG, null);
  33. assertNotNull("\u5e94\u8bc6\u522b\u51fa\u7cd6\u5c3f\u75c5\u76f8\u5173\u9690\u6027\u4fe1\u53f7", signal);
  34. assertTrue("\u9690\u6027\u4fe1\u53f7\u5e94\u63d0\u53ca\u7cd6\u5c3f\u75c5", signal.contains("\u7cd6\u5c3f\u75c5"));
  35. }
  36. @Test
  37. public void uddPlan_firstRound_shouldProbeSubject() {
  38. DeepDialogueState state = new DeepDialogueState();
  39. state.setCompanyId(1L);
  40. state.setUserKey("diag_test");
  41. state.setRound(0);
  42. UniversalSemanticDecomposition decomposition = new UniversalSemanticDecomposition();
  43. decomposition.setSurfaceQuestionType(SurfaceQuestionType.GOOD_OR_NOT);
  44. decomposition.setExplicitQuestion(USER_MSG);
  45. decomposition.setImplicitSignal("\u7528\u6237\u5173\u5fc3\u7cd6\u5c3f\u75c5\u4e0e\u996e\u98df\u8c03\u7406");
  46. decomposition.setLatentNeed("\u786e\u8ba4\u662f\u5426\u9002\u5408\u81ea\u5df1\u6216\u5bb6\u4eba");
  47. SemanticResult semantic = SemanticResult.of("inquiry", 0.7, 0.1, null);
  48. DeepDialogueReplyPlan plan = DeepDialogueReplyPlanner.buildPlan(
  49. state, decomposition, semantic, null, "", 3);
  50. assertFalse("\u9996\u8f6e\u4e0d\u5e94\u6682\u505c\u8ffd\u95ee", plan.isProbingPaused());
  51. assertTrue("\u9996\u8f6e\u5e94\u5f00\u542f\u8ffd\u95ee", plan.isShouldProbe());
  52. assertNotNull("\u5e94\u6709\u8ffd\u95ee\u7ef4\u5ea6", plan.getProbeDimension());
  53. assertNotNull("\u5e94\u6709\u8ffd\u95ee\u8bdd\u672f", plan.getProbeQuestion());
  54. assertTrue("\u8ffd\u95ee\u5e94\u50cf\u771f\u4eba\u63d0\u95ee",
  55. plan.getProbeQuestion().contains("\\uff1f") || plan.getProbeQuestion().contains("?"));
  56. }
  57. @Test
  58. public void ensureProbeIncluded_appendsWhenReplyHasNoFollowUp() {
  59. String plainAnswer = "\u82b9\u83dc\u4e0d\u80fd\u66ff\u4ee3\u836f\u7269\u6cbb\u7597\uff0c\u4f46\u5bf9\u63a7\u7cd6\u6709\u4e00\u5b9a\u8f85\u52a9\u4f5c\u7528\uff0c\u4ecd\u9700\u9075\u533b\u5631\u3002";
  60. String probe = "\u5192\u5473\u95ee\u4e0b\uff0c\u662f\u60a8\u81ea\u5df1\u4f7f\u7528\u8fd8\u662f\u5e26\u5bb6\u4eba\u54a8\u8be2\u7684\u5462\uff1f";
  61. String merged = UniversalDeepDialogueService.ensureProbeIncluded(plainAnswer, probe, true);
  62. assertTrue("\u56de\u590d\u672b\u5c3e\u5e94\u8ffd\u52a0\u8ffd\u95ee", merged.contains(probe));
  63. assertTrue("\u5408\u5e76\u540e\u5e94\u5305\u542b\u539f\u7b54\u590d", merged.contains("\u82b9\u83dc"));
  64. }
  65. @Test
  66. public void ensureProbeIncluded_skipsWhenProbeAlreadyPresent() {
  67. String probe = "\u5192\u5473\u95ee\u4e0b\uff0c\u662f\u60a8\u81ea\u5df1\u4f7f\u7528\u8fd8\u662f\u5e26\u5bb6\u4eba\u54a8\u8be2\u7684\u5462\uff1f";
  68. String already = "\u597d\u7684\u3002" + probe;
  69. String merged = UniversalDeepDialogueService.ensureProbeIncluded(already, probe, true);
  70. assertEquals("\u5df2\u6709\u8ffd\u95ee\u65f6\u4e0d\u5e94\u91cd\u590d\u8ffd\u52a0", already, merged);
  71. }
  72. }
  73. `);
  74. writeFileSync(path, content.replace(/\r\n/g, '\n'), 'utf8');
  75. console.log('fixed SimulateDialogueFlowDiagnosticTest.java');