数据库与基础设施
VTJ.PRO平台利用基于MySQL并通过TypeORM管理的健壮数据层。该基础设施旨在处理复杂的低代码DSL结构、AI代理交互以及多租户配置。本页详细介绍了数据库架构、迁移生命周期以及系统升级的具体流程。
数据层架构
系统采用集中式数据库方法,所有业务逻辑、用户数据和低代码资产都存储在一个MySQL实例中。连接和实体管理由使用TypeORM模块的NestJS处理。
核心实体关系
数据库围绕以下几个关键领域构建:
- RBAC与用户管理:用户、角色和权限。
- 低代码资产:应用、页面、物料和DSL历史记录。
- AI基础设施:LLM模型、代理、技能和聊天历史记录。
- 系统配置:字典、设置和OSS配置。
数据库与实体映射
下图说明了高级系统组件如何映射到特定的数据库实体及其实现文件。
自然语言到代码实体空间:数据层
flowchart
subgraph NL ["Natural Language Space"]
direction LR
A["AI Skills"]
B["Chat History"]
C["LLM Configuration"]
D["Low-Code App"]
end
subgraph TypeORM ["Code Entity Space (TypeORM)"]
direction LR
A1["SkillEntity"]
B1["ChatEntity"]
C1["LLMModelEntity"]
D1["LowcodeAppEntity"]
end
subgraph MySQL ["Physical Table (MySQL)"]
direction LR
A2[("skills")]
B2[("chats")]
C2[("llm_models")]
D2[("lowcode_apps")]
end
A --> A1
B --> B1
C --> C1
D --> D1
A1 --> A2
B1 --> B2
C1 --> C2
D1 --> D2
迁移系统
VTJ.PRO使用结构化的迁移系统来确保开发环境和生产环境之间的模式一致性。这包括程序化迁移(通过NestJS服务)和用于主要版本升级的手动SQL脚本。
手动SQL迁移
对于重大版本升级,例如过渡到v2.2.0,会提供特定的SQL脚本来处理需要事务完整性的复杂架构更改。
示例:v2.2.0 架构更新流程
up_2.2.0.sql脚本在独立事务中执行两个主要操作,以确保原子性:
- 创建
skills表:引入AI技能库,支持多平台(web、h5、uniapp)和依赖跟踪。 - 字段修改:将
chats表中的user_content列从TEXT类型升级为LONGTEXT类型,以容纳更大的AI提示。
基础设施迁移逻辑
sequenceDiagram
actor System Administrator
participant MySQL Database
participant Seed Task (npm run seed)
Note over System Administrator,MySQL Database: START TRANSACTION
System Administrator->>MySQL Database: Execute up_2.2.0.sql
MySQL Database-->>MySQL Database: CREATE TABLE skills
MySQL Database-->>MySQL Database: ALTER TABLE chats MODIFY user_content LONGTEXT
Note over System Administrator,MySQL Database: COMMIT
System Administrator->>Seed Task (npm run seed): Trigger Database Seeding
Seed Task (npm run seed)->>MySQL Database: Insert Initial Data (seeds/data)
System Administrator->>System Administrator: Update System Prompts (coder_v3.md)
数据库种子数据
种子机制用于向数据库中填充必要的初始数据,例如默认角色、管理用户和系统字典。
- 命令:
npm run seed - 目的:确保在架构迁移后,系统拥有运行所需的元数据(例如,LLM提供者定义或默认AI技能)。
升级流程 (v2.2.0)
升级生产环境需要按照特定顺序执行操作,以维护数据完整性和系统可用性。
升级清单
| 步骤 | 操作 | 描述 |
|---|---|---|
| 1 | 执行SQL | 在生产MySQL实例上运行 up_2.2.0.sql。 |
| 2 | 种子数据 | 运行 npm run seed 来填充新表,如 skills。 |
| 3 | 更新提示词 | 在管理面板中使用 _docs/prompts/coder_v3.md 手动更新AI系统提示词。 |
skills 表定义
skills 表是v2.2.0版本中的一个关键新增项,它使AI代理能够在代码生成过程中使用特定的工具和组件。
| 列名 | 类型 | 描述 |
|---|---|---|
id | VARCHAR(36) | 主键 (UUID) |
code | VARCHAR(255) | 唯一的技能标识符 |
content | LONGTEXT | 技能的实际逻辑或提示词 |
platform | VARCHAR(255) | 支持的运行时环境(web, h5, uniapp) |
category | ENUM | 分类:util、component 或 system |
参考资料
- 官网文档:vtj.pro/
- 在线平台:app.vtj.pro/
- 开源仓库:gitee.com/newgateway/…