fix(api): record stock retry recovery readback
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 19s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-29 21:13:32 +08:00
parent 3683282b58
commit 1144955ca9
8 changed files with 184 additions and 142 deletions

View File

@@ -97,12 +97,12 @@ from src.services.ai_agent_interaction_learning_proof import (
from src.services.ai_agent_learning_writeback_approval_package import (
load_latest_ai_agent_learning_writeback_approval_package,
)
from src.services.ai_agent_log_feedback_receipt_dry_run import (
load_latest_ai_agent_log_feedback_receipt_dry_run,
)
from src.services.ai_agent_live_read_model_gate import (
load_latest_ai_agent_live_read_model_gate,
)
from src.services.ai_agent_log_feedback_receipt_dry_run import (
load_latest_ai_agent_log_feedback_receipt_dry_run,
)
from src.services.ai_agent_log_intelligence_integration_readback import (
load_latest_ai_agent_log_intelligence_integration_readback,
)
@@ -324,8 +324,8 @@ from src.services.backup_restore_drill_approval_package_template import (
)
from src.services.credential_escrow_evidence_intake_readiness import (
load_latest_credential_escrow_evidence_intake_readiness,
validate_credential_escrow_evidence_refs,
validate_credential_escrow_evidence_owner_response,
validate_credential_escrow_evidence_refs,
)
from src.services.delivery_closure_workbench import (
load_delivery_closure_workbench,

View File

@@ -164,8 +164,8 @@ def test_delivery_closure_workbench_exposes_p0_006_reboot_slo_lane():
assert lane["source_id"] == "reboot_auto_recovery_slo_scorecard"
assert lane["status"] == "blocked_reboot_auto_recovery_slo_not_ready"
assert lane["blocker_count"] == 6
assert lane["completion_percent"] == 45
assert lane["blocker_count"] == 5
assert lane["completion_percent"] == 55
assert lane["metric"]["kind"] == "reboot_auto_recovery_slo"
assert lane["metric"]["workplan_id"] == "P0-006"
assert lane["metric"]["target_minutes"] == 10
@@ -178,9 +178,9 @@ def test_delivery_closure_workbench_exposes_p0_006_reboot_slo_lane():
assert lane["metric"]["product_data_green"] is False
assert lane["metric"]["backup_core_green"] is True
assert lane["metric"]["stockplatform_freshness_status"] == "blocked"
assert lane["metric"]["stockplatform_ingestion_status"] == "blocked"
assert lane["metric"]["stockplatform_freshness_blocker_count"] == 2
assert lane["metric"]["stockplatform_ingestion_blocker_count"] == 1
assert lane["metric"]["stockplatform_ingestion_status"] == "ok"
assert lane["metric"]["stockplatform_freshness_blocker_count"] == 1
assert lane["metric"]["stockplatform_ingestion_blocker_count"] == 0
assert lane["metric"]["stockplatform_final_retry_window_passed"] is False
assert lane["metric"]["stockplatform_controlled_recovery_gate_required"] is False
assert lane["metric"]["host_reboot_performed"] is False
@@ -189,7 +189,7 @@ def test_delivery_closure_workbench_exposes_p0_006_reboot_slo_lane():
assert lane["metric"]["secret_value_collection_allowed"] is False
assert "stockplatform_freshness_blocked" in lane["metric"]["active_blockers"]
assert lane["next_action"] == (
"wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_"
"wait_ai_recommendations_refresh_then_rerun_slo_verify_only_"
"no_reboot_no_db_write"
)
@@ -213,8 +213,8 @@ def _assert_delivery_workbench_shape(data: dict):
"blocked_reboot_auto_recovery_slo_not_ready"
)
assert data["summary"]["reboot_auto_recovery_workplan_id"] == "P0-006"
assert data["summary"]["reboot_auto_recovery_readiness_percent"] == 45
assert data["summary"]["reboot_auto_recovery_active_blocker_count"] == 6
assert data["summary"]["reboot_auto_recovery_readiness_percent"] == 55
assert data["summary"]["reboot_auto_recovery_active_blocker_count"] == 5
assert data["summary"]["reboot_auto_recovery_can_claim_slo"] is False
assert data["summary"]["reboot_auto_recovery_service_green"] is False
assert data["summary"]["reboot_auto_recovery_product_data_green"] is False
@@ -226,7 +226,7 @@ def _assert_delivery_workbench_shape(data: dict):
)
assert (
data["summary"]["reboot_auto_recovery_stockplatform_ingestion_status"]
== "blocked"
== "ok"
)
assert (
data["summary"][
@@ -241,7 +241,7 @@ def _assert_delivery_workbench_shape(data: dict):
is False
)
assert data["summary"]["reboot_auto_recovery_safe_next_step"] == (
"wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_"
"wait_ai_recommendations_refresh_then_rerun_slo_verify_only_"
"no_reboot_no_db_write"
)
assert data["summary"]["gitea_private_inventory_status"] == (

View File

@@ -31,18 +31,18 @@ def _assert_reboot_slo_payload(payload: dict):
assert payload["priority"] == "P0-006"
assert payload["status"] == "blocked_reboot_auto_recovery_slo_not_ready"
assert payload["safe_next_step"] == (
"wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_"
"wait_ai_recommendations_refresh_then_rerun_slo_verify_only_"
"no_reboot_no_db_write"
)
assert payload["can_claim_all_services_recovered_within_target"] is False
assert payload["readback"]["workplan_id"] == "P0-006"
assert payload["readback"]["target_minutes"] == 10
assert payload["readback"]["safe_next_step"] == (
"wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_"
"wait_ai_recommendations_refresh_then_rerun_slo_verify_only_"
"no_reboot_no_db_write"
)
assert payload["rollups"]["active_blocker_count"] == 6
assert payload["rollups"]["readiness_percent"] == 45
assert payload["rollups"]["active_blocker_count"] == 5
assert payload["rollups"]["readiness_percent"] == 55
assert payload["rollups"]["observed_host_count"] == 4
assert payload["rollups"]["missing_host_count"] == 0
assert payload["rollups"]["unreachable_host_count"] == 0
@@ -51,9 +51,9 @@ def _assert_reboot_slo_payload(payload: dict):
assert payload["rollups"]["product_data_green"] is False
assert payload["rollups"]["backup_core_green"] is True
assert payload["rollups"]["stockplatform_freshness_status"] == "blocked"
assert payload["rollups"]["stockplatform_ingestion_status"] == "blocked"
assert payload["rollups"]["stockplatform_freshness_blocker_count"] == 2
assert payload["rollups"]["stockplatform_ingestion_blocker_count"] == 1
assert payload["rollups"]["stockplatform_ingestion_status"] == "ok"
assert payload["rollups"]["stockplatform_freshness_blocker_count"] == 1
assert payload["rollups"]["stockplatform_ingestion_blocker_count"] == 0
assert payload["rollups"]["stockplatform_final_retry_window_passed"] is False
assert (
payload["rollups"]["stockplatform_controlled_recovery_gate_required"]
@@ -63,12 +63,12 @@ def _assert_reboot_slo_payload(payload: dict):
stockplatform = payload["stockplatform_data_freshness"]
assert stockplatform["freshness_endpoint_readback_present"] is True
assert stockplatform["ingestion_endpoint_readback_present"] is True
assert stockplatform["freshness_blockers"] == [
"core_margin_short_daily_missing",
"ai_recommendations_stale",
]
assert stockplatform["ingestion_blockers"] == [
"core.margin_short_daily_incomplete"
assert stockplatform["freshness_blockers"] == ["ai_recommendations_stale"]
assert stockplatform["ingestion_blockers"] == []
assert stockplatform["margin_short_recovery"]["status"] == "recovered"
assert stockplatform["margin_short_recovery"]["successful_source_run_ids"] == [
3390,
3389,
]
assert stockplatform["eod_window"]["final_retry_window_passed"] is False
assert stockplatform["controlled_recovery_gate"]["required"] is False