| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- """Pydantic schemas returned by the formal workbench API."""
- from __future__ import annotations
- from datetime import datetime
- from typing import Any
- from uuid import UUID
- from pydantic import BaseModel, ConfigDict, Field
- class ApiSchema(BaseModel):
- model_config = ConfigDict(from_attributes=True)
- class Page(ApiSchema):
- total: int
- page: int = 1
- size: int = 50
- items: list[dict[str, Any]] = Field(default_factory=list)
- class ErrorResponse(ApiSchema):
- code: str
- message: str
- detail: dict[str, Any] = Field(default_factory=dict)
- class QueryBatchSchema(ApiSchema):
- id: UUID
- name: str
- source_type: str
- generation_method: str | None = None
- target_platforms: list[str] = Field(default_factory=list)
- status: str
- created_at: datetime | None = None
- updated_at: datetime | None = None
- class QuerySchema(ApiSchema):
- id: UUID
- batch_id: UUID | None = None
- query_text: str
- axes: dict[str, Any] = Field(default_factory=dict)
- keep: bool | None = None
- filter_reason: str | None = None
- status: str
- sort_order: int = 0
- class TopicTableQueryPreviewRequest(ApiSchema):
- topic_build_id: int = Field(gt=0)
- topic_id: int | None = Field(default=None, gt=0)
- max_queries: int = Field(default=18, ge=6, le=60)
- class MediaAssetSchema(ApiSchema):
- id: UUID
- item_id: UUID
- media_type: str
- source_url: str | None = None
- oss_url: str | None = None
- cdn_url: str | None = None
- position: int = 0
- status: str
- class ItemClassificationSchema(ApiSchema):
- id: UUID
- item_id: UUID
- is_creation_knowledge: bool | None = None
- label: str | None = None
- confidence: float | None = None
- reason: str | None = None
- status: str
- error_message: str | None = None
- class CandidateItemSchema(ApiSchema):
- id: UUID
- platform: str
- platform_item_id: str | None = None
- unique_key: str | None = None
- canonical_url: str | None = None
- content_type: str | None = None
- content_mode: str | None = None
- title: str | None = None
- author_name: str | None = None
- body_text: str | None = None
- raw_summary: str | None = None
- status: str
- metadata: dict[str, Any] = Field(default_factory=dict)
- error_message: str | None = None
- decode_summary: dict[str, Any] | None = None
- media_assets: list[MediaAssetSchema] = Field(default_factory=list)
- classification: ItemClassificationSchema | None = None
- class AcquisitionRunSummarySchema(ApiSchema):
- id: UUID
- run_key: str | None = None
- batch_id: UUID | None = None
- status: str
- query_count: int = 0
- job_count: int = 0
- candidate_count: int = 0
- creation_hit_count: int = 0
- decoded_count: int = 0
- payload_count: int = 0
- queries: list[dict[str, Any]] = Field(default_factory=list)
- started_at: datetime | None = None
- finished_at: datetime | None = None
- class DecodeResultSchema(ApiSchema):
- id: UUID
- item_id: UUID
- status: str
- read_result: dict[str, Any] = Field(default_factory=dict)
- gate_result: dict[str, Any] = Field(default_factory=dict)
- framing_result: dict[str, Any] = Field(default_factory=dict)
- class KnowledgeParticleSchema(ApiSchema):
- id: UUID
- decode_result_id: UUID | None = None
- item_id: UUID | None = None
- parent_particle_id: UUID | None = None
- particle_type: str
- title: str
- business_stage: str | None = None
- creation_stage: str | None = None
- content: dict[str, Any] = Field(default_factory=dict)
- status: str
- class ScopeResultSchema(ApiSchema):
- id: UUID
- particle_id: UUID | None = None
- item_id: UUID | None = None
- scope_type: str
- scope_value: str
- is_reused: bool | None = None
- matched_scope_id: str | None = None
- confidence: float | None = None
- status: str
- class PayloadDraftSchema(ApiSchema):
- id: UUID
- particle_id: UUID | None = None
- item_id: UUID | None = None
- payload: dict[str, Any] = Field(default_factory=dict)
- review_status: str
- ingest_ready: bool
- status: str
- class IngestRecordSchema(ApiSchema):
- id: UUID
- payload_draft_id: UUID | None = None
- target_system: str
- target_id: str | None = None
- status: str
- attempt_count: int = 0
- response_payload: dict[str, Any] = Field(default_factory=dict)
- error_message: str | None = None
- class IngestItemRequest(ApiSchema):
- dry_run: bool = True
- class IngestItemResultSchema(ApiSchema):
- payload_draft_id: UUID | None = None
- ingest_record: IngestRecordSchema
- class IngestItemResponse(ApiSchema):
- item_id: UUID
- dry_run: bool
- total: int
- ingested_count: int
- failed_count: int
- results: list[IngestItemResultSchema] = Field(default_factory=list)
|