feat(preflight): read-only preflight checklist + execution summary (#39, #40)
新增 GET /api/heicode/preflight?template_id=&binding_ids=1,2,3 —— agent 启动前的统一
确认层(#29 EPIC 的 #39 缺失项检测 + #40 可读执行摘要):
- #39 缺失项检测:必需资源类别(git/sk/project_document/cloud_account)未绑定、budget
(余额≤0)、agent_slot(在跑数达 tier 上限)。ready = missing 为空。
- #40 可读执行摘要:agent 角色、脱敏资源视图、高危操作、预算(剩余额度/quota_per_unit/
tier 上限/当前在跑数)、审批策略。
- 红线:resources 只暴露 type/provider/name/status/has_secret(布尔),绝不含
secret_ref/channelId/base_url/price。
- 高危操作固定 enum:production_deploy/db_write/cloud_resource_delete/
production_secret/large_budget,由已绑资源类型推导,均 requires_approval。
判定逻辑抽为纯函数 computePreflight,单测覆盖:全缺失、就绪、槽位满、高危 enum、
敏感字段不泄露(序列化断言)。复用既有 ResourceBinding/模板/GetUserMaxAgents/部署门禁
口径,不改部署/计费逻辑。文档补 §4.1。
#41(confirm + 审计 + 防篡改版本校验)作为后续 POST /preflight/confirm 实现。
Affects: Manager only(新增只读端点)。无 Client/Swarm 代码改动,无计费/审计 schema 改动。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>