Files
ai-contract-platform/project-docs/V2-phase3-display-cache-smoke-verification-2026-06-30.md
T
yuqei a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
release: freeze V2 release candidate
2026-07-12 15:32:24 +08:00

2.6 KiB

V2 Phase 3 Display Cache Smoke Verification - 2026-06-30T18-35-02

Environment

  • Host: 192.168.3.90
  • Compose project: yuqei-contract-v2-smoke
  • Contract API: http://192.168.3.90:18100
  • Deploy artifact: project-docs/qa-artifacts/v2-smoke-docker-deploy/2026-06-30T18-35-02
  • Smoke artifact: project-docs/qa-artifacts/phase3-display-cache-smoke/2026-06-30T18-35-02

Deploy

Deployment command:

$env:SSHPASS='<由运维临时提供>'
powershell.exe -NoProfile -ExecutionPolicy Bypass -File yuqei-infra\scripts\deploy-v2-smoke-docker.ps1 -UseSshpass -AllowDirtyWorktree -KeepRemoteBackup -SkipSmoke

Important guardrail: -ResetSmokeVolumes was not used.

Deploy result: pass.

Runtime Schema Check

Post-flow /api/v1/runtime/schema-check result:

  • Top-level status: ok
  • Alembic actual/head: 20260630_0021 / 20260630_0021
  • display_cache_consistency.status: ok
  • display_cache_consistency.checked_rows: 12011
  • display_cache_consistency.mismatch_count: 0
  • display_cache_cleanup_prestate.status: ok
  • display_cache_cleanup_prestate.legacy_columns_retained: true
  • display_cache_cleanup_prestate.display_cache_consistent: true

Flow Sample

Smoke contract: contract-6b07dab8d737

Covered API flow:

  1. Create contract: draft / 待提交 / tag-primary
  2. Submit approval: approval_pending / 待审批 / tag-warning
  3. Reject approval: rejected / 已退回 / tag-danger
  4. Resubmit approval: approval_pending / 待审批 / tag-warning
  5. Start review task: review-5586aaf68aa9 / queued
  6. Final contract status: reviewing / 审查中 / tag-warning

Database Derived Cache Check

Direct PostgreSQL check inside the contract-api container:

  • Contract ID: contract-6b07dab8d737
  • Status: reviewing
  • Stored status_label: 审查中
  • Expected status_label: 审查中
  • Stored status_tone: tag-warning
  • Expected status_tone: tag-warning
  • status_label_matches: true
  • status_tone_matches: true
  • Stored next_action: 根据审查结果修改或提交审批

The next_action value changed after the review worker processed the queued task, which confirms that next_action/next_actions still follow workflow/action context behavior and were not flattened into a pure status cache.

Conclusion

Remote smoke passed. The old compatibility columns remain present and consistent, while production SQLAlchemy write paths now keep status_label/status_tone derived from status.

The next Phase 3 step should be the next_action/action_hint semantic design. Do not delete the old UI cache columns yet.