Files

61 lines
2.7 KiB
Python
Raw Permalink Normal View History

from sqlalchemy import Column, Integer, String, DateTime, Text, Boolean, ForeignKey, JSON
from sqlalchemy.sql import func
from app.core.database import Base
class Regulation(Base):
__tablename__ = "regulations"
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(200), nullable=False)
category = Column(String(50)) # safety, operation, quality, environment
content = Column(Text)
effective_date = Column(DateTime(timezone=True))
status = Column(String(20), default="active") # active, archived, draft
attachment_url = Column(String(500))
created_by = Column(Integer, ForeignKey("users.id"))
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
class Standard(Base):
__tablename__ = "standards"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(200), nullable=False)
code = Column(String(100)) # e.g. ISO 50001, GB/T 23331
type = Column(String(50)) # national, industry, enterprise
description = Column(Text)
compliance_status = Column(String(20), default="pending") # compliant, non_compliant, pending, in_progress
review_date = Column(DateTime(timezone=True))
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
class ProcessDoc(Base):
__tablename__ = "process_docs"
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(200), nullable=False)
category = Column(String(50)) # operation, maintenance, emergency, training
content = Column(Text)
version = Column(String(20), default="1.0")
approved_by = Column(String(100))
effective_date = Column(DateTime(timezone=True))
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
class EmergencyPlan(Base):
__tablename__ = "emergency_plans"
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(200), nullable=False)
scenario = Column(String(100)) # fire, power_outage, equipment_failure, chemical_leak
steps = Column(JSON) # [{step_number, action, responsible_person, contact}]
responsible_person = Column(String(100))
review_date = Column(DateTime(timezone=True))
is_active = Column(Boolean, default=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())