- 新增 system_settings(公司信息单行)/ business_secondary_allocations(二次 分配明细,比例不强制合计满额,分摊计算待澄清另批)/ approval_orders+ approval_steps(三级审批状态机,开关关闭自动通过留痕) - roles 种子新增营销后勤/财务/领导三职能角色;内置保护改 BUILTIN_ROLE_CODES 白名单(roles 表无 is_builtin 列,不加列) - PARAM_REGISTRY 首例 BOOL:两个审批开关(16→18 项,种子双写) - 双轨同步:V6 导出 SQL + init-dev.sql(表/索引/种子/版本号 79bcc5aa98d4) - 测试同步:EXPECTED_TABLES 四新表、角色种子断言 5 角色、目录断言 18 项 八分组、BOOL 校验边界;迁移 downgrade 修 1553(只保留 drop_table)并补 行级种子反向清理 Co-Authored-By: Claude Code <noreply@anthropic.com>
32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
"""系统设置模型:公司信息单例行。
|
||
|
||
与 M1 计提参数体系刻意分离:公司名称/logo 是「展示事实」,没有按生效日期
|
||
时点化演算的语义(参数体系按 effective_date 取值快照),且参数值列
|
||
value_text 为 String(64) 装不下;故独立单行表。logo 只存相对路径——文件在
|
||
`backend/uploads/logo/`,独立于数据库备份体积且可单独替换(见
|
||
system_setting_service)。整个系统恒为单行(迁移种子 id=1 保底,upsert 维护)。
|
||
"""
|
||
|
||
from sqlalchemy import String
|
||
from sqlalchemy.orm import Mapped, mapped_column
|
||
|
||
from app.models.base import BIGINT_UNSIGNED, Base, TimestampMixin, mysql_table_args
|
||
|
||
|
||
class SystemSetting(Base, TimestampMixin):
|
||
"""系统设置表:本期仅公司信息(公司名称 / logo 路径),全系统单行 id=1。"""
|
||
|
||
__tablename__ = "system_settings"
|
||
__table_args__ = mysql_table_args("系统设置表(公司信息,全系统单行)")
|
||
|
||
id: Mapped[int] = mapped_column(
|
||
BIGINT_UNSIGNED, primary_key=True, autoincrement=True, comment="主键ID"
|
||
)
|
||
company_name: Mapped[str] = mapped_column(
|
||
String(64), nullable=False, comment="公司名称(登录页与导出页眉展示)"
|
||
)
|
||
logo_path: Mapped[str | None] = mapped_column(
|
||
String(255),
|
||
comment="logo 相对路径(文件存 uploads/logo/,null=未上传使用默认)",
|
||
)
|