80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
电子签章Schema定义
|
|
"""
|
|
from datetime import datetime
|
|
from typing import Optional, List
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class ElectronicSealBase(BaseModel):
|
|
"""电子签章基础Schema"""
|
|
name: str = Field(..., min_length=1, max_length=100, description="签章名称")
|
|
seal_type: str = Field(..., description="类型: company/department/personal/contract/finance")
|
|
description: Optional[str] = Field(default="", description="描述")
|
|
|
|
seal_image_id: str = Field(..., description="签章图片文件ID")
|
|
|
|
owner_type: str = Field(default="all", description="所有者类型: all/dept/role/user")
|
|
owner_ids: Optional[List[str]] = Field(default=None, description="所有者ID列表")
|
|
|
|
scope: str = Field(default="all", description="使用范围: all/specific")
|
|
allowed_template_ids: Optional[List[str]] = Field(default=None, description="允许使用的模板ID列表")
|
|
|
|
width: int = Field(default=120, ge=20, le=500, description="宽度(像素)")
|
|
height: int = Field(default=120, ge=20, le=500, description="高度(像素)")
|
|
|
|
|
|
class ElectronicSealCreate(ElectronicSealBase):
|
|
"""创建电子签章"""
|
|
pass
|
|
|
|
|
|
class ElectronicSealUpdate(BaseModel):
|
|
"""更新电子签章"""
|
|
name: Optional[str] = Field(default=None, max_length=100, description="签章名称")
|
|
description: Optional[str] = Field(default=None, description="描述")
|
|
|
|
seal_image_id: Optional[str] = Field(default=None, description="签章图片文件ID")
|
|
|
|
owner_type: Optional[str] = Field(default=None, description="所有者类型")
|
|
owner_ids: Optional[List[str]] = Field(default=None, description="所有者ID列表")
|
|
|
|
scope: Optional[str] = Field(default=None, description="使用范围")
|
|
allowed_template_ids: Optional[List[str]] = Field(default=None, description="允许使用的模板ID列表")
|
|
|
|
width: Optional[int] = Field(default=None, description="宽度")
|
|
height: Optional[int] = Field(default=None, description="高度")
|
|
|
|
status: Optional[str] = Field(default=None, description="状态")
|
|
|
|
|
|
class ElectronicSealOut(ElectronicSealBase):
|
|
"""电子签章输出"""
|
|
id: str
|
|
status: str = "active"
|
|
seal_image_url: Optional[str] = None
|
|
sys_create_datetime: Optional[datetime] = None
|
|
sys_update_datetime: Optional[datetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class SealUsageLogOut(BaseModel):
|
|
"""签章使用记录输出"""
|
|
id: str
|
|
seal_id: str
|
|
seal_name: Optional[str] = None
|
|
document_id: str
|
|
document_name: Optional[str] = None
|
|
user_id: str
|
|
user_name: Optional[str] = None
|
|
position_x: int = 0
|
|
position_y: int = 0
|
|
page_number: int = 1
|
|
sys_create_datetime: Optional[datetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|