feat: gate releases on platform health

This commit is contained in:
Codex Local
2026-08-26 22:04:38 +08:00
parent 47ef596d3b
commit e4f7701439
12 changed files with 189 additions and 33 deletions
+20 -6
View File
@@ -1,8 +1,8 @@
openapi: 3.1.0
info:
title: 数据采集终端—云端系统 API
version: 0.65.0
description: 工程框架、SaaS核心业务、设备v2能力协商与智能体启动状态查询、首次通话就绪与最低固件门禁、背景资料准备失败闭环、活动通话授权撤回安全停止、语音内容闭环、终端终稿补传、批量设备遥测、录音上传队列、隐私对账、固件、双轨录音、状态事件、具体资源分享、受控运营配置、Agent组合组件引用、质量证据门禁、运营自定义版本族投放、新通话运行时冻结与供应商启动传递、带并发版本校验的配置投放暂停恢复、带严重度和验收证据门禁的联调问题闭环、含阻断告警定位证据的发布候选技术验收快照、绑定候选版本与构建摘要并按业务时区生成的可审计试点日/周运行证据、可审计且不生成正式告警的接收器联通测试、外部依赖预检台账、证书到期清单,以及带价格版本冻结、供应商用量去重和硬额度控制的费用治理接口。
version: 0.66.0
description: 工程框架、SaaS核心业务、设备v2能力协商与智能体启动状态查询、首次通话就绪与最低固件门禁、背景资料准备失败闭环、活动通话授权撤回安全停止、语音内容闭环、终端终稿补传、批量设备遥测、录音上传队列、隐私对账、固件、双轨录音、状态事件、具体资源分享、受控运营配置、Agent组合组件引用、质量证据门禁、运营自定义版本族投放、新通话运行时冻结与供应商启动传递、带并发版本校验的配置投放暂停恢复、带严重度和验收证据门禁的联调问题闭环、含阻断告警定位及当前主机健康证据的发布候选技术验收快照、绑定候选版本与构建摘要并按业务时区生成的可审计试点日/周运行证据、可审计且不生成正式告警的接收器联通测试、外部依赖预检台账、证书到期清单,以及带价格版本冻结、供应商用量去重和硬额度控制的费用治理接口。
servers:
- url: http://localhost:58080
description: 本地开发
@@ -3271,6 +3271,19 @@ components:
properties:
migration_version: { type: integer, format: int64, minimum: 0 }
dirty: { type: boolean }
OpsAcceptancePlatformHealthState:
type: object
additionalProperties: false
required: [state, check_count, warning_count, critical_count, gate_satisfied]
properties:
state: { type: string, enum: [CURRENT, STALE, MISSING] }
status: { type: string, enum: [healthy, warning, critical] }
observed_at: { type: string, format: date-time }
received_at: { type: string, format: date-time }
check_count: { type: integer, minimum: 0, maximum: 64 }
warning_count: { type: integer, minimum: 0, maximum: 64 }
critical_count: { type: integer, minimum: 0, maximum: 64 }
gate_satisfied: { type: boolean, description: 仅当快照未超过15分钟且综合状态及全部检查均为healthy时为true。 }
OpsAcceptanceDependencyState:
type: object
additionalProperties: false
@@ -3325,13 +3338,13 @@ components:
additionalProperties: false
required: [code, satisfied, summary]
properties:
code: { type: string, enum: [candidate_build_identified, database_migration_clean, required_dependencies_available, integration_issues_clear, outbox_clear, critical_alerts_clear] }
code: { type: string, enum: [candidate_build_identified, database_migration_clean, required_dependencies_available, integration_issues_clear, outbox_clear, critical_alerts_clear, platform_health_current] }
satisfied: { type: boolean }
summary: { type: string }
OpsAcceptanceSnapshot:
type: object
additionalProperties: false
required: [id, generated_at, tenant_id, candidate_version, build_digest, environment, run_type, scope, redaction_policy, runtime_build, database, integration_issues, external_dependencies, outbox, alerts, gates, overall_gate_satisfied, disclaimer]
required: [id, generated_at, tenant_id, candidate_version, build_digest, environment, run_type, scope, redaction_policy, runtime_build, database, integration_issues, external_dependencies, outbox, alerts, platform_health, gates, overall_gate_satisfied, disclaimer]
properties:
id: { type: string, format: uuid }
generated_at: { type: string, format: date-time }
@@ -3345,10 +3358,11 @@ components:
runtime_build: { $ref: '#/components/schemas/BuildInfo' }
database: { $ref: '#/components/schemas/OpsAcceptanceDatabaseState' }
integration_issues: { $ref: '#/components/schemas/IntegrationIssueSummary' }
external_dependencies: { type: array, minItems: 1, maxItems: 3, items: { $ref: '#/components/schemas/OpsAcceptanceDependencyState' } }
external_dependencies: { type: array, minItems: 1, maxItems: 4, items: { $ref: '#/components/schemas/OpsAcceptanceDependencyState' } }
outbox: { $ref: '#/components/schemas/OpsAcceptanceOutboxState' }
alerts: { $ref: '#/components/schemas/OpsAcceptanceAlertState' }
gates: { type: array, minItems: 6, maxItems: 6, items: { $ref: '#/components/schemas/OpsAcceptanceGate' } }
platform_health: { $ref: '#/components/schemas/OpsAcceptancePlatformHealthState' }
gates: { type: array, minItems: 7, maxItems: 7, items: { $ref: '#/components/schemas/OpsAcceptanceGate' } }
overall_gate_satisfied: { type: boolean }
disclaimer: { type: string }
OpsAcceptanceSnapshotResponse: