feat: lock concurrent moderation decisions
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-13 09:26:18 +07:00
parent cbd854d933
commit 0abe1a2bb4
10 changed files with 147 additions and 31 deletions
+9
View File
@@ -199,11 +199,13 @@ class AdminCatchReportOut(BaseModel):
moderation_status: str
comment: str | None
screenshot_url: str | None
moderation_version: int
class ModerationUpdate(BaseModel):
status: str
reason: str | None = Field(default=None, max_length=1000)
expected_version: int = Field(ge=0)
@field_validator("status")
@classmethod
@@ -236,12 +238,14 @@ class ExternalObservationOut(BaseModel):
review_note: str | None
missing_fields: list[str]
source_payload: dict[str, str | int | float | bool | None]
moderation_version: int
class ExternalObservationMapping(BaseModel):
fish_slug: str
waterbody_slug: str
note: str | None = Field(default=None, max_length=1000)
expected_version: int = Field(ge=0)
class ExternalAliasSuggestionOut(BaseModel):
@@ -261,6 +265,11 @@ class AdminModerationHistoryOut(BaseModel):
class ExternalObservationDecision(BaseModel):
reason: str = Field(min_length=1, max_length=1000)
expected_version: int = Field(ge=0)
class ExternalObservationAction(BaseModel):
expected_version: int = Field(ge=0)
class ExternalObservationPublished(BaseModel):