feat(platform): close AI expense value loop

Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
This commit is contained in:
caoxiaozhu
2026-07-17 14:14:08 +08:00
parent 242d68c36f
commit 787bc3a481
507 changed files with 82072 additions and 6344 deletions

View File

@@ -7,10 +7,23 @@ const detailTemplate = readFileSync(
fileURLToPath(new URL('../src/views/TravelRequestDetailView.vue', import.meta.url)),
'utf8'
)
const detailScript = readFileSync(
const detailEntryScript = readFileSync(
fileURLToPath(new URL('../src/views/scripts/TravelRequestDetailView.js', import.meta.url)),
'utf8'
)
const detailSetupScript = readFileSync(
fileURLToPath(new URL('../src/views/scripts/travelRequestDetailSetup.js', import.meta.url)),
'utf8'
)
const detailApprovalFlowScript = readFileSync(
fileURLToPath(new URL('../src/views/scripts/useTravelRequestDetailApprovalFlow.js', import.meta.url)),
'utf8'
)
const detailRiskSubmitScript = readFileSync(
fileURLToPath(new URL('../src/views/scripts/useTravelRequestDetailRiskSubmit.js', import.meta.url)),
'utf8'
)
const detailScript = [detailSetupScript, detailApprovalFlowScript, detailRiskSubmitScript].join('\n')
const detailStyles = readFileSync(
fileURLToPath(new URL('../src/assets/styles/views/travel-request-detail-view.css', import.meta.url)),
'utf8'
@@ -60,7 +73,12 @@ function extractFunction(source, name) {
}
test('approval-mode detail collects leader opinion inside confirm dialog before API call', () => {
assert.match(detailScript, /approvalMode:/)
assert.match(detailEntryScript, /import \{ useTravelRequestDetailSetup \} from '\.\/travelRequestDetailSetup\.js'/)
assert.match(detailEntryScript, /setup: useTravelRequestDetailSetup/)
assert.match(detailSetupScript, /import \{ useTravelRequestDetailApprovalFlow \} from '\.\/useTravelRequestDetailApprovalFlow\.js'/)
assert.match(detailSetupScript, /useTravelRequestDetailApprovalFlow\(\{/)
assert.match(detailSetupScript, /approvalRiskConfirmItems: riskSubmit\.approvalRiskConfirmItems/)
assert.match(detailEntryScript, /approvalMode:/)
assert.match(detailScript, /const leaderOpinion = ref\(''\)/)
assert.match(detailScript, /const approveConfirmDialogOpen = ref\(false\)/)
assert.match(detailScript, /const approvalRiskConfirmed = ref\(false\)/)