from flask_prompt_master import db from datetime import datetime class User(db.Model): __tablename__ = 'user' uid = db.Column(db.Integer, primary_key=True) nickname = db.Column(db.String(100), nullable=False) mobile = db.Column(db.String(20), nullable=True) email = db.Column(db.String(100), nullable=True) sex = db.Column(db.Integer, nullable=False, default=0) avatar = db.Column(db.String(64), nullable=True) login_name = db.Column(db.String(20), nullable=False, unique=True) login_pwd = db.Column(db.String(32), nullable=False) login_salt = db.Column(db.String(32), nullable=False) status = db.Column(db.Integer, nullable=False, default=1) openid = db.Column(db.String(64), unique=True) session_key = db.Column(db.String(64)) unionid = db.Column(db.String(64), unique=True) wx_nickname = db.Column(db.String(100)) wx_avatar = db.Column(db.String(255)) updated_time = db.Column(db.DateTime, default=datetime.utcnow) created_time = db.Column(db.DateTime, default=datetime.utcnow) prompts = db.relationship('Prompt', backref='author', lazy='dynamic') feedbacks = db.relationship('Feedback', backref='author', lazy='dynamic') class WxUser(db.Model): """微信小程序用户表""" __tablename__ = 'wx_user' id = db.Column(db.Integer, primary_key=True) openid = db.Column(db.String(64), unique=True, nullable=False) session_key = db.Column(db.String(64)) unionid = db.Column(db.String(64), unique=True) nickname = db.Column(db.String(100)) avatar_url = db.Column(db.String(255)) gender = db.Column(db.Integer, default=0) # 0:未知, 1:男, 2:女 country = db.Column(db.String(50)) province = db.Column(db.String(50)) city = db.Column(db.String(50)) language = db.Column(db.String(20)) phone = db.Column(db.String(20)) is_active = db.Column(db.Boolean, default=True) last_login = db.Column(db.DateTime, default=datetime.utcnow) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # 关联到提示词和反馈 prompts = db.relationship('Prompt', backref='wx_user', lazy='dynamic', foreign_keys='Prompt.wx_user_id') feedbacks = db.relationship('Feedback', backref='wx_user', lazy='dynamic', foreign_keys='Feedback.wx_user_id') class Prompt(db.Model): __tablename__ = 'prompt' id = db.Column(db.Integer, primary_key=True) input_text = db.Column(db.Text, nullable=False) generated_text = db.Column(db.Text, nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.uid')) # 修改为可空 wx_user_id = db.Column(db.Integer, db.ForeignKey('wx_user.id')) # 添加微信用户ID feedbacks = db.relationship('Feedback', backref='prompt', lazy='dynamic') class Feedback(db.Model): __tablename__ = 'feedback' id = db.Column(db.Integer, primary_key=True) rating = db.Column(db.Integer, nullable=False) comment = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.uid')) # 修改为可空 wx_user_id = db.Column(db.Integer, db.ForeignKey('wx_user.id')) # 添加微信用户ID prompt_id = db.Column(db.Integer, db.ForeignKey('prompt.id'), nullable=False) class PromptTemplate(db.Model): __tablename__ = 'prompt_template' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.Text) category = db.Column(db.String(50)) industry = db.Column(db.String(50)) profession = db.Column(db.String(50)) sub_category = db.Column(db.String(50)) system_prompt = db.Column(db.Text, nullable=False) is_default = db.Column(db.Boolean, default=False) created_at = db.Column(db.DateTime, default=datetime.utcnow)