first
This commit is contained in:
104
backend/app/schemas/export.py
Normal file
104
backend/app/schemas/export.py
Normal file
@@ -0,0 +1,104 @@
|
||||
"""
|
||||
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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user