feat: initial commit and ignore qwen files

This commit is contained in:
dxc
2026-04-30 10:06:32 +08:00
commit def4f7d71f
55 changed files with 5252 additions and 0 deletions

View File

@ -0,0 +1,116 @@
"""生产系统 ORM 模型(新建表)"""
from sqlalchemy import Column, Integer, String, Date, DateTime, ForeignKey, Enum as SQLEnum, JSON
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
import enum
from app.database import Base
class ProjectStatus(str, enum.Enum):
"""项目状态枚举"""
DRAFT = "draft"
ACTIVE = "active"
COMPLETED = "completed"
CANCELLED = "cancelled"
class WorkOrderStatus(str, enum.Enum):
"""工单状态枚举"""
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
CANCELLED = "cancelled"
class ApprovalStatus(str, enum.Enum):
"""缺料审批状态枚举"""
PENDING = "PENDING"
APPROVED = "APPROVED"
REJECTED = "REJECTED"
class PmsProject(Base):
"""项目表"""
__tablename__ = "pms_project"
id = Column(Integer, primary_key=True, index=True)
project_no = Column(String(50), unique=True, nullable=False, index=True)
name = Column(String(255), nullable=False)
start_date = Column(Date, nullable=True)
end_date = Column(Date, nullable=True)
status = Column(
SQLEnum(ProjectStatus),
default=ProjectStatus.DRAFT,
nullable=False
)
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
work_orders = relationship("PmsWorkOrder", back_populates="project")
class PmsWorkOrder(Base):
"""工单表"""
__tablename__ = "pms_work_order"
id = Column(Integer, primary_key=True, index=True)
work_order_no = Column(String(50), unique=True, nullable=False, index=True)
project_id = Column(Integer, ForeignKey("pms_project.id"), nullable=False)
target_base_id = Column(Integer, ForeignKey("material_base.id"), nullable=False)
target_quantity = Column(Integer, nullable=False, default=0)
assignee_name = Column(String(100), nullable=True)
status = Column(
SQLEnum(WorkOrderStatus),
default=WorkOrderStatus.PENDING,
nullable=False
)
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
project = relationship("PmsProject", back_populates="work_orders")
material = relationship("MaterialBase", foreign_keys=[target_base_id])
material_requisitions = relationship("PmsMaterialRequisition", back_populates="work_order")
class PmsMaterialRequisition(Base):
"""领料映射表"""
__tablename__ = "pms_material_requisition"
id = Column(Integer, primary_key=True, index=True)
work_order_id = Column(Integer, ForeignKey("pms_work_order.id"), nullable=False)
inventory_outbound_no = Column(String(100), nullable=False)
created_at = Column(DateTime, server_default=func.now())
work_order = relationship("PmsWorkOrder", back_populates="material_requisitions")
class PmsMaterialApproval(Base):
"""缺料审批表"""
__tablename__ = "pms_material_approval"
id = Column(Integer, primary_key=True, index=True)
work_order_id = Column(Integer, ForeignKey("pms_work_order.id"), nullable=False)
missing_material_id = Column(Integer, ForeignKey("material_base.id"), nullable=False)
required_qty = Column(Integer, nullable=False)
reason = Column(String(500), nullable=True)
status = Column(
SQLEnum(ApprovalStatus),
default=ApprovalStatus.PENDING,
nullable=False
)
created_at = Column(DateTime, server_default=func.now())
work_order = relationship("PmsWorkOrder")
material = relationship("MaterialBase", foreign_keys=[missing_material_id])
class PmsUserPreference(Base):
"""用户偏好表"""
__tablename__ = "pms_user_preference"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, nullable=False, index=True) # 对应 SysUser.id
default_bom_target_id = Column(Integer, nullable=True) # 默认关注的成品ID
favorite_target_ids = Column(JSON, nullable=True) # 常看成品ID列表PostgreSQL JSON 数组
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())