13 KiB
| date | topic |
|---|---|
| 2026-06-29 | bitable-ui-completeness |
多维表格 UI 完善需求文档
Summary
引入"多维表格文件"作为最上级容器,重构 文件 → 数据表 → 字段/记录 三层骨架,按飞书/twenty 范式补齐表内字段操作、默认字段、select 编辑器、多视图、三类采集入口、公式编辑器、权限/自动化/表单等能力。分四阶段交付,阶段一聚焦文件层 + 默认字段 + 表内字段操作三件事。当前无现有 bitable 数据需迁移,数据模型变更成本可控。
Problem Frame
AgentKit 多维表格(bitable)后端 v1 已基本齐全:领域模型(表/字段/记录/视图/公式)+ REST API(表/字段/记录/视图/upsert/上传/公式校验)+ 异步重算 worker + 三类采集引擎(Excel/数据库/API)+ 公式解析器全部就位。但前端 UI 层薄、产品形态残缺,导致"功能不完善,无法正常使用"。
三类核心缺口:
- 层级缺失:当前只有"数据表"层,缺最上级的"多维表格文件"容器。飞书(多维表格 App → 数据表)和 twenty(Object → 记录)都有这个上层归集,bitable 当前是平铺的表列表,数据无组织归属。
- 默认字段缺失:新建数据表是空表起步,没有自带默认字段集。飞书/twenty 新建表都自带"标题/状态/日期/创建人/创建时间"等基础字段,让用户立即有结构可填。
- 表内字段操作缺失:增/改/删字段只能通过右侧"字段管理"弹层,不能在表内列头直接操作。飞书/twenty 都支持点列头下拉菜单管理字段。
此外 select/multiselect 字段编辑器仍是文本输入(不是下拉选项),三类采集入口在前端无 UI,ViewType 枚举有 5 种但前端只实现 grid 一种,公式编辑器只有校验 API 没有 UI 增强。
现状是"后端能力齐备,前端产品形态不到位"。本次完善的目标是把前端产品形态对齐飞书/twenty 范式,让 bitable 真正可用。
Key Decisions
KD1. 方案选 Approach 1:飞书范式复刻,三层容器骨架先行。 不选 Approach 2(表内体验优先 + 文件层轻量化后置)也不选 Approach 3(Agent 数据底座优先)。理由:用户明确"全面对齐飞书/twenty",A2 的轻量文件层会在权限/共享/自动化能力上撞天花板,A3 偏离了"参照飞书"的诉求。
KD2. 文件层一次到位引入新实体,不接受轻量化分组方案。 文件层是数据组织基石,延后做会让前期数据无归属、后期二次迁移更痛。当前 schema V1(create_all 模式),无现有 bitable 数据需迁移,引入文件层是干净的新增。
KD3. 分四阶段执行。 阶段一(文件层骨架 + 默认字段 + 表内字段操作 + select 编辑器)→ 阶段二(三类采集入口 + Agent 写入反馈)→ 阶段三(看板/画廊视图 + 公式编辑器增强)→ 阶段四(权限 + 自动化 + 表单 + 甘特)。每阶段可独立验证交付。
KD4. 默认字段集参照飞书 5 字段:标题(text)/ 状态(select)/ 日期(date)/ 创建人(user)/ 创建时间(datetime)。 不做可配置模板,固定集即可。后续若需按用途类型预设模板,再评估。
KD5. 视觉决策用文字探讨,不开浏览器探针。 用户选择文字描述选项,所有布局/交互形态决策通过文字对话确认。
KD6. 保留原需求文档"自建 + 底座心智"方向。 文件层天然可作为 Agent 持久化结构化数据底座的承载点,未来 Agent 写入就是写入文件内的表。原方向不冲突。
KD7. Agent 集成放阶段二,不在阶段一。 阶段一聚焦用户主动建表体验,阶段二再做 Agent 采集闭环与写入反馈。理由:阶段一的产品形态不完整时做 Agent 集成会让 Agent 写入落到错误的结构上。
Actors
- 用户:数据精修者与分析者。在落地后的表上编辑用户列、配置视图、做分析。本次完善的主要服务对象。
- Agent:数据作者。执行三类采集(Excel/数据库/API),按字段写入多维表格。阶段二开始接入 UI 反馈。
- 伴生服务:bitable 自有 API/CLI、自有领域模型、自有存储边界。AgentKit ↔ bitable 走 API/CLI,不做进程内紧耦合。
Requirements
阶段一:文件层骨架与表内基础体验
R1. 引入"多维表格文件"作为最上级容器,数据表归属文件。文件自有元数据(名称/图标/描述等),支持 CRUD。
R2. 新建数据表自带默认字段集,参照飞书 5 字段:标题(text)、状态(select,预设"未开始/进行中/已完成"3 选项)、日期(date)、创建人(user)、创建时间(datetime)。
R3. 表内字段操作走列头下拉菜单。支持重命名、改类型、隐藏、删除。不再依赖右侧"字段管理"弹层作为唯一入口。
R4. select/multiselect 字段编辑器使用下拉选项(带颜色标签),替换当前文本输入。选项在字段配置中维护。
R5. 三层导航层级:文件列表 → 文件详情(含多张表)→ 表内(字段/记录/视图)。文件列表是新的最上级入口,替代当前平铺的表列表。
阶段二:三类采集入口与 Agent 写入反馈
R6. Excel 上传采集入口:前端 UI 触发,调用已有 src/agentkit/bitable/ingestion/excel.py 后端。用户上传 Excel 文件或提供 URL,按字段写入指定表的"数据列",保留"用户列"。
R7. 数据库导入采集入口:前端 UI 触发,调用已有 src/agentkit/bitable/ingestion/database.py 后端。用户指定数据库连接与表,生成对应多维表格。
R8. API/爬虫采集入口:前端 UI 触发,调用已有 src/agentkit/bitable/ingestion/api_collector.py 后端。用户配置 API 端点或爬虫指令,Agent 执行采集后按字段写入。
R9. Agent 写入反馈 UI:用户能看见 Agent 最近写入的记录与写入历史。形态在 Outstanding Questions 中确认。
阶段三:多视图与公式编辑器增强
R10. 看板视图:按分组字段(通常是 select 字段)分列展示记录卡片,支持拖拽卡片改分组。
R11. 画廊视图:以图片/附件字段为主视觉的卡片网格展示。
R12. 公式编辑器增强:函数提示、字段引用插入、实时语法校验。复用已有 POST /api/v1/bitable/fields/validate-formula 端点。
阶段四:权限、自动化、表单、甘特
R13. 文件级与表级权限模型。文件可共享给用户/部门,表继承文件权限并可细化。
R14. 自动化触发器:事件(记录新增/字段变更/定时)→ 动作(写另一字段/发通知/调 API)。
R15. 表单视图:以表单形式收集数据写入指定表。表单可分享链接。
R16. 甘特视图:按日期字段排时间线,支持依赖关系连线。
Key Flows
-
F1. 用户建表流程
- Trigger: 用户点"新建文件"按钮
- Actors: 用户
- Steps: 创建文件(命名/选图标)→ 在文件内点"新建表" → 表自带 5 个默认字段 → 用户在表内点列头加新字段(如"邮箱")→ 配置字段类型与选项
- Outcome: 文件含 1 张带默认字段+用户扩展字段的表
-
F2. Agent 采集写入流程
- Trigger: 用户在文件内点"采集数据"按钮
- Actors: 用户、Agent、伴生服务
- Steps: 选采集类型(Excel/DB/API)→ 配置采集参数 → Agent 执行采集 → 按主键 upsert 写入指定表 → UI 显示 Agent 写入反馈(新记录高亮/写入历史)
- Outcome: 表内有 Agent 写入的数据列,用户的列与公式列保留不变
-
F3. 表内字段操作流程
- Trigger: 用户在表内点某列列头
- Actors: 用户
- Steps: 列头下拉菜单弹出 → 选"重命名/改类型/隐藏/删除" → 执行操作 → 表实时更新
- Outcome: 字段状态变更,不需要打开右侧字段管理弹层
Acceptance Examples
-
AE1. 新建文件"销售管线"
- Covers R1, R2, R3, R5.
- Given 用户在文件列表页
- When 点"新建文件"命名"销售管线" → 进入文件详情 → 点"新建表"命名"客户"
- Then 表自带 5 个默认字段(标题/状态/日期/创建人/创建时间)→ 用户点"标题"列头下拉 → 选"重命名"改为"公司名" → 表头实时更新
-
AE2. Agent 采集 Excel 写入
- Covers R6, R9.
- Given 用户在"客户"表内已加"邮箱"用户列
- When 点"采集数据" → 选 Excel 上传 → 选一份客户名单 Excel → Agent 写入
- Then 表内出现新记录(数据列被填充)→ "邮箱"用户列保持不变 → UI 显示"Agent 写入 N 条"反馈
-
AE3. 切换看板视图
- Covers R10.
- Given "客户"表内有"状态"select 字段(未开始/进行中/已完成)
- When 点 ViewSwitcher → 新建看板视图 → 分组字段选"状态"
- Then 表渲染为三列看板(未开始/进行中/已完成)→ 拖拽某卡片从"未开始"到"进行中" → 该记录的"状态"字段自动改为"进行中"
Success Criteria
- 阶段一验收:用户能创建文件、新建表自带默认字段、表内直接增改删字段、select 下拉编辑器可用、三层导航层级清晰。
- 整体完成:四阶段全部交付,UI 体验对齐飞书/twenty 范式(三层骨架 + 多视图 + 采集 + 公式编辑器 + 权限/自动化/表单)。
- 后端兼容:现有 v1 后端 API 不被破坏。文件层引入是新增 schema(V2),不破坏现有 V1 表结构。
- E2E 覆盖:每阶段交付时 e2e 测试覆盖关键流程(建表/采集/视图切换/字段操作)。当前
e2e/bitable-view.spec.ts仅 B1/B2 两个基础测试,需扩展。
Scope Boundaries
本次范围内
四阶段全部 16 个 R(R1-R16)。
延后(v3 范围)
- 多人实时协作(多人同时编辑同一表,光标/选区同步)
- 大规模优化(列式存储、分区、物化视图、异步重算管道升级)
本产品身份之外
- 通用电子表格:bitable 是字段化记录模型,不是单元格自由编辑
- ETL/数据管道平台:采集是 Agent 驱动的按需执行,非定时调度管道
- BI 仪表盘产品:分析能力服务于表格内聚合,非独立 BI
- 知识库 RAG 替代:bitable 是结构化数据载体,非非结构化文档检索
Dependencies / Assumptions
- 依赖:现有后端 v1 齐全(
src/agentkit/bitable/{service,repository,models,recalc_worker,db,formula,ingestion}),本次完善主要在前端 + 后端加文件层新实体。 - 依赖:vxe-table 4 已用于
BitableGrid,继续作为 grid 实现基础。 - 依赖:Ant Design Vue 4 + Vue 3 + Pinia + TypeScript(强类型,禁 any)。
- 假设:现有 PostgreSQL 性能足以支撑 v1/v2 规模。
- 假设:文件层引入只需 schema V2 升级(当前 V1,
create_all模式,无 alembic 迁移)。 - 假设:用户接受分阶段交付,每阶段可独立验证。
- 假设:
CONCEPTS.md已有 Bitable/Field Ownership/Recalc 三条目,本次需补"多维表格文件/BitableFile"新词。
Outstanding Questions
Resolve Before Planning
- 文件层实体的具体字段集(名称/图标/描述/权限/创建人?)待 ce-plan 决定。
- Agent 写入反馈 UI 形态("最近写入记录高亮" vs "完整写入历史时间线")未深入讨论,影响阶段二工作量。
- 阶段二/三/四的具体 R 优先级与依赖排序(如 R10 看板 vs R12 公式编辑器谁先)。
Deferred to Planning
- 文件层引入是 schema V2 升级还是独立 schema 隔离。
- select 下拉编辑器用 vxe-table 内置 select 还是自定义组件。
- 公式编辑器是否引入第三方库(如 formula-parser)。
- 看板/画廊视图的组件选型(自建 vs 现成库)。
- 文件级权限模型是复用现有 RBAC 还是新建。
Sources / Research
- 飞书多维表格:表/视图/字段/记录四层范式;列头下拉菜单管理字段;新建表自带默认字段;多视图切换;公式列;权限;自动化;表单收集。作为本次主要参照标杆。
- twentyhq/twenty (https://github.com/twentyhq/twenty):开源 CRM,对象→视图→记录三栏布局范式;record 详情右侧抽屉;字段化记录模型。作为布局参照。
- 原需求文档:
docs/brainstorms/2026-06-24-bitable-module-requirements.md(5 天前,已决策"自建 + 底座心智" + v1/v2/v3 路线,本次为全量重写替代)。 - 现有后端实现:
src/agentkit/bitable/{service,repository,models,recalc_worker,db}.py+formula/{parser,functions,engine}.py+ingestion/{excel,database,api_collector}.py。 - 现有前端实现:
src/agentkit/server/frontend/src/views/BitableView.vue+src/agentkit/server/frontend/src/components/bitable/*.vue(10 个组件)+src/agentkit/server/frontend/src/stores/bitable.ts+src/agentkit/server/frontend/src/api/bitable.ts。 - REST API 路由:
src/agentkit/server/routes/bitable.py(表/字段/记录/视图/upsert/上传/公式校验端点齐全)。 - 已有解决方案:
docs/solutions/architecture-patterns/bitable-companion-service-security-reliability-patterns.md。 - 领域词汇:
CONCEPTS.md现有 Bitable/Field Ownership/Recalc 三条目,本次需补"多维表格文件/BitableFile"。