"""admin 比价记录 debug 页 schema。phone/nickname 由 queries 瞬态挂在 ORM 实例上。""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, ConfigDict class AdminComparisonListItem(BaseModel): model_config = ConfigDict(from_attributes=True) id: int user_id: int phone: str | None = None nickname: str | None = None business_type: str trace_id: str trace_url: str | None = None status: str information: str | None = None store_name: str | None = None source_platform_name: str | None = None best_platform_name: str | None = None source_price_cents: int | None = None best_price_cents: int | None = None saved_amount_cents: int | None = None total_ms: int | None = None step_count: int | None = None llm_call_count: int | None = None retry_count: int | None = None input_tokens: int | None = None output_tokens: int | None = None device_model: str | None = None rom_vendor: str | None = None rom_name: str | None = None android_version: str | None = None app_version: str | None = None created_at: datetime class AdminComparisonDetail(AdminComparisonListItem): source_platform_id: str | None = None source_package: str | None = None best_platform_id: str | None = None best_deeplink: str | None = None is_source_best: bool | None = None total_dish_count: int | None = None skipped_dish_count: int | None = None device_id: str | None = None items: list = [] comparison_results: list = [] skipped_dish_names: list = [] device_manufacturer: str | None = None rom_version: int | None = None android_sdk: int | None = None app_version_code: int | None = None source_app_version: str | None = None longitude: float | None = None latitude: float | None = None llm_calls: list | None = None raw_payload: dict | None = None