from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime from datetime import datetime from database import Base class AuditRecord(Base): __tablename__ = "audit_records" id = Column(Integer, primary_key=True, index=True) filename = Column(String, index=True, unique=True) file_size = Column(Integer) file_date = Column(String) # Stored as formatted string for simplicity: '%d/%m/%Y %H:%M' hostname = Column(String, index=True) ip_address = Column(String, index=True) os_name = Column(String, index=True) compliance_percentage = Column(Float, default=0.0) passed_count = Column(Integer, default=0) failed_count = Column(Integer, default=0) total_checks = Column(Integer, default=0) mandatory_passed = Column(Integer, default=0) mandatory_failed = Column(Integer, default=0) mandatory_total = Column(Integer, default=0) mandatory_percentage = Column(Float, default=0.0) optional_passed = Column(Integer, default=0) optional_failed = Column(Integer, default=0) optional_total = Column(Integer, default=0) has_txt = Column(Boolean, default=False) txt_filename = Column(String, default="") created_at = Column(DateTime, default=datetime.utcnow) class UserEmailRecord(Base): """Lưu trữ email người dùng (@vnpt.vn) và thống kê số file đã upload.""" __tablename__ = "user_email_records" id = Column(Integer, primary_key=True, index=True) email = Column(String, index=True, unique=True) # email @vnpt.vn (unique per user) display_name = Column(String, default="") # phần trước @, dùng để hiển thị total_uploads = Column(Integer, default=0) # tổng số lần upload (batch) total_files = Column(Integer, default=0) # tổng số file đã xử lý first_seen = Column(DateTime, default=datetime.utcnow) last_seen = Column(DateTime, default=datetime.utcnow) class UserFileRecord(Base): """Lưu vết các file thuộc quyền sở hữu của user (đã đăng nhập).""" __tablename__ = "user_file_records" id = Column(Integer, primary_key=True, index=True) filename = Column(String, index=True) username = Column(String, index=True) unit_id = Column(String, index=True) unit_name = Column(String, index=True) created_at = Column(DateTime, default=datetime.utcnow)