91 lines
2.8 KiB
JavaScript
91 lines
2.8 KiB
JavaScript
|
|
import assert from 'node:assert/strict'
|
|||
|
|
import test from 'node:test'
|
|||
|
|
|
|||
|
|
import {
|
|||
|
|
buildStewardFieldCompletionContinuation,
|
|||
|
|
buildStewardFieldCompletionRawText,
|
|||
|
|
resolveStewardRuntimeFieldCompletion
|
|||
|
|
} from '../src/views/scripts/stewardFieldCompletionModel.js'
|
|||
|
|
|
|||
|
|
test('steward field completion maps ontology travel type and anchors reason update', () => {
|
|||
|
|
const continuation = buildStewardFieldCompletionContinuation(
|
|||
|
|
{
|
|||
|
|
currentTask: {
|
|||
|
|
summary: '2月20-23日上海出差',
|
|||
|
|
ontology_fields: {
|
|||
|
|
expense_type: 'travel',
|
|||
|
|
time_range: '2026-02-20 至 2026-02-23',
|
|||
|
|
location: '上海市'
|
|||
|
|
},
|
|||
|
|
missing_fields: ['reason']
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
'reason',
|
|||
|
|
'辅助国网仿生产服务器部署'
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
const rawText = buildStewardFieldCompletionRawText({
|
|||
|
|
preview: {
|
|||
|
|
fields: {
|
|||
|
|
applicationType: '',
|
|||
|
|
time: '2026-02-20 至 2026-02-23',
|
|||
|
|
location: '上海市',
|
|||
|
|
reason: '',
|
|||
|
|
days: '4天',
|
|||
|
|
transportMode: '火车'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
fieldKey: 'reason',
|
|||
|
|
fieldLabel: '事由',
|
|||
|
|
value: '辅助国网仿生产服务器部署',
|
|||
|
|
continuation
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
assert.equal(continuation.currentTask.ontology_fields.reason, '辅助国网仿生产服务器部署')
|
|||
|
|
assert.deepEqual(continuation.currentTask.missing_fields, [])
|
|||
|
|
assert.match(rawText, /申请类型:差旅费用申请/)
|
|||
|
|
assert.doesNotMatch(rawText, /申请类型:travel/)
|
|||
|
|
assert.match(rawText, /用户已补充:事由:辅助国网仿生产服务器部署。/)
|
|||
|
|
assert.match(rawText, /当前申请单字段的补充\/更新/)
|
|||
|
|
assert.match(rawText, /不是新建申请或切换任务/)
|
|||
|
|
assert.match(rawText, /不要把它改判为新的 IT 部署申请/)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
test('steward runtime treats bare reason reply as current application field completion', () => {
|
|||
|
|
const decision = resolveStewardRuntimeFieldCompletion(
|
|||
|
|
'辅助国网仿生产服务器部署',
|
|||
|
|
{
|
|||
|
|
waiting_for: 'application_field_completion',
|
|||
|
|
pending_application: {
|
|||
|
|
message_id: 'application-preview-1',
|
|||
|
|
ready_to_submit: false,
|
|||
|
|
missing_fields: ['事由']
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
assert.deepEqual(decision, {
|
|||
|
|
next_action: 'fill_current_application_field',
|
|||
|
|
target_message_id: 'application-preview-1',
|
|||
|
|
field_key: 'reason',
|
|||
|
|
field_label: '事由',
|
|||
|
|
field_value: '辅助国网仿生产服务器部署'
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
test('steward runtime keeps multi-field free text ambiguous for normal decision flow', () => {
|
|||
|
|
assert.equal(
|
|||
|
|
resolveStewardRuntimeFieldCompletion(
|
|||
|
|
'辅助国网仿生产服务器部署',
|
|||
|
|
{
|
|||
|
|
waiting_for: 'application_field_completion',
|
|||
|
|
pending_application: {
|
|||
|
|
message_id: 'application-preview-1',
|
|||
|
|
missing_fields: ['地点', '事由']
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
),
|
|||
|
|
null
|
|||
|
|
)
|
|||
|
|
})
|