47 lines
2.1 KiB
Python
47 lines
2.1 KiB
Python
|
|
"""业务岗位角色模型。
|
|||
|
|
|
|||
|
|
与系统登录角色(`roles`,权限维度)严格区分:本表是**业务岗位**维度,
|
|||
|
|
决定人员适用的计提公式模板与参数。需求 #28 要求岗位角色可增删、
|
|||
|
|
新增岗位时在系统设置中绑定公式与参数(无需改代码),故模板编码
|
|||
|
|
存于本表、公式实现留在代码内注册表(一期不引入规则引擎)。
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from sqlalchemy import Integer, String
|
|||
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|||
|
|
|
|||
|
|
from app.models.base import BIGINT_UNSIGNED, TINYINT_TYPE, Base, TimestampMixin, mysql_table_args
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BusinessRole(Base, TimestampMixin):
|
|||
|
|
"""业务岗位角色表。内置三个岗位(营销员/营销经理/信息员)随迁移初始化。"""
|
|||
|
|
|
|||
|
|
__tablename__ = "business_roles"
|
|||
|
|
__table_args__ = mysql_table_args("业务岗位角色表(与登录角色roles区分,决定计提公式与参数)")
|
|||
|
|
|
|||
|
|
id: Mapped[int] = mapped_column(
|
|||
|
|
BIGINT_UNSIGNED, primary_key=True, autoincrement=True, comment="主键ID"
|
|||
|
|
)
|
|||
|
|
role_code: Mapped[str] = mapped_column(
|
|||
|
|
String(32),
|
|||
|
|
nullable=False,
|
|||
|
|
unique=True,
|
|||
|
|
comment="岗位编码:salesperson营销员 sales_manager营销经理 info_officer信息员,创建后不可修改",
|
|||
|
|
)
|
|||
|
|
role_name: Mapped[str] = mapped_column(String(64), nullable=False, comment="岗位名称")
|
|||
|
|
calc_template: Mapped[str] = mapped_column(
|
|||
|
|
String(32), nullable=False, comment="计提公式模板编码(以代码内模板注册表为准)"
|
|||
|
|
)
|
|||
|
|
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_builtin: Mapped[int] = mapped_column(
|
|||
|
|
TINYINT_TYPE,
|
|||
|
|
nullable=False,
|
|||
|
|
server_default="0",
|
|||
|
|
comment="是否内置岗位:1内置(禁删禁停) 0自定义",
|
|||
|
|
)
|