# -*- coding: utf-8 -*- from datetime import datetime from sqlalchemy import Column, Integer, String, DateTime from werkzeug.security import generate_password_hash, check_password_hash from backend.database import Base class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String(80), unique=True, nullable=False, index=True) password_hash = Column(String(255), nullable=False) role = Column(String(20), default="student") # student | teacher # 个人信息字段(可选),避免影响现有登录 / 权限逻辑 full_name = Column(String(50), nullable=True) # 真实姓名 student_id = Column(String(50), nullable=True) # 学号 class_name = Column(String(100), nullable=True) # 班级,如“初二(3)班” grade = Column(String(20), nullable=True) # 年级,如“初一”“初二” email = Column(String(120), nullable=True) phone = Column(String(20), nullable=True) created_at = Column(DateTime, default=datetime.utcnow) def set_password(self, password: str) -> None: self.password_hash = generate_password_hash(password) def check_password(self, password: str) -> bool: return check_password_hash(self.password_hash, password)