Skip to content

架构设计

SmartTable 采用前后端分离架构,前端基于 Vue 3 构建用户界面,后端基于 Flask 提供 API 服务,数据库支持 SQLite 和 PostgreSQL,可根据场景灵活选择。

技术栈

前端技术栈

类别技术版本说明
前端框架Vue 3^3.5.30Composition API
语言TypeScript~5.9.3类型安全
状态管理Pinia^2.3.1轻量级状态管理
路由Vue Router^4.6.4SPA 路由
UI 组件库Element Plus^2.13.6企业级 UI 组件
表格组件vxe-table / vtable^4.18.7 / ^1.26.3vxe-table(v1.4 及更早);vtable(v1.5 及更新)
图表库echarts + vue-echarts^5.6.0 / ^6.7.3数据可视化
日期处理dayjs^1.11.20轻量级日期库
拖拽排序sortablejs^1.15.7拖拽功能
HTTP 客户端axios^1.14.0HTTP 请求
本地数据库Dexie^3.2.7IndexedDB 封装
WebSocketsocket.io-client^4.8.3实时通信
工具库lodash-es, @vueuse/core-工具函数集
富文本tinyeditor^4.0.0富文本编辑器(1.4+)
电子表格xlsx^0.18.5Excel 解析生成
构建工具Vite^8.0.1极速构建工具
测试框架Vitest^3.2.4单元测试

后端技术栈

类别技术版本说明
框架Flask3.0.0Python Web 框架
数据库SQLite / PostgreSQL3.x / 16+关系型数据库
ORMSQLAlchemy2.0.23Python ORM
数据库迁移Alembic(Flask-Migrate)4.0.5数据库版本管理
认证Flask-JWT-Extended4.6.0JWT Token 认证
密码加密Flask-Bcrypt, bcrypt1.0.1 / 4.1.2密码哈希
表单验证Flask-WTF1.2.1CSRF 保护
CORSFlask-CORS4.0.0跨域支持
缓存Flask-Caching(+ Redis 可选)2.1.0缓存加速
WebSocketFlask-SocketIO5.3.6实时通信
异步支持eventlet0.36.1异步处理
数据序列化marshmallow3.20.1数据验证序列化
导入导出pandas, openpyxl, xlrd2.1.4 / 3.1.2 / 2.0.1数据处理
图片处理Pillow10.4.0图片缩略图
对象存储MinIO(可选)-文件对象存储
加密cryptography42.0.5加密算法
API 文档Flasgger0.9.7b2Swagger UI
WSGI 服务器Eventlet WSGI Server0.36.1生产服务器
部署Docker, Nginx-容器化部署

数据存储方案

模式技术说明
前端缓存Dexie(IndexedDB)数据存储在浏览器本地作为缓存
后端(默认)SQLite + Flask轻量级,无需额外安装数据库
后端(生产)PostgreSQL + Flask支持多用户并发和生产环境

系统架构图

┌─────────────┐
│   Browser   │
└──────┬──────┘

       ├─ HTTP/WebSocket

┌──────▼──────┐      ┌─────────────┐
│    Nginx    │─────▶│  Frontend   │
└──────┬──────┘      └─────────────┘

       │ HTTP API

┌──────▼──────┐      ┌─────────────┐
│   Backend   │─────▶│  Database   │
│   (Flask)   │      │(SQLite/PG)  │
└──────┬──────┘      └─────────────┘


┌──────▼──────┐
│File Storage │
│(Local/MinIO)│
└─────────────┘

数据模型

核心实体关系

User(用户)
  ├── owns many Base(多维表格)
  ├── is member of many Base(通过 BaseMember)
  └── has many OperationLog(操作日志)

Base(多维表格)
  ├── has many Table(数据表)
  ├── has many Dashboard(仪表盘)
  ├── has many BaseShare(分享链接)
  ├── has many BaseMember(成员)
  ├── has many CollaborationSession(协作会话)
  └── has many Workflow(工作流)

Table(数据表)
  ├── has many Field(字段)
  ├── has many Record(记录)
  ├── has many View(视图)
  ├── has many LinkRelation(关联关系)
  ├── has many Workflow(关联工作流)
  └── belongs to Base

Field(字段)
  ├── has options(字段配置)
  └── belongs to Table

Record(记录)
  ├── has many RecordHistory(变更历史)
  ├── has values for each Field
  └── belongs to Table

View(视图)
  ├── has filter/sort/group configs
  └── belongs to Table

Workflow(工作流)
  ├── has many WorkflowVersion(版本快照)
  ├── has many WebhookConfig(Webhook 配置)
  └── belongs to Base/Table

WebhookConfig(Webhook 配置)
  ├── has many WebhookDelivery(投递记录)
  └── belongs to Workflow

主要模型说明

User(用户)

  • 存储用户认证信息(用户名、邮箱、密码哈希)。
  • 记录邮箱验证状态。
  • 区分普通用户和管理员角色。
  • 支持头像和个人资料。

Base(多维表格)

  • SmartTable 的数据管理基础单元。
  • 支持收藏、自定义图标和颜色。
  • 包含成员管理和权限控制。
  • 支持分享设置(公开 / 私有 / 密码保护)。

Table(数据表)

  • 包含字段定义和记录数据。
  • 支持拖拽排序和收藏。
  • 可配置关联关系。

Field(字段)

  • 定义数据列的类型和属性。
  • 支持 26 种字段类型。
  • 提供丰富的字段选项(验证规则、默认值、格式化等)。

Record(记录)

  • 数据表中的一行数据。
  • 支持增删改查和批量操作。
  • 拥有完整的变更历史追踪。

View(视图)

  • 数据的展示方式。
  • 拥有独立的筛选、排序、分组配置。
  • 支持视图级别字段控制(隐藏、冻结、宽度)。

Document(文档)

  • 文档存储与管理,关联到 Base。
  • 支持富文本和 Markdown 内容。
  • 权限继承自所属 Base。

Workflow(工作流)

  • 工作流自动化引擎的核心实体。
  • 绑定到 Base 或具体 Table。
  • 包含触发器配置和节点执行链。
  • 支持暂停、继续、编辑和版本管理。

核心模块

权限系统

  • 基于角色的访问控制(RBAC)。
  • 支持 Base 级、Table 级、Record 级和 Field 级权限。
  • 五种默认角色:所有者、管理员、编辑者、评论者、查看者。

实时协作

  • WebSocket 连接管理。
  • 操作广播机制。
  • 单元格锁定与冲突检测。
  • 离线队列和优雅降级。

工作流引擎

  • 触发器管理。
  • 条件判断与分支。
  • 节点执行与排序。
  • 执行日志和版本管理。

性能优化

前端优化

  • 代码分割与懒加载。
  • 表格虚拟滚动。
  • IndexedDB 本地缓存。

后端优化

  • 数据库索引优化。
  • 查询优化。
  • Redis 缓存(可选)。

安全设计

认证授权

  • JWT Token 认证。
  • 会话管理。
  • 权限验证。

网络安全

  • HTTPS 加密。
  • CORS 配置。
  • XSS / CSRF 防护。
  • API 速率限制。

数据安全

  • 敏感数据加密。
  • 日志脱敏。
  • 数据隔离与备份机制。

扩展性设计

  • 自定义字段类型(通过后端模型扩展)。
  • Webhook 集成。
  • 第三方 API 集成。
  • 可选的 MinIO 对象存储。

相关链接

Released under the MIT License.