"""Pydantic models for structured logging payloads.""" from __future__ import annotations from pydantic import BaseModel class LogPayloadBase(BaseModel): """Base model for structured log payloads.""" attempted: int | None = None checked: int | None = None compressed_filename: str | None = None count: int | None = None db_path: str | None = None db_timestamp: str | None = None decompress_failed: int | None = None decompress_needed: int | None = None decompressed_filename: str | None = None dest_dir: str | None = None drive_md5: str | None = None error: str | None = None field: str | None = None file_id: str | None = None file_name: str | None = None filename: str | None = None filepath: str | None = None files: str | None = None final_path: str | None = None folder_id: str | None = None function_name: str | None = None gz_path: str | None = None html_len: int | None = None item: str | None = None key: str | None = None kwargs: str | None = None label: str | None = None length: int | None = None local_md5: str | None = None limit: int | None = None map_keys: str | None = None md5: str | None = None missing_files: str | None = None mode: str | None = None original_label: str | None = None output: str | None = None output_pdf_path: str | None = None previous_db_timestamp: str | None = None params_json: str | None = None current_db_timestamp: str | None = None cache_dir: str | None = None cache_type: str | None = None path: str | None = None pdf_path: str | None = None progress: int | None = None query: str | None = None query_text: str | None = None refinement_limit: int | None = None selection: str | None = None skipped: int | None = None source_path: str | None = None stderr: str | None = None template: str | None = None timestamp: str | None = None title: str | None = None type: str | None = None username: str | None = None verify_failed: int | None = None total_candidates: int | None = None class FileOperationPayload(LogPayloadBase): """Payload for file operations.""" file_path: str | None = None class GDrivePayload(FileOperationPayload): """Payload for Google Drive operations.""" gdrive_id: str | None = None gdrive_folder: str | None = None md5_hash: str | None = None class DbPayload(LogPayloadBase): """Payload for database operations.""" class ErrorPayload(LogPayloadBase): """Payload for error logging.""" error_message: str | None = None class FuncPayload(LogPayloadBase): """Payload including a function name."""