Files
ai-agent-admin/backend-fastapi/online_dev/report_manager/model.py
T

50 lines
2.4 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""报表管理数据模型"""
from sqlalchemy import Column, String, Text, Integer, Boolean, JSON, SmallInteger
from app.base_model import BaseModel
class ReportTemplate(BaseModel):
"""报表模板主表"""
__tablename__ = "report_template"
application_id = Column(String(21), nullable=True, index=True, comment="所属应用ID")
name = Column(String(100), nullable=False, comment="报表名称")
code = Column(String(100), unique=True, nullable=False, index=True, comment="报表编码")
category = Column(String(50), default="", comment="分类")
description = Column(Text, default="", comment="描述")
status = Column(String(20), default="draft", index=True, comment="状态: draft/published")
allow_export = Column(Boolean, default=True, comment="允许导出")
allow_print = Column(Boolean, default=True, comment="允许打印")
allow_watermark = Column(Boolean, default=False, comment="允许水印")
watermark_config = Column(JSON, default=dict, comment="水印配置")
class ReportVersion(BaseModel):
"""报表版本表"""
__tablename__ = "report_version"
template_id = Column(String(21), nullable=False, index=True, comment="模板ID")
version = Column(Integer, default=1, comment="版本号")
state = Column(SmallInteger, default=0, index=True, comment="0设计中 1启用 2归档")
snapshot = Column(JSON, default=dict, comment="Univer工作簿JSON")
cells = Column(JSON, default=dict, comment="单元格绑定元数据")
query_list = Column(JSON, default=list, comment="查询条件")
sort_list = Column(JSON, default=list, comment="排序配置")
column_list = Column(JSON, default=list, comment="分栏配置")
fence_list = Column(JSON, default=list, comment="围栏配置")
convert_config = Column(JSON, default=dict, comment="数据转换规则")
class ReportDataset(BaseModel):
"""报表版本与数据源关联"""
__tablename__ = "report_dataset"
version_id = Column(String(21), nullable=False, index=True, comment="版本ID")
data_source_id = Column(String(21), nullable=False, index=True, comment="数据源ID")
alias = Column(String(100), nullable=False, comment="设计器数据集别名")
field_mapping = Column(JSON, default=dict, comment="字段映射")
convert_config = Column(JSON, default=dict, comment="转换配置")