feat(platform): close AI expense value loop
Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
This commit is contained in:
@@ -46,7 +46,8 @@ test('workbench document detail keeps workbench as the return target', () => {
|
||||
assert.match(appShell, /const detailPayload = request \|\| \{[\s\S]*detailLookupOnly:\s*true[\s\S]*\}/)
|
||||
assert.match(appShell, /openRequestDetail\(detailPayload,\s*\{ returnTo \}\)/)
|
||||
assert.match(appShellComposable, /const detailReturnTarget = computed/)
|
||||
assert.match(appShellComposable, /detailReturnTarget\.value === 'workbench' \? '返回首页' : '返回单据中心'/)
|
||||
assert.match(appShellComposable, /if \(detailReturnTarget\.value === 'workbench'\) return '返回首页'/)
|
||||
assert.match(appShellComposable, /detailReturnTarget\.value === 'value' \? '返回经营价值' : '返回单据中心'/)
|
||||
assert.match(appShellComposable, /const returnTo = resolveDocumentDetailReturnTarget\(options\.returnTo\)/)
|
||||
assert.match(appShellComposable, /nextQuery\.returnTo = returnTo/)
|
||||
assert.match(appShellComposable, /router\.push\(\{ name: 'app-workbench' \}\)/)
|
||||
@@ -57,7 +58,7 @@ test('AI conversation document detail returns to the active conversation content
|
||||
assert.match(aiDetailReference, /source:\s*'ai-conversation'/)
|
||||
assert.match(aiDetailReference, /returnTo:\s*'conversation'/)
|
||||
assert.match(appShell, /@back-to-requests="handleDocumentDetailBack"/)
|
||||
assert.match(appShell, /const DOCUMENT_DETAIL_RETURN_TARGETS = new Set\(\['workbench', 'conversation'\]\)/)
|
||||
assert.match(appShell, /const DOCUMENT_DETAIL_RETURN_TARGETS = new Set\(\['workbench', 'conversation', 'value'\]\)/)
|
||||
assert.match(
|
||||
appShell,
|
||||
/function handleDocumentDetailBack\(\) \{[\s\S]*detailReturnTarget\.value === 'conversation'[\s\S]*dispatchAiSidebarCommand\('open-recent', activeConversation\)/
|
||||
|
||||
Reference in New Issue
Block a user