| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { writeFileSync } from 'node:fs';
- import { dirname, join } from 'node:path';
- import { fileURLToPath } from 'node:url';
- const scriptDir = dirname(fileURLToPath(import.meta.url));
- const path = join(
- scriptDir,
- '../src/test/java/com/fs/company/service/workflow/deepdialogue/SimulateDialogueFlowDiagnosticTest.java'
- );
- function u(s) {
- return s.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
- }
- const content = u(`package com.fs.company.service.workflow.deepdialogue;
- import com.fs.company.service.workflow.semantic.SemanticResult;
- import org.junit.Test;
- import static org.junit.Assert.*;
- /**
- * \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
- * \u8fd0\u884c: mvn -pl fs-service test -Dtest=SimulateDialogueFlowDiagnosticTest
- */
- public class SimulateDialogueFlowDiagnosticTest {
- private static final String USER_MSG =
- "\u4f60\u597d\uff0c\u82b9\u83dc\u80fd\u6cbb\u7597\u7cd6\u5c3f\u75c5\u5417\uff1f\u5bf9\u7cd6\u5c3f\u75c5\u6709\u597d\u5904\u4e48\uff1f";
- @Test
- public void surfaceType_shouldBeGoodOrNot_notOther() {
- SurfaceQuestionType type = SurfaceQuestionTypeDetector.detect(USER_MSG);
- assertEquals(
- "\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",
- SurfaceQuestionType.GOOD_OR_NOT, type);
- }
- @Test
- public void implicitSignal_shouldDetectDiabetesConcern() {
- String signal = ImplicitSignalRuleCatalog.detectImplicitSignal(USER_MSG, null);
- assertNotNull("\u5e94\u8bc6\u522b\u51fa\u7cd6\u5c3f\u75c5\u76f8\u5173\u9690\u6027\u4fe1\u53f7", signal);
- assertTrue("\u9690\u6027\u4fe1\u53f7\u5e94\u63d0\u53ca\u7cd6\u5c3f\u75c5", signal.contains("\u7cd6\u5c3f\u75c5"));
- }
- @Test
- public void uddPlan_firstRound_shouldProbeSubject() {
- DeepDialogueState state = new DeepDialogueState();
- state.setCompanyId(1L);
- state.setUserKey("diag_test");
- state.setRound(0);
- UniversalSemanticDecomposition decomposition = new UniversalSemanticDecomposition();
- decomposition.setSurfaceQuestionType(SurfaceQuestionType.GOOD_OR_NOT);
- decomposition.setExplicitQuestion(USER_MSG);
- decomposition.setImplicitSignal("\u7528\u6237\u5173\u5fc3\u7cd6\u5c3f\u75c5\u4e0e\u996e\u98df\u8c03\u7406");
- decomposition.setLatentNeed("\u786e\u8ba4\u662f\u5426\u9002\u5408\u81ea\u5df1\u6216\u5bb6\u4eba");
- SemanticResult semantic = SemanticResult.of("inquiry", 0.7, 0.1, null);
- DeepDialogueReplyPlan plan = DeepDialogueReplyPlanner.buildPlan(
- state, decomposition, semantic, null, "", 3);
- assertFalse("\u9996\u8f6e\u4e0d\u5e94\u6682\u505c\u8ffd\u95ee", plan.isProbingPaused());
- assertTrue("\u9996\u8f6e\u5e94\u5f00\u542f\u8ffd\u95ee", plan.isShouldProbe());
- assertNotNull("\u5e94\u6709\u8ffd\u95ee\u7ef4\u5ea6", plan.getProbeDimension());
- assertNotNull("\u5e94\u6709\u8ffd\u95ee\u8bdd\u672f", plan.getProbeQuestion());
- assertTrue("\u8ffd\u95ee\u5e94\u50cf\u771f\u4eba\u63d0\u95ee",
- plan.getProbeQuestion().contains("\\uff1f") || plan.getProbeQuestion().contains("?"));
- }
- @Test
- public void ensureProbeIncluded_appendsWhenReplyHasNoFollowUp() {
- 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";
- String probe = "\u5192\u5473\u95ee\u4e0b\uff0c\u662f\u60a8\u81ea\u5df1\u4f7f\u7528\u8fd8\u662f\u5e26\u5bb6\u4eba\u54a8\u8be2\u7684\u5462\uff1f";
- String merged = UniversalDeepDialogueService.ensureProbeIncluded(plainAnswer, probe, true);
- assertTrue("\u56de\u590d\u672b\u5c3e\u5e94\u8ffd\u52a0\u8ffd\u95ee", merged.contains(probe));
- assertTrue("\u5408\u5e76\u540e\u5e94\u5305\u542b\u539f\u7b54\u590d", merged.contains("\u82b9\u83dc"));
- }
- @Test
- public void ensureProbeIncluded_skipsWhenProbeAlreadyPresent() {
- String probe = "\u5192\u5473\u95ee\u4e0b\uff0c\u662f\u60a8\u81ea\u5df1\u4f7f\u7528\u8fd8\u662f\u5e26\u5bb6\u4eba\u54a8\u8be2\u7684\u5462\uff1f";
- String already = "\u597d\u7684\u3002" + probe;
- String merged = UniversalDeepDialogueService.ensureProbeIncluded(already, probe, true);
- assertEquals("\u5df2\u6709\u8ffd\u95ee\u65f6\u4e0d\u5e94\u91cd\u590d\u8ffd\u52a0", already, merged);
- }
- }
- `);
- writeFileSync(path, content.replace(/\r\n/g, '\n'), 'utf8');
- console.log('fixed SimulateDialogueFlowDiagnosticTest.java');
|