105 lines
3.6 KiB
Python
105 lines
3.6 KiB
Python
"""
|
|
Tool_OCR - Export Schemas
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import Optional, Dict, Any, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ExportOptions(BaseModel):
|
|
"""Export options schema"""
|
|
confidence_threshold: Optional[float] = Field(None, description="Minimum confidence threshold")
|
|
include_metadata: Optional[bool] = Field(True, description="Include metadata in export")
|
|
filename_pattern: Optional[str] = Field(None, description="Filename pattern for export")
|
|
css_template: Optional[str] = Field(None, description="CSS template for PDF export")
|
|
|
|
|
|
class ExportRequest(BaseModel):
|
|
"""Export request schema"""
|
|
batch_id: int = Field(..., description="Batch ID to export")
|
|
format: str = Field(..., description="Export format (txt, json, excel, markdown, pdf, zip)")
|
|
rule_id: Optional[int] = Field(None, description="Optional export rule ID to apply")
|
|
css_template: Optional[str] = Field("default", description="CSS template for PDF export")
|
|
include_formats: Optional[List[str]] = Field(None, description="Formats to include in ZIP export")
|
|
options: Optional[ExportOptions] = Field(None, description="Additional export options")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"batch_id": 1,
|
|
"format": "pdf",
|
|
"rule_id": None,
|
|
"css_template": "default",
|
|
"include_formats": ["markdown", "json"],
|
|
"options": {
|
|
"confidence_threshold": 0.8,
|
|
"include_metadata": True
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
class ExportRuleCreate(BaseModel):
|
|
"""Export rule creation schema"""
|
|
rule_name: str = Field(..., max_length=100, description="Rule name")
|
|
description: Optional[str] = Field(None, description="Rule description")
|
|
config_json: Dict[str, Any] = Field(..., description="Rule configuration as JSON")
|
|
css_template: Optional[str] = Field(None, description="Custom CSS template")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"rule_name": "High Confidence Only",
|
|
"description": "Export only results with confidence > 0.8",
|
|
"config_json": {
|
|
"filters": {
|
|
"confidence_threshold": 0.8
|
|
},
|
|
"formatting": {
|
|
"add_line_numbers": True
|
|
}
|
|
},
|
|
"css_template": None
|
|
}
|
|
}
|
|
|
|
|
|
class ExportRuleUpdate(BaseModel):
|
|
"""Export rule update schema"""
|
|
rule_name: Optional[str] = Field(None, max_length=100)
|
|
description: Optional[str] = None
|
|
config_json: Optional[Dict[str, Any]] = None
|
|
css_template: Optional[str] = None
|
|
|
|
|
|
class ExportRuleResponse(BaseModel):
|
|
"""Export rule response schema"""
|
|
id: int
|
|
user_id: int
|
|
rule_name: str
|
|
description: Optional[str] = None
|
|
config_json: Dict[str, Any]
|
|
css_template: Optional[str] = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class CSSTemplateResponse(BaseModel):
|
|
"""CSS template response schema"""
|
|
name: str = Field(..., description="Template name")
|
|
description: str = Field(..., description="Template description")
|
|
filename: str = Field(..., description="Template filename")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"name": "default",
|
|
"description": "通用排版模板,適合大多數文檔",
|
|
"filename": "default.css"
|
|
}
|
|
}
|