Implement display artifacts, pricing integrity, draft base and publish preview bundle

This commit is contained in:
greebo
2026-03-19 17:58:17 +03:00
parent 85fb2f4bb9
commit c91c5abf15
35 changed files with 3283 additions and 302 deletions

View File

@@ -0,0 +1,194 @@
from pydantic import BaseModel, Field
class DraftSeatItem(BaseModel):
seat_record_id: str
scheme_id: str
scheme_version_id: str
element_id: str | None
seat_id: str | None
sector_id: str | None
group_id: str | None
row_label: str | None
seat_number: str | None
tag: str | None
classes_raw: str | None
x: float | None
y: float | None
cx: float | None
cy: float | None
width: float | None
height: float | None
created_at: str
class DraftSectorItem(BaseModel):
sector_record_id: str
scheme_id: str
scheme_version_id: str
element_id: str | None
sector_id: str | None
name: str | None
classes_raw: str | None
created_at: str
class DraftGroupItem(BaseModel):
group_record_id: str
scheme_id: str
scheme_version_id: str
element_id: str | None
group_id: str | None
name: str | None
classes_raw: str | None
created_at: str
class DraftStructureResponse(BaseModel):
scheme_id: str
scheme_version_id: str
status: str
seats: list[DraftSeatItem]
sectors: list[DraftSectorItem]
groups: list[DraftGroupItem]
total_seats: int
total_sectors: int
total_groups: int
class SeatPatchRequest(BaseModel):
seat_id: str | None = Field(default=None, max_length=128)
sector_id: str | None = Field(default=None, max_length=128)
group_id: str | None = Field(default=None, max_length=128)
row_label: str | None = Field(default=None, max_length=64)
seat_number: str | None = Field(default=None, max_length=64)
class SeatPatchResponse(BaseModel):
scheme_id: str
scheme_version_id: str
element_id: str | None
seat_id: str | None
sector_id: str | None
group_id: str | None
row_label: str | None
seat_number: str | None
class BulkSeatPatchItem(BaseModel):
seat_record_id: str = Field(..., max_length=32)
seat_id: str | None = Field(default=None, max_length=128)
sector_id: str | None = Field(default=None, max_length=128)
group_id: str | None = Field(default=None, max_length=128)
row_label: str | None = Field(default=None, max_length=64)
seat_number: str | None = Field(default=None, max_length=64)
class BulkSeatPatchRequest(BaseModel):
items: list[BulkSeatPatchItem] = Field(..., min_length=1, max_length=500)
class BulkSeatPatchResultItem(BaseModel):
seat_record_id: str
updated_seat_id: str | None
sector_id: str | None
group_id: str | None
row_label: str | None
seat_number: str | None
class BulkSeatPatchResponse(BaseModel):
scheme_id: str
scheme_version_id: str
updated_count: int
items: list[BulkSeatPatchResultItem]
class SectorPatchRequest(BaseModel):
sector_id: str | None = Field(default=None, max_length=128)
name: str | None = Field(default=None, max_length=255)
class SectorPatchResponse(BaseModel):
scheme_id: str
scheme_version_id: str
element_id: str | None
sector_id: str | None
name: str | None
class GroupPatchRequest(BaseModel):
group_id: str | None = Field(default=None, max_length=128)
name: str | None = Field(default=None, max_length=255)
class GroupPatchResponse(BaseModel):
scheme_id: str
scheme_version_id: str
element_id: str | None
group_id: str | None
name: str | None
class CreateSectorRequest(BaseModel):
element_id: str | None = Field(default=None, max_length=255)
sector_id: str = Field(..., max_length=128)
name: str | None = Field(default=None, max_length=255)
classes_raw: str | None = Field(default=None, max_length=4000)
class CreateGroupRequest(BaseModel):
element_id: str | None = Field(default=None, max_length=255)
group_id: str = Field(..., max_length=128)
name: str | None = Field(default=None, max_length=255)
classes_raw: str | None = Field(default=None, max_length=4000)
class CreateSectorResponse(BaseModel):
scheme_id: str
scheme_version_id: str
sector_record_id: str
element_id: str | None
sector_id: str
name: str | None
class CreateGroupResponse(BaseModel):
scheme_id: str
scheme_version_id: str
group_record_id: str
element_id: str | None
group_id: str
name: str | None
class DeleteEntityResponse(BaseModel):
scheme_id: str
scheme_version_id: str
deleted: bool
record_id: str
class RepairReferencesResponse(BaseModel):
scheme_id: str
scheme_version_id: str
repaired_sector_refs_count: int
repaired_group_refs_count: int
details: dict
class StructureDiffEntityItem(BaseModel):
key: str
status: str
before: dict | None
after: dict | None
class StructureDiffResponse(BaseModel):
scheme_id: str
draft_scheme_version_id: str
baseline_scheme_version_id: str | None
summary: dict
sectors: list[StructureDiffEntityItem]
groups: list[StructureDiffEntityItem]
seats: list[StructureDiffEntityItem]