Files
2026-01-27 17:30:17 +08:00

33 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Float
from sqlalchemy.sql import func
from app.database.database import Base
class Project(Base):
"""项目模型"""
__tablename__ = "projects"
id = Column(Integer, primary_key=True, index=True)
project_code = Column(String(50), unique=True, index=True) # 项目编号
name = Column(String(100), nullable=False) # 项目名称
project_type = Column(String(50)) # 工程类别
description = Column(Text) # 项目描述
created_by = Column(Integer, ForeignKey("users.id"), nullable=False) # 创建人
department = Column(String(50), nullable=False) # 所属部门
contract_amount = Column(Float) # 合同金额(万元)
project_manager = Column(String(100)) # 项目负责人
client_company = Column(String(100)) # 建设单位
client_contact = Column(String(100)) # 建设单位联系人
contract_date = Column(DateTime(timezone=True)) # 合同签订日期
budget = Column(Integer) # 预算
start_date = Column(DateTime(timezone=True)) # 开始日期
planned_end_date = Column(DateTime(timezone=True)) # 计划结束日期
actual_end_date = Column(DateTime(timezone=True)) # 实际结束日期
progress = Column(Float, default=0.0) # 累计进度(%
actual_received_amount = Column(Float, default=0.0) # 实际收款金额(万元)
payment_completion_rate = Column(Float, default=0.0) # 回款完成率(%
payment_terms = Column(Text) # 付款方式
status = Column(String(20), default="pending") # 状态
created_at = Column(DateTime(timezone=True), server_default=func.now()) # 创建时间
updated_at = Column(DateTime(timezone=True), onupdate=func.now()) # 更新时间