Python/agent/application/models/tables.py

84 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""
"""
from datetime import datetime, timedelta
from pydantic_ai._uuid import uuid7
from sqlmodel import Field, JSON, SQLModel
from random import choices
# 验证码表
class Captchas(SQLModel, table=True):
email: str = Field(..., primary_key=True, description="邮箱")
captcha: str = Field(
default_factory=lambda: "".join(choices("0123456789", k=6)),
description="验证码",
)
is_valid: bool = Field(
default=True, index=True, description="是否有效True 表示有效False 表示无效"
)
is_unused: bool = Field(
default=True,
index=True,
description="是否未使用True 表示未使用False 表示已使用。",
)
expired_at: datetime = Field(
default_factory=lambda: datetime.now() + timedelta(minutes=30),
primary_key=True,
description="过期时间",
)
# 用户表
class Users(SQLModel, table=True):
id: str = Field(
default_factory=lambda: str(uuid7()),
primary_key=True,
description="用户唯一标识",
)
email: str = Field(..., index=True, description="邮箱")
# 会话表
class Conversations(SQLModel, table=True):
id: str = Field(
default_factory=lambda: str(uuid7()),
primary_key=True,
description="会话唯一标识",
)
user_id: str = Field(..., index=True, description="用户唯一标识")
description: str = Field(..., description="会话描述")
is_deleted: bool = Field(default=False, index=True, description="是否删除")
created_at: datetime = Field(default_factory=datetime.now, description="创建时间")
# 思考节点表(仅定义)
class ThoughtNodes(SQLModel):
kind: str = Field(description="思考节点类型")
content: str = Field(default="", description="思考节点内容")
# 对话表
class Dialogs(SQLModel, table=True):
id: str = Field(
default_factory=lambda: str(uuid7()),
primary_key=True,
description="对话唯一标识",
)
conversation_id: str = Field(..., index=True, description="会话唯一标识")
question: str = Field(..., description="问题")
thought_nodes: dict[int, ThoughtNodes] = Field(
default_factory=dict, sa_type=JSON, description="思考节点字典"
)
answer: str = Field(default="", description="回答")
# 运行结果表
class RunResults(SQLModel, table=True):
conversation_id: str = Field(primary_key=True, description="会话唯一标识")
dialog_id: str = Field(primary_key=True, description="对话唯一标识")
new_messages: str = Field(description="新增消息")