Files
svg-backend/backend/app/schemas/publish_readiness.py
greebo ac3a62f108 feat(backend): add publish readiness contract and guarded publish flow
add backend readiness contract for publish prechecks

guard publish flow with explicit validation and version-aware checks
make publish behavior more predictable for clients and safer against stale state
2026-03-19 20:41:08 +03:00

46 lines
1.0 KiB
Python

from __future__ import annotations
from pydantic import BaseModel
class PublishReadinessSnapshot(BaseModel):
available: bool
categories_count: int
rules_count: int
class PublishReadinessPricingCoverage(BaseModel):
total_seats: int
priced_seats: int
unpriced_seats: int
coverage_percent: float
class PublishReadinessFlags(BaseModel):
validation_publishable: bool
snapshot_available: bool
require_full_pricing_coverage: bool
full_pricing_coverage: bool
pricing_gate_passed: bool
is_ready_to_publish: bool
class PublishReadinessResponse(BaseModel):
scheme_id: str
scheme_version_id: str
status: str
validation_summary: dict
pricing_coverage: PublishReadinessPricingCoverage
snapshot: PublishReadinessSnapshot
readiness: PublishReadinessFlags
class PublishExecutionResponse(BaseModel):
scheme_id: str
scheme_version_id: str
status: str
current_version_number: int
published_at: str | None
pricing_snapshot: dict
validation_summary: dict