AI智能助手草稿与发布版本管理设计方案
2026/5/14 15:11:39 网站建设 项目流程

1. 核心设计思想

我们采用“草稿-发布”分离的模式来管理智能助手的不同版本。其核心思想如下:

  1. 分离存储:系统中同时存在两种状态的智能助手,通过两个独立的数据库表进行管理:

    • 草稿 (assistant表):这是主要的工作表,包含了所有版本的智能助手,无论是草稿状态还是已发布状态。通过is_published字段来区分。草稿是编辑中的版本,对它的任何修改都不会影响线上正在运行的版本。
    • 发布 (assistant_published表):这张表可以看作是线上服务版本的“指针”或“快照”集合。当一个草稿被发布时,系统会将该草稿版本的数据复制一份到这张表中,作为线上服务的权威数据源。
  2. 版本关联:通过parent_idassistant_id字段建立草稿与发布版本之间的关联。

    • assistant表中的parent_id指向assistant_published表的id,用于标识一个草稿是从哪个发布版本创建的。
    • assistant_published表中的assistant_id指向assistant表的id,用于标识当前线上版本对应的是哪一条具体的记录。
  3. 原子化操作:发布、下线、创建草稿等核心操作都封装在独立的业务逻辑层(Service)中,确保数据在多个表之间操作时的一致性和完整性。

2. 数据模型 (models/assistant.py)

版本管理的核心是数据模型的设计。我们主要依赖以下两个模型:

Assistant模型

该模型代表一个智能助手的具体实例,可以是草稿,也可以是已发布的版本。

# models/assistant.pyclassAssistant(db.Model):# ...id=db.Column(db.Integer,primary_key=True)parent_id=db.Column(db.Integer,db.ForeignKey('assistant_published.id'),nullable=True,comment='父版本id')version=db.Column(db.Integer,nullable=False,default=1,comment='版本号')is_published=db.Column(db.Boolean,nullable=False,default=False,comment='是否已发布')status=db.Column(db.String(255),nullable=False,default=AssistantStatus.DRAFT.value,comment='状态')# ... (其他业务字段如 name, description, model_config 等)published_assistant=db.relationship('AssistantPublished',backref='assistants',foreign_keys=[parent_id])

关键字段说明

  • parent_id: 外键,指向assistant_published.id。如果这是一个草稿,parent_id指向它所基于的那个发布版本。
  • is_published: 状态标记。True表示这是一个已发布的版本,False表示这是一个草稿。
  • status: 状态枚举,如DRAFT(草稿)、PUBLISHED(已发布)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询