53 lines
2.3 KiB
Python
53 lines
2.3 KiB
Python
|
|
"""计提公式模板定义模型。
|
|||
|
|
|
|||
|
|
把一期代码内注册表升级为数据库配置:模板名称、说明、参数绑定可在页面维护,
|
|||
|
|
公式执行骨架仍是受控枚举(formula_type),不允许自由表达式,避免注入与算错。
|
|||
|
|
岗位角色 `business_roles.calc_template` 绑定模板编码,编码创建后不可修改。
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from sqlalchemy import JSON, Integer, String
|
|||
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|||
|
|
|
|||
|
|
from app.models.base import BIGINT_UNSIGNED, TINYINT_TYPE, Base, TimestampMixin, mysql_table_args
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CalcTemplateDefinition(Base, TimestampMixin):
|
|||
|
|
"""计提公式模板定义表。内置模板随迁移初始化,页面可新增自定义模板。"""
|
|||
|
|
|
|||
|
|
__tablename__ = "calc_template_definitions"
|
|||
|
|
__table_args__ = mysql_table_args("计提公式模板定义表(页面可维护,骨架受控)")
|
|||
|
|
|
|||
|
|
id: Mapped[int] = mapped_column(
|
|||
|
|
BIGINT_UNSIGNED, primary_key=True, autoincrement=True, comment="主键ID"
|
|||
|
|
)
|
|||
|
|
template_code: Mapped[str] = mapped_column(
|
|||
|
|
String(32),
|
|||
|
|
nullable=False,
|
|||
|
|
unique=True,
|
|||
|
|
comment="模板编码,创建后不可修改;岗位表 business_roles.calc_template 引用",
|
|||
|
|
)
|
|||
|
|
template_name: Mapped[str] = mapped_column(String(64), nullable=False, comment="模板名称")
|
|||
|
|
formula_type: Mapped[str] = mapped_column(
|
|||
|
|
String(32),
|
|||
|
|
nullable=False,
|
|||
|
|
comment="公式骨架类型:linear_decay/fixed_profit/fixed_sales/manager_share/prepay_fixed,创建后不可修改",
|
|||
|
|
)
|
|||
|
|
params_json: Mapped[dict] = mapped_column(
|
|||
|
|
JSON,
|
|||
|
|
nullable=False,
|
|||
|
|
comment="骨架参数角色到参数编码的 JSON 映射,如 {start:..., slope:...}",
|
|||
|
|
)
|
|||
|
|
description: Mapped[str | None] = mapped_column(String(255), comment="模板说明")
|
|||
|
|
sort_order: Mapped[int] = mapped_column(
|
|||
|
|
Integer, nullable=False, server_default="0", comment="显示排序"
|
|||
|
|
)
|
|||
|
|
status: Mapped[int] = mapped_column(
|
|||
|
|
TINYINT_TYPE, nullable=False, server_default="1", comment="状态:1启用 0停用"
|
|||
|
|
)
|
|||
|
|
is_system: Mapped[int] = mapped_column(
|
|||
|
|
TINYINT_TYPE,
|
|||
|
|
nullable=False,
|
|||
|
|
server_default="0",
|
|||
|
|
comment="是否系统模板:1内置(禁删、骨架与编码锁定) 0自定义",
|
|||
|
|
)
|