Files
aitsc/flask_prompt_master/models.py
2025-02-23 09:07:52 +08:00

89 lines
4.0 KiB
Python

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)