test: add end-to-end business goals smoke
This commit is contained in:
118
scripts/verify-business-goals-smoke.ps1
Normal file
118
scripts/verify-business-goals-smoke.ps1
Normal file
@@ -0,0 +1,118 @@
|
||||
param(
|
||||
[string]$ReportPath = ""
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
Set-StrictMode -Version Latest
|
||||
|
||||
$repo = (Resolve-Path -LiteralPath (Join-Path $PSScriptRoot "..")).Path
|
||||
if ([string]::IsNullOrWhiteSpace($ReportPath)) {
|
||||
$ReportPath = Join-Path $repo "docs\reports\2026-07-10-business-goals-smoke.md"
|
||||
}
|
||||
|
||||
Push-Location $repo
|
||||
try {
|
||||
$verifyOutput = & powershell -NoProfile -ExecutionPolicy Bypass -File (Join-Path $repo "scripts\verify-go-mcp.ps1")
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
$verifyOutput | ForEach-Object { Write-Host $_ }
|
||||
throw "verify-go-mcp.ps1 failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
$jsonLine = @($verifyOutput | Where-Object {
|
||||
$trimmed = ([string]$_).Trim()
|
||||
$trimmed.StartsWith("{") -and $trimmed.EndsWith("}")
|
||||
}) | Select-Object -Last 1
|
||||
if (-not $jsonLine) {
|
||||
throw "verify-go-mcp.ps1 did not emit JSON summary"
|
||||
}
|
||||
$mcp = $jsonLine | ConvertFrom-Json
|
||||
|
||||
$searchContactsReady = ([int]$mcp.configured_contact_count -ge 1)
|
||||
$searchGroupsReady = ([int]$mcp.configured_group_count -ge 1)
|
||||
$receiveMessagesReady = ([int]$mcp.configured_receive_message_count -ge 1)
|
||||
$sendMessagePreviewReady = ([bool]$mcp.send_preview_tool_present)
|
||||
$sendMessageProductionReady = ([bool]$mcp.production_send_enabled)
|
||||
$receiveFilesListReady = ([int]$mcp.configured_file_count -ge 1)
|
||||
$receiveFilesDownloadReady = $false
|
||||
$receiveFilesDownloadPreviewBlocked = ([bool]$mcp.receive_file_download_preview_blocked)
|
||||
$sendFilePreviewReady = ([bool]$mcp.send_file_preview_tool_present)
|
||||
$sendFileProductionReady = ([bool]$mcp.send_file_production_enabled)
|
||||
|
||||
$blockers = New-Object System.Collections.Generic.List[string]
|
||||
if (-not $sendMessageProductionReady) { $blockers.Add("send_message_production_missing_strict_machine_sent_record_evidence") }
|
||||
if (-not $receiveFilesDownloadReady) { $blockers.Add("receive_files_download_missing_real_cache_mapping_and_copy_gate") }
|
||||
if (-not $sendFileProductionReady) { $blockers.Add("send_file_production_missing_upload_connector_and_returned_file_send_evidence") }
|
||||
|
||||
$summaryJsonBlock = [ordered]@{
|
||||
search_contacts_ready = $searchContactsReady
|
||||
search_groups_ready = $searchGroupsReady
|
||||
receive_messages_ready = $receiveMessagesReady
|
||||
send_message_preview_ready = $sendMessagePreviewReady
|
||||
send_message_production_ready = $sendMessageProductionReady
|
||||
receive_files_list_ready = $receiveFilesListReady
|
||||
receive_files_download_ready = $receiveFilesDownloadReady
|
||||
receive_files_download_preview_blocked = $receiveFilesDownloadPreviewBlocked
|
||||
send_file_preview_ready = $sendFilePreviewReady
|
||||
send_file_production_ready = $sendFileProductionReady
|
||||
} | ConvertTo-Json -Depth 4 -Compress
|
||||
|
||||
$reportLines = @(
|
||||
"# Business Goals Smoke - 2026-07-10",
|
||||
"",
|
||||
"## 业务目标状态",
|
||||
"",
|
||||
"| 目标 | 当前状态 | 说明 |",
|
||||
"| --- | --- | --- |",
|
||||
"| 搜索联系人 | 可用 | MCP smoke 证明配置化 fixture 下可返回联系人候选。 |",
|
||||
"| 搜索群组 | 可用 | MCP smoke 证明配置化 fixture 下可返回群组候选。 |",
|
||||
"| 收消息 | 基础可用 | PacketReader/log-backed 默认路线和显式 MsgLib 路线已存在;R12 增加对账辅助但未改变默认路由。 |",
|
||||
"| 发消息 | preview 可用,生产阻断 | isphere_send_message 可规划发送并做审计/idempotency;两个 returned sent-record 包仍未给出机器可验证 sent-record。 |",
|
||||
"| 收文件 | list 可用,download 阻断 | isphere_receive_files 可列文件,download preview 返回机器可读阻断原因;真实下载缺少 cache mapping 和 copy gate。 |",
|
||||
"| 发文件 | preview 可用,生产阻断 | isphere_send_file 可做 allowed-dir 文件 SHA256/size preview;真实上传缺少返回包/上传连接器证据。 |",
|
||||
"",
|
||||
"## Smoke 输出摘要",
|
||||
"",
|
||||
'```json',
|
||||
$summaryJsonBlock,
|
||||
'```',
|
||||
"",
|
||||
"## 剩余业务阻断",
|
||||
"",
|
||||
"- 发消息生产:缺少严格机器 sent-record/content-hash after 证据。",
|
||||
"- 收文件下载:缺少真实 cache mapping 和 copy gate。",
|
||||
"- 发文件生产:缺少 upload connector 和 returned file-send evidence。",
|
||||
"",
|
||||
"## 结论",
|
||||
"",
|
||||
"数字员工现在可使用:搜索联系人、搜索群组、收消息基础读取、收文件列表、发消息 preview、发文件 preview。",
|
||||
"",
|
||||
"数字员工还不能使用:生产发消息、真实下载文件、生产发文件。"
|
||||
)
|
||||
$report = $reportLines -join "`n"
|
||||
|
||||
$parent = Split-Path -Parent $ReportPath
|
||||
if (-not [string]::IsNullOrWhiteSpace($parent)) {
|
||||
New-Item -ItemType Directory -Force -Path $parent | Out-Null
|
||||
}
|
||||
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
|
||||
[System.IO.File]::WriteAllText($ReportPath, ($report + "`n"), $utf8NoBom)
|
||||
|
||||
[ordered]@{
|
||||
ok = $true
|
||||
verification = "business_goals_smoke"
|
||||
search_contacts_ready = $searchContactsReady
|
||||
search_groups_ready = $searchGroupsReady
|
||||
receive_messages_ready = $receiveMessagesReady
|
||||
send_message_preview_ready = $sendMessagePreviewReady
|
||||
send_message_production_ready = $sendMessageProductionReady
|
||||
receive_files_list_ready = $receiveFilesListReady
|
||||
receive_files_download_ready = $receiveFilesDownloadReady
|
||||
receive_files_download_preview_blocked = $receiveFilesDownloadPreviewBlocked
|
||||
send_file_preview_ready = $sendFilePreviewReady
|
||||
send_file_production_ready = $sendFileProductionReady
|
||||
remaining_business_blockers = @($blockers)
|
||||
report_path = "docs/reports/2026-07-10-business-goals-smoke.md"
|
||||
} | ConvertTo-Json -Depth 6 -Compress
|
||||
}
|
||||
finally {
|
||||
Pop-Location
|
||||
}
|
||||
Reference in New Issue
Block a user