snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
---
title: 字段
description: 了解字段的作用以及如何管理它们。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 关于字段
字段就像电子表格中的列。 它们存储不同类型的数据,如文本、数字或日期。 字段可以是标准的(内置的)或自定义的(您创建的)。
### 标准字段
标准字段是内置在Twenty中,用于处理常见的业务需求。
例如,`姓`和`名`是`人`对象中的标准字段。 它们用于存储个人姓名的文本数据。
您无法删除标准字段,但如果不需要,您可以停用它们。
您还可以自定义标准`SELECT`类型字段的选项,例如机会中的`阶段`选项。
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
### 自定义字段
可以将自定义字段添加到任何对象。 您可以存储文本、数字、日期、下拉选择等。 使用自定义字段来跟踪特定于您业务的信息。
例如,SpaceX的自定义字段可以是`火箭活动状态`,指示火箭是否在运作。
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
## 字段类型
Twenty 支持多种字段类型:
| 类型 | 描述 | 示例 |
| ----- | ------------------------- | ----------- |
| 地址 | 包含街道、城市、州/省、国家、邮政编码的结构化地址 | 办公地址 |
| 数组 | 文本值列表 | 标签 |
| 布尔值 | 真/假复选框 | 是否活跃 |
| 货币 | 带有货币代码的金额 | 交易金额(USD) |
| 日期 | 日期值 | 关闭日期 |
| 日期和时间 | 带时间的日期 | 会议时间 |
| 域 | 网站域名(用于公司) | acme.com |
| 电子邮件 | 电子邮件地址(含主要 + 附加) | 联系人的电子邮件 |
| JSON | 结构化 JSON 数据 | 自定义元数据 |
| 链接 | 带标签的 URL(主要 + 次要) | 网站、LinkedIn |
| 长文本 | 多行文本 | 描述、备注 |
| 多选 | 从预定义列表中选择多个选项 | 标签、类别 |
| 数字 | 数值(整数或小数) | 数量、分数 |
| 电话 | 带国家代码的电话号码 | 工作电话 |
| 评分 | 星级评分(1-5) | 优先级、分数 |
| 关系 | 链接到其他对象中的记录 | 公司 → 人员 |
| 选择 | 从预定义列表中选择单个选项 | 阶段、状态 |
| 文本 | 单行文本 | 名称、标题 |
## 创建自定义字段
要将自定义字段添加到任何对象,请按照以下步骤操作:
1. 转到左侧栏的`设置`。
2. 转到`数据模型`,然后选择您想要自定义的对象。
3. 继续点击`+ 新建字段`。
4. 选择适合您要求的字段名称和类型。 考虑添加字段描述以便更好地理解。
您新创建的字段现在可以在应用程序的字段中使用。 要将其显示在特定视图中,请单击选项菜单,然后选择`字段`。
<VimeoEmbed videoId="927628219" title="视频演示" />
**快速方法:** 点击任何对象表右上的 **+** 按钮,然后选择`自定义字段`。 这将直接带您进入数据模型设置。
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
## 停用字段
您可以停用字段以从应用程序中隐藏它,而不会丢失您的数据。 这更像是隐藏字段而不是删除它。
您可以这样做:
1. 在对象设置中找到您想停用的字段。
2. 点击字段旁边的三点`⋮`打开菜单。
3. 从下拉菜单选择`停用`。
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
停用字段会发生什么?
1. **在应用程序中:** 字段消失,您不能向其中添加新值。
2. **现有关系:** 如果它是一个关系字段,现有连接将保留,但不能创建新连接。
3. **通过API访问:** 您仍然可以通过API访问字段及其数据。
您可以重新激活标准字段和自定义字段,或有选择地将其永久删除。
## 使字段唯一
使字段唯一以确保不同记录无法拥有相同的值。 例如,电子邮件地址对每个人都是唯一的。
如果在设置唯一性时出现错误,请检查数据中是否有重复值(包括删除的记录)。
## 索引(高级)
数据库索引由系统自动管理——自己添加索引通常没必要,而且也很容易出错。 在开启高级模式后,每个对象在 `Settings → Data Model → <object>` 下都会有一个 **Indexes** 部分,供你在确实需要索引时使用。
## 字段配置最佳实践
### 命名约定和限制
* **单数和复数名称必须不同**:我们的 GraphQL API 需要为变更提供不同的名称
* **受保护的字段名称**:某些名称保留供系统使用(例如,`Type`、`Application`)
### 货币和电话号码字段
* **默认货币:** 可以通过数据模型进行配置
* **默认国家代码:** 可以通过数据模型为电话号码字段进行配置
### 选择字段
* **可以为每个选择字段选择默认选项**
### 记录文本字段
* **每个对象都有一个主要显示字段:** 此字段出现在最左列,并在与其他对象关联时代表记录。 它必须是文本字段。 例如,`人`使用`姓名`作为主要字段,因此当您将某人关联到公司时,您将在公司的视图中看到他们的姓名。

View File

