--- date: 2026-06-29 topic: bitable-ui-completeness --- # 多维表格 UI 完善需求文档 ## Summary 引入"多维表格文件"作为最上级容器,重构 `文件 → 数据表 → 字段/记录` 三层骨架,按飞书/twenty 范式补齐表内字段操作、默认字段、select 编辑器、多视图、三类采集入口、公式编辑器、权限/自动化/表单等能力。分四阶段交付,阶段一聚焦文件层 + 默认字段 + 表内字段操作三件事。当前无现有 bitable 数据需迁移,数据模型变更成本可控。 --- ## Problem Frame AgentKit 多维表格(bitable)后端 v1 已基本齐全:领域模型(表/字段/记录/视图/公式)+ REST API(表/字段/记录/视图/upsert/上传/公式校验)+ 异步重算 worker + 三类采集引擎(Excel/数据库/API)+ 公式解析器全部就位。但前端 UI 层薄、产品形态残缺,导致"功能不完善,无法正常使用"。 三类核心缺口: 1. **层级缺失**:当前只有"数据表"层,缺最上级的"多维表格文件"容器。飞书(多维表格 App → 数据表)和 twenty(Object → 记录)都有这个上层归集,bitable 当前是平铺的表列表,数据无组织归属。 2. **默认字段缺失**:新建数据表是空表起步,没有自带默认字段集。飞书/twenty 新建表都自带"标题/状态/日期/创建人/创建时间"等基础字段,让用户立即有结构可填。 3. **表内字段操作缺失**:增/改/删字段只能通过右侧"字段管理"弹层,不能在表内列头直接操作。飞书/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](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"。