- 移除 net.Socket TCP 探测(密码中特殊字符导致解析失败) - AppModule.init() → PrismaModule/RedisModule 连接 → 失败自然抛错 - assertGateEnv() 仅检查环境变量(REQUIRE_REAL_INFRA/NODE_ENV/AI_JOB_SYNTHETIC_ENABLED) - 前一步 prisma migrate deploy 已验证 MySQL 可达 Co-Authored-By: Claude <noreply@anthropic.com>
正则修正: - @([^:@]+):(\d+) — 匹配 @host:port(跳过 user:pass) - :\/\/([^:@]+):(\d+) — 兜底无认证的 host:port Co-Authored-By: Claude <noreply@anthropic.com>
- test/m-ai-03-gate.e2e-spec.ts: 6 fail-closed 核心测试 场景 1: 完整链路 (creation→snapshot→outbox) 场景 2: Admin Retry operationId 幂等 场景 3: 事务回滚验证 场景 4: Outbox 幂等 场景 5: 生产环境保护 场景 6: JWT 401 - REQUIRE_REAL_INFRA=true → beforeAll TCP 端口探测 MySQL/Redis 不可达 → 测试失败(不 soft-pass) - CI: 新增 MySQL/Redis health check(60s/30s timeout) - jest-m-ai-03.json: 匹配 gate 和 synthetic 两种 E2E Co-Authored-By: Claude <noreply@anthropic.com>