#!/usr/bin/env python # -*- coding: utf-8 -*- """ 电子签章数据模型 """ from sqlalchemy import Column, String, Text, Integer, Boolean, Index, JSON from app.base_model import BaseModel class ElectronicSeal(BaseModel): """电子签章配置""" __tablename__ = "electronic_seal" # 基础信息 name = Column(String(100), nullable=False, comment="签章名称") seal_type = Column(String(20), nullable=False, comment="类型: company/department/personal/contract/finance") description = Column(Text, default="", comment="描述") # 签章图片 seal_image_id = Column(String(36), nullable=False, comment="签章图片文件ID") # 使用权限 owner_type = Column(String(20), default="all", comment="所有者类型: all/dept/role/user") owner_ids = Column(JSON, nullable=True, comment="所有者ID列表") # 使用范围 scope = Column(String(20), default="all", comment="使用范围: all/specific") allowed_template_ids = Column(JSON, nullable=True, comment="允许使用的模板ID列表") # 签章属性 width = Column(Integer, default=120, comment="宽度(像素)") height = Column(Integer, default=120, comment="高度(像素)") # 状态 status = Column(String(20), default="active", comment="状态: active/disabled") __table_args__ = ( Index("ix_electronic_seal_seal_type", "seal_type"), Index("ix_electronic_seal_status", "status"), ) class SealUsageLog(BaseModel): """签章使用记录""" __tablename__ = "seal_usage_log" # 关联签章 seal_id = Column(String(36), nullable=False, index=True, comment="签章ID") seal_name = Column(String(100), nullable=True, comment="签章名称") # 关联文档 document_id = Column(String(36), nullable=False, index=True, comment="文档ID") document_name = Column(String(200), nullable=True, comment="文档名称") # 使用信息 user_id = Column(String(36), nullable=False, comment="使用人ID") user_name = Column(String(100), nullable=True, comment="使用人姓名") # 位置信息 position_x = Column(Integer, default=0, comment="X坐标") position_y = Column(Integer, default=0, comment="Y坐标") page_number = Column(Integer, default=1, comment="页码") __table_args__ = ( Index("ix_seal_usage_log_seal_id", "seal_id"), Index("ix_seal_usage_log_document_id", "document_id"), )