fischer-agentkit/docs/brainstorms/2026-06-29-bitable-ui-compl...

13 KiB
Raw Permalink Blame History

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 层薄、产品形态残缺,导致"功能不完善,无法正常使用"。

三类核心缺口:

  1. 层级缺失:当前只有"数据表"层,缺最上级的"多维表格文件"容器。飞书(多维表格 App → 数据表)和 twentyObject → 记录都有这个上层归集bitable 当前是平铺的表列表,数据无组织归属。
  2. 默认字段缺失:新建数据表是空表起步,没有自带默认字段集。飞书/twenty 新建表都自带"标题/状态/日期/创建人/创建时间"等基础字段,让用户立即有结构可填。
  3. 表内字段操作缺失:增/改/删字段只能通过右侧"字段管理"弹层,不能在表内列头直接操作。飞书/twenty 都支持点列头下拉菜单管理字段。

此外 select/multiselect 字段编辑器仍是文本输入(不是下拉选项),三类采集入口在前端无 UIViewType 枚举有 5 种但前端只实现 grid 一种,公式编辑器只有校验 API 没有 UI 增强。

现状是"后端能力齐备,前端产品形态不到位"。本次完善的目标是把前端产品形态对齐飞书/twenty 范式,让 bitable 真正可用。


Key Decisions

KD1. 方案选 Approach 1飞书范式复刻三层容器骨架先行。 不选 Approach 2表内体验优先 + 文件层轻量化后置)也不选 Approach 3Agent 数据底座优先)。理由:用户明确"全面对齐飞书/twenty"A2 的轻量文件层会在权限/共享/自动化能力上撞天花板A3 偏离了"参照飞书"的诉求。

KD2. 文件层一次到位引入新实体,不接受轻量化分组方案。 文件层是数据组织基石,延后做会让前期数据无归属、后期二次迁移更痛。当前 schema V1create_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 不被破坏。文件层引入是新增 schemaV2不破坏现有 V1 表结构。
  • E2E 覆盖:每阶段交付时 e2e 测试覆盖关键流程(建表/采集/视图切换/字段操作)。当前 e2e/bitable-view.spec.ts 仅 B1/B2 两个基础测试,需扩展。

Scope Boundaries

本次范围内

四阶段全部 16 个 RR1-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 升级(当前 V1create_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.md5 天前,已决策"自建 + 底座心智" + 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/*.vue10 个组件)+ 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"。