64 行
1.3 KiB
Python
64 行
1.3 KiB
Python
from __future__ import annotations
|
|
from pydantic import BaseModel
|
|
from typing import Any
|
|
|
|
|
|
class SeasonalConfigSchema(BaseModel):
|
|
narrative: str | None = None
|
|
style: str | None = None
|
|
brand_name: str | None = None
|
|
version_label: str | None = None
|
|
season_label: str | None = None
|
|
|
|
|
|
class SeasonalVersionSchema(BaseModel):
|
|
version_id: str
|
|
name: str
|
|
days: int
|
|
nights: int
|
|
tag: str | None = None
|
|
line: str | None = None
|
|
route: str | None = None
|
|
audience: str | None = None
|
|
description: str | None = None
|
|
highlights: list[str] = []
|
|
itinerary: list[str] = []
|
|
|
|
|
|
class SeasonalVersionResponse(SeasonalVersionSchema):
|
|
id: int
|
|
sort_order: int = 0
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SeasonalHighlightSchema(BaseModel):
|
|
category: str # shared, south, north
|
|
title: str
|
|
description: str | None = None
|
|
|
|
|
|
class SeasonalHighlightResponse(SeasonalHighlightSchema):
|
|
id: int
|
|
sort_order: int = 0
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SeasonalTimelineSchema(BaseModel):
|
|
version: str | None = None
|
|
date: str | None = None
|
|
title: str | None = None
|
|
changes: list[dict] = []
|
|
reason: str | None = None
|
|
|
|
|
|
class SeasonalTimelineResponse(SeasonalTimelineSchema):
|
|
id: int
|
|
sort_order: int = 0
|
|
|
|
class Config:
|
|
from_attributes = True
|