feat(web): AI 文档详情引用解析与查询卡片增强
- 新增 aiDocumentDetailReference,统一解析 #ai-open-document-detail / #ai-open-application-detail 引用,兼容 A/R/D 短格式与 AP-/RE-/AD- 旧格式单号,提供 isBusinessDocumentReference 判定 - aiDocumentQueryModel 文档卡片接入详情引用,按申请单/报销单生成对应 href,HTML 渲染器识别单据记录表格并生成卡片链接 - PersonalWorkbenchAiMode 处理文档详情点击跳转,卡片样式重构为结构化布局并更新背景资源 - expenseApplicationPreview 补充事由字段,同步新增/更新 ai-document-detail-reference、document-query-model、html-renderer、workbench-ai-mode 等测试 - 更新公司通信费报销规则表
This commit is contained in:
51
web/tests/ai-document-detail-reference.test.mjs
Normal file
51
web/tests/ai-document-detail-reference.test.mjs
Normal file
@@ -0,0 +1,51 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
import {
|
||||
buildAiDocumentDetailRequest,
|
||||
parseAiApplicationDetailHref,
|
||||
parseAiDocumentDetailHref
|
||||
} from '../src/utils/aiDocumentDetailReference.js'
|
||||
|
||||
test('AI detail request keeps business application number out of claimId for legacy links', () => {
|
||||
const detailReference = parseAiApplicationDetailHref('#ai-open-application-detail:AP-202606200001-ABCDEFGH')
|
||||
const request = buildAiDocumentDetailRequest(detailReference)
|
||||
|
||||
assert.deepEqual(detailReference, {
|
||||
reference: 'AP-202606200001-ABCDEFGH',
|
||||
documentType: 'application'
|
||||
})
|
||||
assert.equal(request.id, 'AP-202606200001-ABCDEFGH')
|
||||
assert.equal(request.claimId, '')
|
||||
assert.equal(request.claimNo, 'AP-202606200001-ABCDEFGH')
|
||||
assert.equal(request.documentNo, 'AP-202606200001-ABCDEFGH')
|
||||
assert.equal(request.documentTypeCode, 'application')
|
||||
assert.equal(request.detailLookupOnly, true)
|
||||
})
|
||||
|
||||
test('AI detail request uses explicit claim_id as lookup identity', () => {
|
||||
const detailReference = parseAiDocumentDetailHref(
|
||||
'#ai-open-document-detail:claim_id%3Dapproval-1%26claim_no%3DAP-APPROVAL-001'
|
||||
)
|
||||
const request = buildAiDocumentDetailRequest(detailReference)
|
||||
|
||||
assert.deepEqual(detailReference, {
|
||||
reference: 'AP-APPROVAL-001',
|
||||
claimId: 'approval-1',
|
||||
claimNo: 'AP-APPROVAL-001'
|
||||
})
|
||||
assert.equal(request.id, 'approval-1')
|
||||
assert.equal(request.claimId, 'approval-1')
|
||||
assert.equal(request.claimNo, 'AP-APPROVAL-001')
|
||||
assert.equal(request.documentNo, 'AP-APPROVAL-001')
|
||||
assert.equal(request.documentTypeCode, 'application')
|
||||
})
|
||||
|
||||
test('AI detail request treats non-number references as internal claim ids', () => {
|
||||
const request = buildAiDocumentDetailRequest({ reference: 'approval-internal-id' })
|
||||
|
||||
assert.equal(request.id, 'approval-internal-id')
|
||||
assert.equal(request.claimId, 'approval-internal-id')
|
||||
assert.equal(request.claimNo, '')
|
||||
assert.equal(request.documentNo, 'approval-internal-id')
|
||||
})
|
||||
Reference in New Issue
Block a user