多维表格
This content is not available in your language yet.
每张表由 字段(fields) + 记录(records) 构成:
- 字段 是列的元数据:类型、名称、宽度、选项配置等
- 记录 是行:
{ id, cells: { fieldId: value } }
recordId 是 18 字符的全栈唯一 ID(无并行 ID 概念),跨前后端 / 跨存储引擎都是同一个。
星汉内置 20+ 字段类型,覆盖从基础数据到派生计算:
| 类型 | 适合 | 备注 |
|---|---|---|
| 文本 | 单行/多行文字 | Markdown 子集 |
| 数字 | 整数/小数 | 格式、小数位、千分位 |
| 日期 | 日期/日期时间 | 时区跟用户配置 |
| 单选 | 标签/状态 | 选项带颜色 |
| 多选 | 多项标签 | 选项带颜色 |
| 勾选 | 布尔 | |
| 附件 | 图片/文件 | 本地存储 |
| 成员 | 人员指派 | 存储 actorId,显示名解析 |
| 关联 | 跨表引用(瘦存储) | 单向/双向,存 recordId 数组 |
| 引用 | 穿透关联显示目标表字段 | 骑在关联上,派生只读 |
| 汇总 | 跨表聚合 | SUM/AVERAGE/COUNT 等 7 种 |
| 公式 | 基于本表列自动计算 | 200+ 函数,服务端重算 |
| 编号 | 自动编号 | 公式驱动,前缀+日期+补零 |
| Button | 触发自动化 | 接自动化触发器 |
| Markdown | 长文本 | 富文本编辑 |
派生字段(公式/汇总/引用/编号)只读,值由服务端计算物化,不可手动编辑。
一张表可挂多个视图,互不影响数据:
- 网格:经典 spreadsheet 视图
- 岛屿网格(IslandGridView):分组后每组一张”卡片”,浮在浅色 tray 上
- 甘特:按日期字段排时间轴
- 看板:按单选字段分列
- 日历:按日期字段铺日历
所有表格写入都走 Op System —— 不直接改 store,而是发一个 funCall(“在 fieldId
新增”、“改某 cell 值”等等),后端校验后回写并广播给协作者。
好处:
- 一次操作 = 一个 Op + 一个反向 Op,撤销 / 重做天然支持
- 多人协作时基于 baseRevision 做 CAS(compare-and-swap),冲突时拒绝并提示重做
- 改动可序列化到日志(
changeset_log表),审计完整
详情见仓库内 OPERATIONS_EXTENSION_GUIDE.md。