Files
012-kaopeilian/backend/app/models/position_member.py
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

27 lines
1.1 KiB
Python

"""
岗位成员关联模型
"""
from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean, UniqueConstraint, func
from sqlalchemy.orm import relationship
from app.models.base import BaseModel, SoftDeleteMixin
class PositionMember(BaseModel, SoftDeleteMixin):
"""岗位成员关联表"""
__tablename__ = "position_members"
# 添加唯一约束:同一岗位下同一用户只能有一条有效记录
__table_args__ = (
UniqueConstraint('position_id', 'user_id', 'is_deleted', name='uix_position_user'),
)
position_id = Column(Integer, ForeignKey("positions.id"), nullable=False, comment="岗位ID")
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, comment="用户ID")
role = Column(String(50), comment="成员角色(预留字段)")
joined_at = Column(DateTime, server_default=func.now(), comment="加入时间(北京时间)")
# 关系
position = relationship("Position", back_populates="members")
user = relationship("User", back_populates="position_memberships")