- business_roles/param_definitions/param_change_batches/param_values 四表 + 种子(3 内置岗位/16 参数定义/19 版本条目/初始批次 P20260101-00) - 双轨迁移:Alembic bfbda9c3191d + db/migration/V3 导出 + init-dev.sql 同步(schema_sync 校验通过) - 参数值以 Fraction 可解析字符串存储(4/360 禁 0.011111);企业户 2‰→3‰ 双种子支持按到账日回溯 Co-Authored-By: Claude Code <noreply@anthropic.com>
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自定义",
|
||
)
|