131 lines
4.2 KiB
JavaScript
131 lines
4.2 KiB
JavaScript
|
|
import assert from 'node:assert/strict'
|
|||
|
|
import { readFileSync } from 'node:fs'
|
|||
|
|
import test from 'node:test'
|
|||
|
|
import { fileURLToPath } from 'node:url'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION,
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE,
|
|||
|
|
ASSISTANT_SCOPE_SESSION_KNOWLEDGE,
|
|||
|
|
inferAssistantScopeTarget
|
|||
|
|
} from '../src/utils/assistantSessionScope.js'
|
|||
|
|
import {
|
|||
|
|
resolveWorkbenchSessionTypeFromOntology
|
|||
|
|
} from '../src/utils/workbenchAssistantIntent.js'
|
|||
|
|
|
|||
|
|
const appShellRouteView = readFileSync(
|
|||
|
|
fileURLToPath(new URL('../src/views/AppShellRouteView.vue', import.meta.url)),
|
|||
|
|
'utf8'
|
|||
|
|
)
|
|||
|
|
const appShellComposable = readFileSync(
|
|||
|
|
fileURLToPath(new URL('../src/composables/useAppShell.js', import.meta.url)),
|
|||
|
|
'utf8'
|
|||
|
|
)
|
|||
|
|
const assistantScript = readFileSync(
|
|||
|
|
fileURLToPath(new URL('../src/views/scripts/TravelReimbursementCreateView.js', import.meta.url)),
|
|||
|
|
'utf8'
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
test('workbench prompt applies travel phrases to application assistant scope', () => {
|
|||
|
|
assert.equal(inferAssistantScopeTarget('申请出差'), ASSISTANT_SCOPE_SESSION_APPLICATION)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('去北京出差3天,支撑国网仿生产环境部署'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('去国网出差3天,协助仿生产环境部署'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('下周去上海支撑客户系统上线,预计3天'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('安排去深圳客户现场验收项目'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('准备去国网现场做仿生产环境部署,差旅3天'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('我要报销去北京的费用'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('我要报销去北京出差的费用'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
inferAssistantScopeTarget('去北京出差报销标准是多少'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_KNOWLEDGE
|
|||
|
|
)
|
|||
|
|
assert.notEqual(
|
|||
|
|
inferAssistantScopeTarget('昨天去北京出差花了1000元'),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.match(appShellComposable, /fetchOntologyParse/)
|
|||
|
|
assert.match(appShellComposable, /resolveWorkbenchSessionTypeFromOntology/)
|
|||
|
|
assert.match(appShellComposable, /resolveWorkbenchSessionTypeFallback/)
|
|||
|
|
assert.match(appShellRouteView, /:initial-session-type="smartEntryContext\.sessionType"/)
|
|||
|
|
assert.match(assistantScript, /initialSessionType:\s*\{[\s\S]*type:\s*String/)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
test('workbench model routing maps ontology result before entering assistant', () => {
|
|||
|
|
const travelOntology = {
|
|||
|
|
scenario: 'expense',
|
|||
|
|
intent: 'draft',
|
|||
|
|
entities: [
|
|||
|
|
{ type: 'expense_type', normalized_value: 'travel' }
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
const reimbursementOntology = {
|
|||
|
|
scenario: 'expense',
|
|||
|
|
intent: 'draft',
|
|||
|
|
entities: [
|
|||
|
|
{ type: 'expense_type', normalized_value: 'travel' }
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
const applicationOntology = {
|
|||
|
|
scenario: 'expense',
|
|||
|
|
intent: 'draft',
|
|||
|
|
entities: [
|
|||
|
|
{ type: 'document_type', normalized_value: 'expense_application' },
|
|||
|
|
{ type: 'workflow_stage', normalized_value: 'pre_approval' }
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
assert.equal(
|
|||
|
|
resolveWorkbenchSessionTypeFromOntology(
|
|||
|
|
travelOntology,
|
|||
|
|
'下周去上海支撑客户系统上线,预计3天',
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE
|
|||
|
|
),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
resolveWorkbenchSessionTypeFromOntology(
|
|||
|
|
reimbursementOntology,
|
|||
|
|
'我要报销去北京出差的费用',
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
resolveWorkbenchSessionTypeFromOntology(
|
|||
|
|
{ scenario: 'expense', intent: 'query', entities: reimbursementOntology.entities },
|
|||
|
|
'去北京出差报销标准是多少',
|
|||
|
|
ASSISTANT_SCOPE_SESSION_KNOWLEDGE
|
|||
|
|
),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_KNOWLEDGE
|
|||
|
|
)
|
|||
|
|
assert.equal(
|
|||
|
|
resolveWorkbenchSessionTypeFromOntology(
|
|||
|
|
applicationOntology,
|
|||
|
|
'国网仿生产环境部署',
|
|||
|
|
ASSISTANT_SCOPE_SESSION_EXPENSE
|
|||
|
|
),
|
|||
|
|
ASSISTANT_SCOPE_SESSION_APPLICATION
|
|||
|
|
)
|
|||
|
|
})
|