50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
"""人员级别模型
|
|
|
|
管理不同岗位/级别的时薪标准
|
|
"""
|
|
|
|
from typing import List, TYPE_CHECKING
|
|
|
|
from sqlalchemy import String, Boolean, DECIMAL
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
|
|
from app.models.base import BaseModel
|
|
|
|
if TYPE_CHECKING:
|
|
from app.models.project_labor_cost import ProjectLaborCost
|
|
|
|
|
|
class StaffLevel(BaseModel):
|
|
"""人员级别表"""
|
|
|
|
__tablename__ = "staff_levels"
|
|
|
|
level_code: Mapped[str] = mapped_column(
|
|
String(20),
|
|
unique=True,
|
|
nullable=False,
|
|
comment="级别编码"
|
|
)
|
|
level_name: Mapped[str] = mapped_column(
|
|
String(50),
|
|
nullable=False,
|
|
comment="级别名称"
|
|
)
|
|
hourly_rate: Mapped[float] = mapped_column(
|
|
DECIMAL(10, 2),
|
|
nullable=False,
|
|
comment="时薪(元/小时)"
|
|
)
|
|
is_active: Mapped[bool] = mapped_column(
|
|
Boolean,
|
|
nullable=False,
|
|
default=True,
|
|
comment="是否启用"
|
|
)
|
|
|
|
# 关系
|
|
project_labor_costs: Mapped[List["ProjectLaborCost"]] = relationship(
|
|
"ProjectLaborCost",
|
|
back_populates="staff_level"
|
|
)
|