@@ -0,0 +1,92 @@
---
title: 对象
description: 了解 Twenty 中的标准对象和自定义对象。
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 标准对象
标准对象是工作区中预定义的实体,帮助您入门。 它们是共享数据模型的一部分,所有Twenty用户均可访问。 您可以直接使用、进行自定义或将其停用。
<img src="/images/user-guide/objects/standard-objects.png" style={{width:'100%'}} />
### 人员
`People`对象存储您的联系人。 它包含联系信息和交互历史记录,因此您可以在一个地方查看所有客户互动。
### 公司
`Companies`对象存储您的业务帐户。 它包括行业、规模和位置等详细信息。 公司连接到`People`和`Opportunities`对象。
### 机会
`Opportunities`对象存储与交易相关的数据。 它用于跟踪潜在销售从开发到成交的全过程,记录阶段、交易规模、关联公司以及预计成交日期。 您可以在看板布局中查看您的销售流程。
### 备注
`Notes` 对象存储自由格式笔记,可附加到联系人、公司、商机及其他记录。 使用笔记记录会议摘要、重要细节或任何上下文信息。
### 任务
`Tasks` 对象存储待办事项和行动项。 任务可以关联到联系人、公司、商机及其他记录。 跟踪到期日期、负责人和完成状态,以便掌控后续跟进。
## 自定义对象
自定义对象可以存储标准对象无法处理的、组织特有的信息。 例如,如果您是SpaceX,您可能想为火箭和发射创建自定义对象。
<img src="/images/user-guide/objects/custom-objects.png" style={{width:'100%'}} />
### 创建新的自定义对象
要创建新的自定义对象:
1. 转到左侧边栏中的设置。
2. 在工作区下,转到数据模型。 在这里您可以看到您所有现有的标准和自定义对象(活动和禁用对象)的概述。
<VimeoEmbed videoId="926288174" title="视频演示" />
3. 点击顶部的`+ 新对象`。 输入名称(单数和复数),选择图标,添加自定义对象的描述,然后点击保存(在右上角)。 以Listing作为自定义对象的示例,单数为"listing",复数为"listings",以及像“房东创建的用于展示其物业的列表”这样的描述。
4. 您的自定义对象已创建,并会显示在侧边栏中。 您可以立即开始向其中添加记录。
## 管理对象
### 停用对象
如果您不再需要某个标准对象或自定义对象:
1. 进入 设置 → 数据模型
2. 查找您想要停用的对象并单击它
3. 转到对象的 **设置** 标签
4. 单击“停用”按钮
5. 该对象将在您的工作区中隐藏,但数据会被保留
### 重新启用对象
要恢复已停用的对象:
1. 进入 设置 → 数据模型
2. 启用 "停用" 过滤器
3. 寻找已停用的对象 (他们名字旁边有`停用`)
4. 单击`connec`,然后`Activate`重新激活它
5. 该对象及其所有数据将被恢复
## 最佳实践
### 何时创建自定义对象
* **独特的业务实体**:特定于您的行业或流程的事物
* **复杂关系**:当您需要跟踪多个实体之间的关联时
* **可扩展的数据**:当某类事物可能有大量实例时
### 何时改用字段
* **简单属性**:用于描述现有对象的属性
* **类别或标签**:对现有记录进行分类的方式
* **单一值**:不需要独立生命周期的信息
### 对象命名
* **使用清晰、具有描述性的名称**:让对象所代表的内容一目了然
* **遵循约定**:对象名称使用单数形式,集合使用复数形式
* **考虑您的团队**:选择人人都能理解的名称

View File

@@ -0,0 +1,94 @@
---
title: 关系字段
description: 使用关系字段在不同对象之间关联记录。
---
## 关系类型
### 一对多
对象 A 中的一条记录可以关联到对象 B 中的多条记录。
**示例:** 一个公司可以拥有许多人员(员工)。
### 多对一
对象 A 中的多条记录可以关联到对象 B 中的一条记录。
**示例:** 许多人员可以隶属于一个公司。
### 可指向多种对象类型的关系
某些对象在关系的一侧可以关联到多种对象类型。
**示例:** 一条备注可以同时附加到一个人员、一个公司和一个商机。 该备注位于 "多" 侧,连接到多个 "一" 侧。
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
类似地,一个项目(位于 "一" 侧)可以接收来自多个人员、多个公司和多条备注的关联。
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**导入/导出限制**:指向多个对象类型的关系目前尚不支持 CSV 导入/导出。 此功能已在我们的路线图中。
</Warning>
### 多对多
对象 A 中的多条记录可以关联到对象 B 中的多条记录。
**示例:** 许多人员可以关联到许多项目,反之亦然。
多对多关系采用**连接对象**模式:一个连接双方的中间对象。 借助连接关系功能,Twenty 会直接显示最终关联的记录,并在界面中隐藏该中间对象。
<Warning>
**Beta 功能**:使用前必须在 **Settings → Community → Features** 中启用连接关系。
</Warning>
请参阅 [如何创建多对多关系](/l/zh/user-guide/data-model/how-tos/create-many-to-many-relations) 以获取完整的分步指南。
## 创建关系字段
1. 进入 **设置 → 数据模型**
2. 选择要添加关系的对象
3. 点击 **+ 新字段**
4. 将字段类型选择为 **关系**
5. 选择要关联到的目标对象
6. 配置关系设置:
* **源对象上的字段名称**:你正在编辑的对象上的关系字段名称
* **目标对象上的字段名称**:将显示在目标对象上的关系字段名称
* 关系类型(一对多、多对一)
7. 单击 **保存**
## 标准关系
Twenty 内置了标准对象之间的预设关系:
| 来源对象 | 目标对象 | 关系类型 |
| ---- | ---- | ---- |
| 人员 | 公司 | 多对一 |
| 机会 | 公司 | 多对一 |
| 机会 | 人员 | 多对一 |
## 最佳实践
### 规划关系
* **梳理你的数据模型**:在创建关系之前先进行规划
* **考虑方向**:思考由哪个对象 "拥有" 该关系
* **避免循环依赖**:保持数据模型简洁清晰
### 关系命名
* **使用清晰的名称**:使关系所代表的含义一目了然
* **保持一致**:在各个关系中使用类似的命名模式
* **兼顾两端**:为关系的两端分别起合适的名称
### 性能
* **不要过度关联**:过多的关系会拖慢你的工作区
## 限制
* **删除关系**会移除链接,但不会删除相关记录
* **循环关系**应当避免,以确保数据完整性