# Bell 独立纵切验收 本验收只使用 Bell 自身、临时 PostgreSQL 和项目内合成事件,不启动或调用 Sense、Brain,不连接默认 5432、生产数据库或客户数据。 ## 固定工具链 ```powershell $env:GOTOOLCHAIN='go1.26.5' go version node --version corepack pnpm@9.15.1 --version ``` 预期分别为 Go 1.26.5、Node 22.22.1、pnpm 9.15.1。 ## 源码验证 ```powershell Set-Location Bell\server $env:GOTOOLCHAIN='go1.26.5' go test ./... -count=1 go vet ./... go build ./... Set-Location ..\ui corepack pnpm@9.15.1 install --frozen-lockfile corepack pnpm@9.15.1 lint corepack pnpm@9.15.1 test:unit --runInBand corepack pnpm@9.15.1 build:prod ``` ## Windows 包和隔离 E2E ```powershell Set-Location <仓库根目录> Bell\scripts\build\build-windows.bat pwsh -NoProfile -File Bell\scripts\build\test-package.ps1 -PackageRoot Bell\dist\bell-windows-amd64 pwsh -NoProfile -File Bell\scripts\test-independent-e2e.ps1 -PreparedPackageRoot Bell\dist\bell-windows-amd64 ``` E2E 自动完成并清理:临时 PostgreSQL、随机数据库/HTTP 端口、随机管理员/处置员凭据、迁移、健康检查、登录/RBAC、最小 Bell 菜单、规则、合成 Event/Receipt 幂等、Alert、20 路并发 ack、越权/缺参拒绝、close 重放幂等、两条生命周期时间线、冷重启、Windows stop 和日志泄密检查。原始包保持生产配置并先通过审计;业务自动化只把临时包副本切换为 `dev` 测试模式。生产验证码的获取、正确登录、错误及重放拒绝由 #138 的 `Bell/server/tests/bell_production_login/run-postgres.ps1` 覆盖,不暴露或识别验证码答案。 浏览器验收打开脚本输出的临时 `base_url`,检查: - 匿名访问跳转登录页,并显示验证码输入;测试模式可填写任意非空验证码,生产验证码行为由 #138 回归覆盖; - 登录后保留 GoAdmin 侧栏、顶部导航和标签页; - 管理员显示 Bell 必要业务菜单,包括预警管理、事件查询、规则配置;处置员仅显示预警处理所需入口; - 预警详情可显示关联事件、处理人、现场结果和两条处理时间线; - 不显示开发工具、定时任务、系统监控等无关入口。 ## 仓库闭环 ```powershell python dev_scripts/harness.py check --strict git diff --check git status --short --branch ``` 浏览器人工/工具检查、真实生产数据库、客户网络和长期负载不由 API 单测替代;未执行的项目必须在工单证据中明确说明。