1.0.0初始化源代码

This commit is contained in:
yuqianqian10204095yu
2026-03-23 15:40:36 +08:00
parent f13ecb3bba
commit cebc0a288f
53 changed files with 5300 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
"""
虚拟用户模型
"""
from sqlalchemy import Column, Integer, String, DateTime, Boolean, Enum, Text, JSON, Float
from sqlalchemy.sql import func
from enum import Enum as PyEnum
import enum
from .base import Base
class ActivityLevel(str, enum.Enum):
"""活跃度枚举"""
LOW = "low" # 低:每日 1-2 次
MEDIUM = "medium" # 中:每日 2-5 次
HIGH = "high" # 高:每日 5-10 次
class UserStatus(str, enum.Enum):
"""用户状态枚举"""
ACTIVE = "active" # 启用
DISABLED = "disabled" # 禁用
class VirtualUser(Base):
"""虚拟用户表"""
__tablename__ = "virtual_users"
id = Column(Integer, primary_key=True, autoincrement=True, comment="用户 ID")
# 基本信息
username = Column(String(100), unique=True, nullable=False, index=True, comment="用户名(账号)")
password = Column(String(200), nullable=False, comment="密码(加密存储)")
nickname = Column(String(100), nullable=False, comment="昵称")
avatar_url = Column(String(500), comment="头像 URL")
# 人格特征
writing_style = Column(String(50), comment="写作风格")
activity_level = Column(Enum(ActivityLevel), default=ActivityLevel.MEDIUM, comment="活跃度")
persona_description = Column(Text, comment="人格描述AI 生成)")
# 状态控制
status = Column(Enum(UserStatus), default=UserStatus.ACTIVE, comment="状态")
is_logged_in = Column(Boolean, default=False, comment="是否已登录")
session_token = Column(String(500), comment="会话 Token登录后")
token_expire_time = Column(DateTime, comment="Token 过期时间")
# 互动统计
total_interactions = Column(Integer, default=0, comment="总互动次数")
today_comments = Column(Integer, default=0, comment="今日评论数")
today_replies = Column(Integer, default=0, comment="今日回复数")
last_interaction_time = Column(DateTime, comment="最后互动时间")
# 扩展信息
extra_info = Column(JSON, default=dict, comment="扩展信息")
# 时间戳
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间")
def __repr__(self):
return f"<VirtualUser(id={self.id}, nickname='{self.nickname}', status='{self.status}')>"
class VirtualUserPersona(Base):
"""虚拟用户人格模板表"""
__tablename__ = "virtual_user_personas"
id = Column(Integer, primary_key=True, autoincrement=True, comment="ID")
# 人格特征
name = Column(String(100), unique=True, nullable=False, comment="人格名称")
description = Column(Text, comment="人格描述")
# 风格配置
writing_styles = Column(JSON, comment="写作风格列表")
personality_traits = Column(JSON, comment="性格特征列表")
speech_patterns = Column(JSON, comment="说话模式列表")
# AI 提示词
system_prompt = Column(Text, comment="系统提示词(用于 AI 生成)")
# 状态
is_active = Column(Boolean, default=True, comment="是否启用")
# 时间戳
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间")
def __repr__(self):
return f"<VirtualUserPersona(id={self.id}, name='{self.name}')>"