diff --git a/docs.json b/docs.json index 1224e679..e52f57bd 100644 --- a/docs.json +++ b/docs.json @@ -172,7 +172,8 @@ "en/basic/field/basic/multiple-select", "en/basic/field/basic/date", "en/basic/field/basic/rating", - "en/basic/field/basic/checkbox" + "en/basic/field/basic/checkbox", + "en/basic/field/basic/attachment" ] }, { @@ -303,6 +304,8 @@ "en/basic/admin-panel/template-admin", "en/basic/admin-panel/settings", "en/basic/admin-panel/ai-setting", + "en/basic/admin-panel/automation-management", + "en/basic/admin-panel/sandbox-agent", "en/basic/admin-panel/multitenancy" ] }, @@ -432,7 +435,8 @@ "zh/basic/space/space-invite", "zh/basic/space/base-invite", "zh/basic/space/space-permission", - "zh/basic/space/billing" + "zh/basic/space/billing", + "zh/basic/space/im-integration" ] }, { @@ -534,7 +538,8 @@ "zh/basic/field/basic/multiple-select", "zh/basic/field/basic/date", "zh/basic/field/basic/rating", - "zh/basic/field/basic/checkbox" + "zh/basic/field/basic/checkbox", + "zh/basic/field/basic/attachment" ] }, { @@ -666,6 +671,8 @@ "zh/basic/admin-panel/template-admin", "zh/basic/admin-panel/settings", "zh/basic/admin-panel/ai-setting", + "zh/basic/admin-panel/automation-management", + "zh/basic/admin-panel/sandbox-agent", "zh/basic/admin-panel/multitenancy" ] }, diff --git a/en/api-doc/record/create.mdx b/en/api-doc/record/create.mdx index 6c416ce2..5bc296f4 100644 --- a/en/api-doc/record/create.mdx +++ b/en/api-doc/record/create.mdx @@ -21,14 +21,14 @@ POST /api/table/\{tableId\}/record ```json [ { - fields: { + "fields": { "Name": "John Doe", "Age": 30, "Email": "john@example.com" } }, { - fields: { + "fields": { "Name": "Jane Smith", "Age": 28, "Email": "jane@example.com" @@ -50,7 +50,7 @@ POST /api/table/\{tableId\}/record * When set to "name": ```json { - fields: { + "fields": { "Name": "John Doe", "Age": 30 } @@ -59,7 +59,7 @@ POST /api/table/\{tableId\}/record * When set to "id": ```json { - fields: { + "fields": { "fldABCDEFGHIJKLMN": "John Doe", "fldOPQRSTUVWXYZ12": 30 } @@ -112,9 +112,9 @@ POST /api/table/\{tableId\}/record * Complete example: ```json { - viewId: "viwABCDEFGHIJKLMN", - anchorId: "rec123456789ABCDE", - position: "after" + "viewId": "viwABCDEFGHIJKLMN", + "anchorId": "rec123456789ABCDE", + "position": "after" } ``` * Note: Using order allows precise control of new record positions in a specific view. @@ -239,4 +239,3 @@ POST /api/table/\{tableId\}/record print(response.json()) ``` - diff --git a/en/api-doc/record/update.mdx b/en/api-doc/record/update.mdx index b702358f..6de84230 100644 --- a/en/api-doc/record/update.mdx +++ b/en/api-doc/record/update.mdx @@ -45,7 +45,7 @@ To clear a field's value, explicitly pass `null`. If a field name is not include * When set to "name": ```json { - fields: { + "fields": { "Name": "John Doe", "Age": 30 } @@ -54,7 +54,7 @@ To clear a field's value, explicitly pass `null`. If a field name is not include * When set to "id": ```json { - fields: { + "fields": { "fldABCDEFGHIJKLMN": "John Doe", "fldOPQRSTUVWXYZ12": 30 } @@ -88,6 +88,22 @@ To clear a field's value, explicitly pass `null`. If a field name is not include For uploading new files to attachment fields, please refer to the [Upload Attachment](/en/api-doc/record/upload-attachment) section. +* **order (optional)** + * Description: After updating the record, move it to a specified position in a specified view. + * Type: Object + * Properties: + * viewId: View ID + * anchorId: Anchor record ID + * position: Position relative to the anchor record. Possible values: `"before"` or `"after"` + * Example: + ```json + { + "viewId": "viwABCDEFGHIJKLMN", + "anchorId": "rec123456789ABCDE", + "position": "after" + } + ``` + ### Response #### Success Response @@ -191,4 +207,3 @@ For uploading new files to attachment fields, please refer to the [Upload Attach print(response.json()) ``` - diff --git a/en/basic/admin-panel/automation-management.mdx b/en/basic/admin-panel/automation-management.mdx new file mode 100644 index 00000000..7fca0d68 --- /dev/null +++ b/en/basic/admin-panel/automation-management.mdx @@ -0,0 +1,62 @@ +--- +title: "Automation management" +description: "View automation run status, success rate, and run history in the Admin Panel." +--- + +Available for self-hosted Business plan and above + +Path: Admin Panel → Automation management + +**Automation management** is used to view automation run status across the instance. + +## 1. Summary Metrics + +The top of the page shows the overall status for the selected time range: + +| Metric | Description | +|------|------| +| **Active workflows** | Number of automations that are currently active | +| **Total runs** | Total runs in the selected time range | +| **Success rate** | Percentage of successful runs among all runs | +| **Failed runs** | Number of failed runs in the selected time range | +| **Health overview** | Automation health grouped by healthy, warning, and critical states | +| **Run status distribution** | Run distribution by successful, failed, running, pending, and canceled states | + +## 2. Filters + +The main page supports filters: + +- **Date range**: Last 30 minutes, 1 hour, 6 hours, 1 day, 3 days, 7 days, or 30 days. +- **Trigger**: Filter automations by trigger type. + +## 3. Automation List + +The list shows a run summary for each automation: + +- Last run +- Total runs +- Average duration +- Current health status +- Whether attention is required + +If an automation is inactive, the list shows **Inactive**. + +## 4. Run History + +Open an automation to view **Run history**: + +| Field | Description | +|------|------| +| **Status** | Whether the run is successful, failed, running, pending, or canceled | +| **Start time** | When the run started | +| **Duration** | How long the run took | +| **Error** | Error information shown for failed runs | + +Run history can be filtered by successful, failed, running, pending, or canceled status. + +## 5. Actions + +From the automation list, you can: + +- **Deactivate**: Stop the automation from being triggered. +- **Mark for deletion**: Mark the automation for deletion. diff --git a/en/basic/admin-panel/multitenancy.mdx b/en/basic/admin-panel/multitenancy.mdx index dd9f1617..2bd4a59a 100644 --- a/en/basic/admin-panel/multitenancy.mdx +++ b/en/basic/admin-panel/multitenancy.mdx @@ -80,7 +80,3 @@ Teable Instance ├── Marketing Department Organization └── Sales Department Organization ``` - - -Organization functionality requires a subscription license. To upgrade your license, please visit the license management page. - diff --git a/en/basic/admin-panel/overview.mdx b/en/basic/admin-panel/overview.mdx index 3d8c3964..91020e48 100644 --- a/en/basic/admin-panel/overview.mdx +++ b/en/basic/admin-panel/overview.mdx @@ -1,11 +1,11 @@ --- title: "Overview" -description: "Teable's self-hosted deployments include an admin panel for managing your instance." +description: "Teable's self-hosted Admin Panel is used to manage instance users, spaces, and system configuration." --- Available for self-hosted Business plan and above -The Admin Panel provides centralized management for your Teable instance. As an administrator, you can manage Users, Spaces, Template Admin, Instance Settings, and AI Settings. +The Admin Panel provides centralized management for your Teable instance. Administrators can manage users, spaces, templates, instance settings, and AI settings here. ### Accessing the Admin Panel @@ -17,9 +17,12 @@ After logging in as an administrator, click the "Admin Panel" button in the uppe - **[Users](/en/basic/admin-panel/users)** - Manage user accounts, permissions, and access - **[Spaces](/en/basic/admin-panel/spaces)** - Manage spaces and auto-join settings -- **[Template Admin](/en/basic/admin-panel/template-admin)** - Configure template center and custom templates -- **[Instance Settings](/en/basic/admin-panel/settings)** - Configure system-wide settings and permissions -- **[AI Settings](/en/basic/admin-panel/ai-setting)** - Configure AI features and models +- **[Self-hosted license](/en/deploy/activate)** - Register, update, and view the current instance license +- **[Template admin](/en/basic/admin-panel/template-admin)** - Configure template center and custom templates +- **[Instance settings](/en/basic/admin-panel/settings)** - Configure system-wide settings and permissions +- **[AI settings](/en/basic/admin-panel/ai-setting)** - Configure AI features and models +- **[Automation management](/en/basic/admin-panel/automation-management)** - View automation run status and run history +- **[Sandbox Agent](/en/basic/admin-panel/sandbox-agent)** - Configure Sandbox Agent runtime limits and base snapshots ### Administrator Permissions diff --git a/en/basic/admin-panel/sandbox-agent.mdx b/en/basic/admin-panel/sandbox-agent.mdx new file mode 100644 index 00000000..784b1b77 --- /dev/null +++ b/en/basic/admin-panel/sandbox-agent.mdx @@ -0,0 +1,47 @@ +--- +title: "Sandbox Agent" +description: "Configure Sandbox Agent enablement scope, runtime limits, and base snapshots." +--- + +Available for self-hosted Business plan and above + +Path: Admin Panel → Sandbox Agent + +The **Sandbox Agent** page contains **Settings** and **Sandboxes** tabs for configuring how AI Chat runs in sandboxes. + +## 1. Enablement Scope + +In the **Settings** tab: + +1. Turn on **Enable Sandbox Agent**. +2. Configure spaces in **Enabled Spaces**. +3. To enable all spaces, use **Enable for All Spaces**. + +## 2. Runtime Limits + +Configure runtime limits in the **Settings** tab: + +| Setting | Description | +|------|------| +| **Models** | Configure available models for each agent type | +| **Stream Idle Timeout** | Set when an idle stream is terminated | +| **Idle Timeout** | Set when an inactive sandbox is recycled | +| **Concurrent Chat Limit** | Set how many AI chats each user can run at the same time | +| **vCPUs** | Set the number of vCPUs for each sandbox instance | +| **Thinking Effort** | Set the default thinking effort for agents | + +Click **Save** after configuring the settings. + +## 3. Base Snapshots + +Create and manage snapshots in **Base Snapshots**. + +- Use **Quick Setup** to complete **Import Skills**, **Chat Snapshot**, and **App Builder**. +- Use **Create Snapshot** to customize Agent SDK, system tools, Skills, and custom apt packages. +- After a snapshot status is **Ready**, it can be set as **Active**. + +## 4. Sandboxes Tab + +In the **Sandboxes** tab, view active sandboxes and session history. + +The list shows Sandbox ID, Provider, Status, Uptime, and Last Activity. When needed, follow the page prompts to destroy a sandbox. diff --git a/en/basic/ai/overview.mdx b/en/basic/ai/overview.mdx index d5139cf6..b8bee435 100644 --- a/en/basic/ai/overview.mdx +++ b/en/basic/ai/overview.mdx @@ -15,10 +15,10 @@ Teable integrates powerful AI capabilities throughout the platform to help you w Automatically generate, summarize, translate, and extract information from your data using AI-powered fields. - + Integrate AI processing into your automation workflows for intelligent data handling. - + Write custom AI-powered scripts to extend automation capabilities. @@ -46,5 +46,4 @@ Teable integrates powerful AI capabilities throughout the platform to help you w 2. **Use AI Chat** - Ask questions about your data or generate charts 3. **Build Apps** - Turn your Base into a web app with a simple prompt 4. **Create AI Fields** - Add AI-powered fields to automatically process your data -5. **Build Automations** - Use AI Actions in your workflows for intelligent processing - +5. **Build Automations** - Use AI generate and Run script actions in your workflows diff --git a/en/basic/automation/action.mdx b/en/basic/automation/action.mdx index 600a8ddb..6805e4d9 100644 --- a/en/basic/automation/action.mdx +++ b/en/basic/automation/action.mdx @@ -2,6 +2,8 @@ title: "Actions" --- +This page is deprecated and no longer appears in the documentation navigation. It is kept only for old links. Please use the specific action pages under Automation instead. + Actions define specific operations to be executed when a trigger is activated. Teable offers various action types to help you achieve different automation needs. Here's a detailed guide on action configuration: ### 1. Create Record @@ -197,4 +199,3 @@ The system will automatically create corresponding records upon execution. * Bulk information validation By combining these actions flexibly, you can build complex automation workflows to significantly improve work efficiency and data processing accuracy. - diff --git a/en/basic/automation/actions/ai/ai-generate.mdx b/en/basic/automation/actions/ai/ai-generate.mdx index 05eb7717..197fa073 100644 --- a/en/basic/automation/actions/ai/ai-generate.mdx +++ b/en/basic/automation/actions/ai/ai-generate.mdx @@ -4,7 +4,7 @@ description: "Use AI models to generate text or structured data in a workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -178,12 +178,13 @@ Text: {{Content}} - For consistent results (especially classification), set Temperature to 0 or near 0. - JSON output mode is more reliable when you provide a clear schema in your prompt. Always list the expected keys and their types. - If you are processing many records in a [Loop](../logic/loop-run), keep your prompts concise to reduce token usage and credit costs. -- Connect additional AI providers via Space → Settings → Integrations if the default models do not meet your needs. +- Connect additional AI providers via **Space → Settings → AI settings** if the default models do not meet your needs. For details, see [Custom AI Models](/en/basic/ai/custom-model). -Connect third-party AI models via **Space → Settings → Integrations**. +Connect third-party AI models via **Space → Settings → AI settings**. ## Related - [Loop (batch)](../logic/loop-run) — process multiple records with AI in a single automation run -- [AI script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for custom logic that goes beyond prompt-based generation -- [Create record](/en/basic/automation/actions/records/create-record) — store AI-generated data as new records +- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for custom logic that goes beyond prompt-based generation +- [Send email](/en/basic/automation/actions/communication/send-email-overview) +- [Update record](/en/basic/automation/actions/records/update-record) diff --git a/en/basic/automation/actions/ai/ai-script.mdx b/en/basic/automation/actions/ai/ai-script.mdx index 5318bc42..d221ad5c 100644 --- a/en/basic/automation/actions/ai/ai-script.mdx +++ b/en/basic/automation/actions/ai/ai-script.mdx @@ -4,7 +4,7 @@ description: "Describe what you need in plain language and let AI write the auto --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -24,8 +24,8 @@ Describe the goal once, and the workflow is ready — no manual setup needed. ## How to use - **Add a trigger** — choose a trigger type (e.g. "When Record Created") and configure it -- **Add an action** — click **+**, go to **Build with AI**, select **Run Script** -- **Open the editor** — in the configuration panel, click **Open Editor** +- **Add an action** — click **+**, go to **Build with AI**, select **Run script** +- **Edit manually** — in the configuration panel, click **Edit manually** - **Describe or pick** — choose a built-in suggestion, or type your own request in the AI panel on the right - **Apply** — AI generates the code and shows a visual flowchart on the left. Click **Apply** - **Test and enable** — click **Test** to run with real data, then **Enable** the workflow diff --git a/en/basic/automation/actions/communication/send-email-overview.mdx b/en/basic/automation/actions/communication/send-email-overview.mdx index e59e6a6e..a8119d99 100644 --- a/en/basic/automation/actions/communication/send-email-overview.mdx +++ b/en/basic/automation/actions/communication/send-email-overview.mdx @@ -4,7 +4,7 @@ description: "Send customized emails from a workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -17,7 +17,7 @@ AI handles everything: it picks the right trigger, chooses the appropriate actio Describe the goal once, and the workflow is ready — no manual setup needed. -This action sends an email to one or more recipients. You can customize every part of the email — recipients, subject, body, attachments — and use dynamic values from previous steps to personalize each message. +This action sends an email to one or more recipients. You can customize recipients, subject, body, and reply-to address, and use dynamic values from previous steps to personalize each message. By default, emails are sent from Teable's built-in mail service. If you need to send from your own domain, configure a [custom SMTP server](/en/basic/automation/actions/communication/smtp-sender). @@ -32,7 +32,6 @@ By default, emails are sent from Teable's built-in mail service. If you need to | CC | No | Carbon copy recipients | | BCC | No | Blind carbon copy recipients | | Reply-To | No | The address recipients reply to (if different from the sender) | -| Attachments | No | File attachments from previous steps or attachment fields | \* At least one of **To** or **BCC** is required. @@ -49,8 +48,7 @@ By default, emails are sent from Teable's built-in mail service. If you need to - **HTML** — for full control over formatting, write HTML tags directly. - **Dynamic variables** — click **+** anywhere in the body to insert values from previous steps. 5. (Optional) Set **Sender Name**, **CC**, **BCC**, or **Reply-To** as needed. -6. (Optional) Add **Attachments** by referencing attachment fields from previous steps. -7. Save the action. +6. Save the action. ## Using variables in subject and body @@ -82,16 +80,6 @@ Thank you for your purchase! You can mix Markdown and dynamic variables in the same body. For complex email designs, HTML gives you the most control. -## Attachment handling - -To include attachments: - -- Reference an **attachment field** from a previous step (e.g., a file uploaded to a record). -- The attachment is included as a file in the outgoing email. -- Multiple attachments are supported. - -Note that attachments increase email size. Large attachments may cause delivery issues depending on the recipient's mail server limits. - ## When to use - **Send order confirmations.** When a new order is created, send an email with the order details and a thank-you message. @@ -105,7 +93,6 @@ Note that attachments increase email size. Large attachments may cause delivery - **Use a custom SMTP** if you are sending high-volume or business-critical emails. Teable's built-in service works for basic notifications, but emails from your own domain are more likely to land in the recipient's inbox. - **Avoid spammy content** in your subject and body — excessive capitalization, exclamation marks, or link-heavy messages can trigger spam filters. - **Set a Reply-To address** so recipients can respond to a real inbox rather than a no-reply address. -- **Keep attachments small.** If you need to share large files, include a download link instead. - **Test your emails** before activating the automation in production. Run the automation manually with test data to verify formatting and delivery. ## Related diff --git a/en/basic/automation/actions/communication/send-email.mdx b/en/basic/automation/actions/communication/send-email.mdx index 980c55a2..0f658576 100644 --- a/en/basic/automation/actions/communication/send-email.mdx +++ b/en/basic/automation/actions/communication/send-email.mdx @@ -9,7 +9,7 @@ description: "Send customized emails from a workflow" Instead of configuring this action manually, you can describe what you need in the AI chat. Open your table's right sidebar, tell AI what you want, and it will set up the entire automation including this action. -This action sends an email to one or more recipients. You can customize every part of the email — recipients, subject, body, attachments — and use dynamic values from previous steps to personalize each message. +This action sends an email to one or more recipients. You can customize recipients, subject, body, and reply-to address, and use dynamic values from previous steps to personalize each message. By default, emails are sent from Teable's built-in mail service. If you need to send from your own domain, configure a [custom SMTP server](/en/basic/automation/actions/communication/smtp-sender). @@ -24,7 +24,6 @@ By default, emails are sent from Teable's built-in mail service. If you need to | CC | No | Carbon copy recipients | | BCC | No | Blind carbon copy recipients | | Reply-To | No | The address recipients reply to (if different from the sender) | -| Attachments | No | File attachments from previous steps or attachment fields | \* At least one of **To** or **BCC** is required. @@ -41,8 +40,7 @@ By default, emails are sent from Teable's built-in mail service. If you need to - **HTML** — for full control over formatting, write HTML tags directly. - **Dynamic variables** — click **+** anywhere in the body to insert values from previous steps. 5. (Optional) Set **Sender Name**, **CC**, **BCC**, or **Reply-To** as needed. -6. (Optional) Add **Attachments** by referencing attachment fields from previous steps. -7. Save the action. +6. Save the action. ## Using variables in subject and body @@ -74,16 +72,6 @@ Thank you for your purchase! You can mix Markdown and dynamic variables in the same body. For complex email designs, HTML gives you the most control. -## Attachment handling - -To include attachments: - -- Reference an **attachment field** from a previous step (e.g., a file uploaded to a record). -- The attachment is included as a file in the outgoing email. -- Multiple attachments are supported. - -Note that attachments increase email size. Large attachments may cause delivery issues depending on the recipient's mail server limits. - ## When to use - **Send order confirmations.** When a new order is created, send an email with the order details and a thank-you message. @@ -97,7 +85,6 @@ Note that attachments increase email size. Large attachments may cause delivery - **Use a custom SMTP** if you are sending high-volume or business-critical emails. Teable's built-in service works for basic notifications, but emails from your own domain are more likely to land in the recipient's inbox. - **Avoid spammy content** in your subject and body — excessive capitalization, exclamation marks, or link-heavy messages can trigger spam filters. - **Set a Reply-To address** so recipients can respond to a real inbox rather than a no-reply address. -- **Keep attachments small.** If you need to share large files, include a download link instead. - **Test your emails** before activating the automation in production. Run the automation manually with test data to verify formatting and delivery. ## Related diff --git a/en/basic/automation/actions/logic/http-request.mdx b/en/basic/automation/actions/logic/http-request.mdx index aed03ed1..39355c81 100644 --- a/en/basic/automation/actions/logic/http-request.mdx +++ b/en/basic/automation/actions/logic/http-request.mdx @@ -4,7 +4,7 @@ description: "Call any external API from a workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -130,4 +130,4 @@ This is useful for chaining API calls — for example, create something via POST - [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — make HTTP requests for each item in an array - [When webhook received](/en/basic/automation/trigger/external/webhook-received) — the inbound counterpart: receive HTTP requests from external systems -- [AI script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for more complex API interactions with custom code +- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for more complex API interactions with custom code diff --git a/en/basic/automation/actions/logic/loop-run.mdx b/en/basic/automation/actions/logic/loop-run.mdx index c1c0a7ef..882885b2 100644 --- a/en/basic/automation/actions/logic/loop-run.mdx +++ b/en/basic/automation/actions/logic/loop-run.mdx @@ -4,7 +4,7 @@ description: "Process multiple items in one action by iterating over an array" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -100,4 +100,4 @@ To use Array Body: - [Get records](/en/basic/automation/actions/records/get-records) — the most common source of arrays for Loop - [Create record](/en/basic/automation/actions/records/create-record) — commonly used inside a Loop to bulk-create records - [HTTP request](/en/basic/automation/actions/logic/http-request) — commonly used inside a Loop for per-item API calls -- [Send email](/en/basic/automation/actions/communication/send-email) — commonly used inside a Loop for bulk email sends +- [Send email](/en/basic/automation/actions/communication/send-email-overview) — commonly used inside a Loop for bulk email sends diff --git a/en/basic/automation/actions/manual/conditional-logic.mdx b/en/basic/automation/actions/manual/conditional-logic.mdx index 1d65eeab..5e9e4661 100644 --- a/en/basic/automation/actions/manual/conditional-logic.mdx +++ b/en/basic/automation/actions/manual/conditional-logic.mdx @@ -4,7 +4,7 @@ description: "Add if/else branching to control which actions run" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. diff --git a/en/basic/automation/actions/records/create-record.mdx b/en/basic/automation/actions/records/create-record.mdx index e6220ecb..090f9d71 100644 --- a/en/basic/automation/actions/records/create-record.mdx +++ b/en/basic/automation/actions/records/create-record.mdx @@ -4,7 +4,7 @@ description: "Create a new record in any table as part of a workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. diff --git a/en/basic/automation/actions/records/cross-base.mdx b/en/basic/automation/actions/records/cross-base.mdx index a83aa7cf..46640660 100644 --- a/en/basic/automation/actions/records/cross-base.mdx +++ b/en/basic/automation/actions/records/cross-base.mdx @@ -4,7 +4,7 @@ description: "Read and write data across different bases in a single workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. diff --git a/en/basic/automation/actions/records/get-records.mdx b/en/basic/automation/actions/records/get-records.mdx index 82bff97c..f8735bc5 100644 --- a/en/basic/automation/actions/records/get-records.mdx +++ b/en/basic/automation/actions/records/get-records.mdx @@ -4,7 +4,7 @@ description: "Retrieve records from a table with optional filters and pagination --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. @@ -49,7 +49,7 @@ The output is an **array of records**. Each record in the array contains: - **Reference a single record:** If you only expect one result (or want the first one), you can reference fields from the first record directly using the **+** variable picker. - **Loop through all records:** Add a [Loop (Batch)](../logic/loop-run) action after Get Records and select the results array as the data source. Inside the loop, reference each item's fields. -- **Process in a script:** Pass the array to an [Run Script](/en/basic/automation/ai/scripting/ai-script-guide) step for custom processing, filtering, or transformation. +- **Process in a script:** Pass the array to a [Run script](/en/basic/automation/ai/scripting/ai-script-guide) step for custom processing, filtering, or transformation. ## Pagination diff --git a/en/basic/automation/actions/records/update-record.mdx b/en/basic/automation/actions/records/update-record.mdx index db365ae9..11c17013 100644 --- a/en/basic/automation/actions/records/update-record.mdx +++ b/en/basic/automation/actions/records/update-record.mdx @@ -4,7 +4,7 @@ description: "Modify fields in an existing record as part of a workflow" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. diff --git a/en/basic/automation/ai-action.mdx b/en/basic/automation/ai-action.mdx index 54e946a0..45ef9584 100644 --- a/en/basic/automation/ai-action.mdx +++ b/en/basic/automation/ai-action.mdx @@ -55,4 +55,4 @@ Choose from specialized model types to match your task requirements: - In addition to Teable's native models, the platform supports [integration with third-party model APIs](/en/basic/ai/custom-model), configurable via Space → Settings. \ No newline at end of file + In addition to Teable's native models, the platform supports custom third-party model APIs. Configure them in **Space → Settings → AI settings**. For details, see [Custom AI Models](/en/basic/ai/custom-model). diff --git a/en/basic/automation/ai/scripting/ai-script-guide.mdx b/en/basic/automation/ai/scripting/ai-script-guide.mdx index 7c519ee7..a9c7279e 100644 --- a/en/basic/automation/ai/scripting/ai-script-guide.mdx +++ b/en/basic/automation/ai/scripting/ai-script-guide.mdx @@ -1,15 +1,15 @@ --- -title: "AI script guide" +title: "Run script guide" description: "Run custom JavaScript in a secure sandbox for logic that goes beyond built-in actions" --- -The Script action lets you write custom JavaScript to handle logic that built-in actions cannot cover. You can transform data, call external APIs, perform calculations, implement conditional branching, and more — all within a secure sandbox environment. +The Run script action lets you write custom JavaScript to handle logic that built-in actions cannot cover. You can transform data, call external APIs, perform calculations, implement conditional branching, and more — all within a secure sandbox environment. Scripts receive data from previous steps via the `input` object and pass results to subsequent steps via the `output.set()` function. -## When to use Script vs. built-in actions +## When to use Run script vs. built-in actions -| Scenario | Use built-in actions | Use Script | +| Scenario | Use built-in actions | Use Run script | |---|---|---| | Create, update, or get records | Yes | Only if you need complex logic around it | | Send a simple email | Yes | No | @@ -20,7 +20,7 @@ Scripts receive data from previous steps via the `input` object and pass results | Chain multiple API calls with logic | Awkward with built-in | Yes | | Implement business rules with many conditions | Not practical | Yes | -In general, use built-in actions when they fit your needs. Use Script when you need custom logic, data transformation, or complex API interaction. +In general, use built-in actions when they fit your needs. Use Run script when you need custom logic, data transformation, or complex API interaction. ## Environment @@ -33,7 +33,7 @@ In general, use built-in actions when they fit your needs. Use Script when you n ## How to set it up -1. Add an **AI Script** action to your workflow (found under Logic or AI in the action menu). +1. Add a **Run script** action to your workflow. 2. The script editor opens with a blank canvas. Write your JavaScript code here. 3. Your script can read data from previous steps using the `input` object (see below). 4. Use `output.set(key, value)` to pass results to subsequent steps. @@ -266,7 +266,7 @@ output.set("isVIP", vipDomains.includes(domain)); ## Tips - **Start with console.log.** When building a new script, log the entire `input` object first to understand its structure. -- **Keep scripts focused.** Do one thing well rather than cramming multiple tasks into one script. Chain multiple Script actions if needed. +- **Keep scripts focused.** Do one thing well rather than cramming multiple tasks into one script. Chain multiple Run script actions if needed. - **Mind the 60-second timeout.** Long-running operations (large data processing, many sequential API calls) can hit the timeout. Break large tasks into smaller chunks. - **Test with real data.** The test panel uses actual data from the most recent trigger execution, giving you realistic results. - **Handle missing data.** Use default values (`||` operator) for fields that might be empty or undefined. diff --git a/en/basic/automation/ai/scripting/sample-scripts.mdx b/en/basic/automation/ai/scripting/sample-scripts.mdx index 58be48ca..73ff5ff3 100644 --- a/en/basic/automation/ai/scripting/sample-scripts.mdx +++ b/en/basic/automation/ai/scripting/sample-scripts.mdx @@ -339,6 +339,6 @@ output.set("recordCount", records.length); ## Related -- [AI script guide](/en/basic/automation/ai/scripting/ai-script-guide) — full reference for the scripting environment +- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — full reference for the scripting environment - [HTTP request](/en/basic/automation/actions/logic/http-request) — for simple API calls without scripting - [Loop (batch)](/en/basic/automation/actions/logic/loop-run) — for iterating without code diff --git a/en/basic/automation/example.mdx b/en/basic/automation/example.mdx index a15287a7..a12e1acd 100644 --- a/en/basic/automation/example.mdx +++ b/en/basic/automation/example.mdx @@ -1,7 +1,10 @@ +--- title: "Example: Create Automation with JavaScript" description: "Create automation by calling Teable APIs" --- +This page is deprecated and no longer appears in the documentation navigation. It is kept only for old links. Please refer to the current example pages under Automation. + > Scenario: After an e-commerce order status changes from "Paid" to "Shipped", automatically notify a WeCom (WeChat Work) bot group so customer support and fulfillment stay in sync. ### Prerequisites @@ -233,4 +236,4 @@ main().catch((e) => { ### Related documentation -- [`Automation API reference`](/en/api-reference/automation/put-base-workflow-action) \ No newline at end of file +- [`Automation API reference`](/en/api-reference/automation/put-base-workflow-action) diff --git a/en/basic/automation/examples/api-automation.mdx b/en/basic/automation/examples/api-automation.mdx index adbd914f..0dab0ab0 100644 --- a/en/basic/automation/examples/api-automation.mdx +++ b/en/basic/automation/examples/api-automation.mdx @@ -21,7 +21,7 @@ AI will create the complete workflow automatically. You can review the generated ## Helper Functions ```javascript -const baseUrl = "https://app.teable.io/api"; +const baseUrl = "https://app.teable.ai/api"; const token = process.env.TEABLE_TOKEN; const baseId = "bserxxxxxx"; diff --git a/en/basic/automation/logic.mdx b/en/basic/automation/logic.mdx index 1d65eeab..5e9e4661 100644 --- a/en/basic/automation/logic.mdx +++ b/en/basic/automation/logic.mdx @@ -4,7 +4,7 @@ description: "Add if/else branching to control which actions run" --- -We strongly recommend using Run Script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. +We strongly recommend using Run script to build automations, because it can cover all action behaviors, including actions that would otherwise need to be built manually. Just describe your requirements to AI in chat. Please note: if you add actions manually, AI will not recognize or modify them later. diff --git a/en/basic/automation/trigger/email/email-received-overview.mdx b/en/basic/automation/trigger/email/email-received-overview.mdx index 1d235f34..f74a123b 100644 --- a/en/basic/automation/trigger/email/email-received-overview.mdx +++ b/en/basic/automation/trigger/email/email-received-overview.mdx @@ -110,3 +110,4 @@ You can reference any of these by clicking **+** in your action fields. - [Set up Gmail IMAP](/en/basic/automation/trigger/email/gmail-imap) — detailed instructions for connecting Gmail - [AI generate action](/en/basic/automation/actions/ai/ai-generate) — useful for extracting structured data from email content - [Create record action](/en/basic/automation/actions/records/create-record) — commonly paired with email triggers to log emails as records +- [Send email](/en/basic/automation/actions/communication/send-email-overview) diff --git a/en/basic/automation/trigger/external/scheduled-time.mdx b/en/basic/automation/trigger/external/scheduled-time.mdx index fcb2379b..47b6a1e9 100644 --- a/en/basic/automation/trigger/external/scheduled-time.mdx +++ b/en/basic/automation/trigger/external/scheduled-time.mdx @@ -93,5 +93,5 @@ After a one-time trigger fires, you will see the automation marked as inactive. ## Related - [Get records action](/en/basic/automation/actions/records/get-records) — typically the first step after a schedule trigger -- [Send email action](/en/basic/automation/actions/communication/send-email) — commonly paired with schedules for periodic notifications +- [Send email action](/en/basic/automation/actions/communication/send-email-overview) — commonly paired with schedules for periodic notifications - [Loop (batch) action](/en/basic/automation/actions/logic/loop-run) — useful for processing the array of records returned by Get Records diff --git a/en/basic/automation/trigger/external/webhook-received.mdx b/en/basic/automation/trigger/external/webhook-received.mdx index a9488a1a..21f1adde 100644 --- a/en/basic/automation/trigger/external/webhook-received.mdx +++ b/en/basic/automation/trigger/external/webhook-received.mdx @@ -125,5 +125,5 @@ Requests exceeding the rate limit will receive an HTTP 429 response. If your ext ## Related - [HTTP request action](/en/basic/automation/actions/logic/http-request) — the outbound counterpart: call external APIs from your workflow -- [AI script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for advanced webhook payload processing +- [Run script guide](/en/basic/automation/ai/scripting/ai-script-guide) — for advanced webhook payload processing - [Loop (batch) action](/en/basic/automation/actions/logic/loop-run) — process arrays in webhook payloads diff --git a/en/basic/automation/trigger/forms/button-click.mdx b/en/basic/automation/trigger/forms/button-click.mdx index 5bf32a36..66341644 100644 --- a/en/basic/automation/trigger/forms/button-click.mdx +++ b/en/basic/automation/trigger/forms/button-click.mdx @@ -74,3 +74,4 @@ This means you can use the row's data to populate emails, update other records, - [When form submitted](/en/basic/automation/trigger/forms/form-submitted) — fires on form submissions rather than button clicks - [When record updated](/en/basic/automation/trigger/records/record-updated) — fires automatically on field changes, no user action required - [Update record action](/en/basic/automation/actions/records/update-record) — commonly paired with button clicks to change the row's status +- [Send email](/en/basic/automation/actions/communication/send-email-overview) diff --git a/en/basic/automation/trigger/forms/form-submitted.mdx b/en/basic/automation/trigger/forms/form-submitted.mdx index 418bef04..15ab430f 100644 --- a/en/basic/automation/trigger/forms/form-submitted.mdx +++ b/en/basic/automation/trigger/forms/form-submitted.mdx @@ -71,4 +71,4 @@ It is important to understand that a form submission and a record creation are t - [When record created](/en/basic/automation/trigger/records/record-created) — fires on any new record, not just form submissions - [When button clicked](/en/basic/automation/trigger/forms/button-click) — fires when a user clicks a button field in an existing row -- [Send email action](/en/basic/automation/actions/communication/send-email) — commonly paired with form submissions for confirmations +- [Send email action](/en/basic/automation/actions/communication/send-email-overview) — commonly paired with form submissions for confirmations diff --git a/en/basic/automation/trigger/records/record-created.mdx b/en/basic/automation/trigger/records/record-created.mdx index 361f933f..48ddaffa 100644 --- a/en/basic/automation/trigger/records/record-created.mdx +++ b/en/basic/automation/trigger/records/record-created.mdx @@ -73,3 +73,4 @@ This is useful when you only want to act on a subset of new records — for exam - [When form submitted](/en/basic/automation/trigger/forms/form-submitted) — fires only for form submissions, not all record creation methods - [When record updated](/en/basic/automation/trigger/records/record-updated) — fires when existing records change - [Create record action](/en/basic/automation/actions/records/create-record) — the action counterpart for creating records in workflows +- [Send email](/en/basic/automation/actions/communication/send-email-overview) diff --git a/en/basic/automation/trigger/records/record-matches-conditions.mdx b/en/basic/automation/trigger/records/record-matches-conditions.mdx index d8cb6420..00af4245 100644 --- a/en/basic/automation/trigger/records/record-matches-conditions.mdx +++ b/en/basic/automation/trigger/records/record-matches-conditions.mdx @@ -71,3 +71,4 @@ Use **When Record Updated** when you need to react to any change. Use **When Rec - [When record updated](/en/basic/automation/trigger/records/record-updated) — fires on any field change, not just transitions - [When record created](/en/basic/automation/trigger/records/record-created) — fires when new records are added +- [Send email](/en/basic/automation/actions/communication/send-email-overview) diff --git a/en/basic/base.mdx b/en/basic/base.mdx index c046ca5f..008bfd9c 100644 --- a/en/basic/base.mdx +++ b/en/basic/base.mdx @@ -26,6 +26,16 @@ For users unfamiliar with bases, you can think of them as workbooks in Excel, wh 3. Click the "···" button to open the menu 4. Click "Delete" +### Organize Resources in a Base + +After entering a base, the left sidebar shows the resources in the current base, such as tables, apps, and automations. You can use folders to organize these resources and make large bases easier to browse. + +Common operations include: + +- **Create folders**: Create folders in the left sidebar to group related resources. +- **Move resources**: Drag tables, apps, or automations into folders, or drag them to reorder. +- **Organize hierarchy**: Folders can contain child nodes. Keep the hierarchy shallow enough for easy navigation. + ### Duplicate a Base to Another Space Step 1: In the workspace, select the base you want to move; @@ -80,6 +90,26 @@ Export your base to a `.tea` file for backup or migration purposes. The exported **Data Migration Tip**: To migrate data between Teable instances, export your base from the source instance, then import the `.tea` file to the target instance. All data and configurations will be preserved. +### Share a Base + +Bases can be shared through public links. The sharing scope can be the entire base or the currently selected item. + +1. Enter the target base +2. Open the share menu for the base or selected item +3. Turn on **Share to web** +4. Copy the share link or QR code + +Sharing scopes include: + +| Scope | Description | +|------|------| +| **Share entire base** | Shares all items in the current base. New tables and folders added later are automatically included. | +| **Share selected item** | Shares the currently selected item. When a folder is shared, its child items are included. | + +In the share settings, you can configure link permissions, **Allow viewers to copy data**, password access, regenerate the link, delete the share link, or copy the embed config. + +If the sharing scope includes an app, the app must be published before it can be accessed through the public link. + ### Features Within a Base A base can contain multiple tables for recording and organizing work or business-related information. diff --git a/en/basic/field.mdx b/en/basic/field.mdx index bf52c71a..3b988e5b 100644 --- a/en/basic/field.mdx +++ b/en/basic/field.mdx @@ -55,7 +55,7 @@ Users can edit fields when adding them or edit existing fields when needed. To e ### Hiding Fields -Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For more information about the table view toolbar, please visit the [View Toolbar](/en/basic/view/toolbar/filter) article. +Users can hide fields through the field right-click menu or the hide tool. Hidden fields will not be displayed in the table view. Users can control field visibility at any time using the hide tool. For filtering, sorting, grouping, and other toolbar capabilities, see [Filter](/en/basic/view/toolbar/filter), [Sort](/en/basic/view/toolbar/sort), and [Group](/en/basic/view/toolbar/group). In the hide tool, click a visible field name to scroll the grid to that column and briefly highlight it. Use the switch next to each field when you want to show or hide the field. diff --git a/en/basic/field/advanced/rollup.mdx b/en/basic/field/advanced/rollup.mdx index d2996ccc..c29c4116 100644 --- a/en/basic/field/advanced/rollup.mdx +++ b/en/basic/field/advanced/rollup.mdx @@ -54,8 +54,8 @@ In this table, we list the price of each book. In the Orders table, when we select certain books, the rollup field automatically calculates the total price of the selected books: -* For order 001, we selected "Code Complete" and "Design Patterns", priced at $60 and $40 respectively, so the total amount rollup field shows $100. -* For order 002, we selected "Refactoring" and "Design Patterns", priced at $50 and $40 respectively, so the total amount rollup field shows $90. +* For order 001, we selected "Code Complete" and "Design Patterns", priced at `$60` and `$40` respectively, so the total amount rollup field shows `$100`. +* For order 002, we selected "Refactoring" and "Design Patterns", priced at `$50` and `$40` respectively, so the total amount rollup field shows `$90`. Through this combination of link fields and rollup fields, we can easily automatically calculate the total amount for each order in the Orders table without manual input or calculation. diff --git a/en/basic/field/basic/attachment.mdx b/en/basic/field/basic/attachment.mdx new file mode 100644 index 00000000..29351864 --- /dev/null +++ b/en/basic/field/basic/attachment.mdx @@ -0,0 +1,62 @@ +--- +title: "Attachment" +description: "Store images, PDFs, documents, and other files in records, with support for preview, download, and batch download." +--- + +The **Attachment** field stores one or more files in a cell. Common use cases include contracts, images, invoices, design files, resumes, reports, or images generated by AI fields. + +## 1. Create an Attachment Field + +1. In a table, click `+` to add a field +2. Select the **Attachment** field type +3. Enter a field name, such as "Files", "Images", or "Contract attachments" +4. Click `Save` + +After creation, each record can upload one or more attachments in this field. + +## 2. Upload and View Attachments + +Attachment fields can store multiple file types, such as images, PDFs, documents, and archives. + +- **Upload files**: Click the attachment area in a cell or record detail, then select local files to upload. +- **Store multiple attachments**: One attachment cell can contain multiple files. +- **Preview files**: Images and some file types can be previewed in the cell or record detail. +- **Download a single attachment**: Open an attachment and download the corresponding file. + + +Attachment fields store files, not plain text. When converting a text field to an attachment field, the original text content cannot be converted into files automatically. Confirm whether the data needs to be backed up before converting the field. + + +## 3. Batch Download Attachments + +From the attachment field menu, you can batch-download attachments in the current field. + +Batch download creates a ZIP file and follows the current table search result scope: + +- If there is no active search, downloadable attachments in this attachment field are downloaded. +- If the table is searching and hiding non-matching rows, only attachments from matching records are downloaded. + +When downloading the ZIP, you can choose **Attachment name prefix**: + +| Prefix option | Description | +|------|------| +| **Default: attachment index** | Uses the system-generated attachment index as the prefix | +| **Select a field as prefix** | Uses the value of another field as the filename prefix | +| **No prefix** | Keeps the original filename where possible | + +If duplicate filenames appear in the ZIP, Teable automatically appends suffixes to keep filenames unique. + +## 4. Use with AI Fields + +AI fields can read attachments and save generated images to attachment fields. + +- **Read attachments**: In AI field settings, add the attachment field as an input field. Whether images or file contents can be recognized depends on the selected model. +- **Save images**: Set the AI field output to an attachment field. Generated images are saved to that attachment field. + +For more information, see [AI Field](/en/basic/field/ai/ai-field). + +## 5. Upload Attachments Through API + +The attachment upload API supports uploading local files or uploading files by URL, and appends new attachments to the end of the specified record's attachment field. + +See [Upload Attachment API](/en/api-doc/record/upload-attachment). diff --git a/en/basic/organization/sso.mdx b/en/basic/organization/sso.mdx index 12d68996..eb3d01c0 100644 --- a/en/basic/organization/sso.mdx +++ b/en/basic/organization/sso.mdx @@ -1,68 +1,11 @@ --- title: "Single Sign-On (SSO)" -description: "Integrate Single Sign-On (SSO) with support for standard OIDC and Feishu/Lark" +description: "Deprecated organization SSO page. See the current SSO overview." noindex: true --- -Available for Enterprise plan + +This organization SSO page is deprecated. The Enterprise plan is not currently offered. + - - Self-hosted requires declaring the `SSO_PROVIDER` environment variable to enable the corresponding SSO feature - - `SSO_PROVIDER` value of `oidc` will enable standard OIDC SSO - - - -Teable supports Single Sign-On (SSO) integration to help you manage user authentication through your existing identity providers. Currently, we support: - -* Standard OIDC (OpenID Connect) -* Feishu/Lark - -## Understanding OIDC Configuration - -When setting up OIDC integration, you'll need to configure the following parameters: - -- **Name**: A descriptive name for your SSO configuration -- **Client ID**: A unique identifier assigned by your identity provider -- **Client Secret**: A secret key used to authenticate your application -- **Authorization URL**: The endpoint where users are redirected to authenticate -- **Token URL**: The endpoint used to exchange the authorization code for access tokens -- **User Info URL**: The endpoint to retrieve authenticated user information -- **Issuer**: The URL that identifies your identity provider - -## Configuration Steps - -1. Configure your identity provider: - - Register your Teable application in your identity provider - - Set the callback URL to: `https://app.teable.ai/api/auth/authentication/__providerId__/callback` - - Obtain the Client ID and Client Secret - -2. Configure Teable: - - Navigate to **Admin Panel** → **Authentication Settings** - - Click "Create Authentication Provider" - - Fill in the configuration details from your identity provider - - After saving, you'll get a `providerId` - replace `__providerId__` in the callback URL with this value - - Update this final callback URL in your identity provider's configuration - -## Example: Configuring Authentik - -Here's a practical example using Authentik as your identity provider: - -1. In Authentik: - - Create a new OAuth2/OpenID Provider - - Initially set a temporary callback URL (you'll update this later) - - Note down the Client ID and Client Secret - -2. In Teable: - - Create a new authentication provider with: - ``` - Authorization URL: https://your-authentik-domain.com/application/o/authorize/ - Token URL: https://your-authentik-domain.com/application/o/token/ - User Info URL: https://your-authentik-domain.com/application/o/userinfo/ - Issuer: https://your-authentik-domain.com/application/o/teable/ - ``` - - After saving, note the generated `providerId` - - Update your Authentik configuration with the complete callback URL: `https://app.teable.ai/api/auth/authentication/YOUR_PROVIDER_ID/callback` - - -Remember to replace `your-authentik-domain.com` with your actual Authentik instance domain, and `YOUR_PROVIDER_ID` with the ID generated by Teable. The exact URLs may vary depending on your identity provider's configuration. - +For current SSO documentation, see [Single Sign-On (SSO)](/en/basic/sso/overview). diff --git a/en/basic/space.mdx b/en/basic/space.mdx index 6c002491..580659e4 100644 --- a/en/basic/space.mdx +++ b/en/basic/space.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Create, rename, delete, and manage spaces in Teable." --- ### Creating a New Space @@ -31,6 +32,18 @@ Deleted spaces will go to the trash, where you can choose to empty the trash to ![](/images/2025-02-14-14-34-22.png) +### Shared with Me + +When someone shares a base with you as a collaborator, the base appears under **Shared with me** in the space sidebar. + +Bases shared with you are different from bases in your own spaces: + +- Access is controlled by the sharer. +- Available actions depend on the base permission you were granted. +- If the sharer removes your access, the base no longer appears. + +For public base sharing, see [Base](/en/basic/base). + ### Space Settings * Click the "···" button in the upper right corner of the space to open the space menu @@ -48,8 +61,16 @@ In the Collaborators page, you can manage collaborators, send invitations, remov **AI settings** -In the AI settings page, space owners can configure custom model providers for AI features in the current space. +In the AI settings page, space owners can configure custom model providers for AI features in the current space. For configuration details, see [Custom AI models](/en/basic/ai/custom-model). + +**Plan** + +In the Plan page, you can view the plan capabilities available to the current space. **Billing (Cloud Version Only)** In the Billing page, you can view your current subscription plan and usage statistics. + +**Authentication** + +In the Authentication page, you can configure SSO providers for the space and manage **Login by URL** and **Login by Button**. See [Single Sign-On (SSO)](/en/basic/sso/overview). diff --git a/en/basic/space/billing.mdx b/en/basic/space/billing.mdx index 91ae49dd..ff72eb61 100644 --- a/en/basic/space/billing.mdx +++ b/en/basic/space/billing.mdx @@ -215,7 +215,7 @@ After cancellation: - Credits are allocated based on your billed seat count. When you add new billable collaborators, the seat count is updated at the start of the next billing cycle. Credits for new seats are allocated at that point on a prorated basis. + Credits are allocated based on your billed seat count. When you add new billable collaborators, the seat count is updated at the start of the next billing cycle. Credits for new seats are allocated at that point on a prorated basis. If credits are needed before then, add-on credits can be purchased for instant use. diff --git a/en/basic/sso/auth0.md b/en/basic/sso/auth0.mdx similarity index 96% rename from en/basic/sso/auth0.md rename to en/basic/sso/auth0.mdx index 0be55500..0e7315cd 100644 --- a/en/basic/sso/auth0.md +++ b/en/basic/sso/auth0.mdx @@ -44,7 +44,7 @@ Scroll down to the **Application URIs** section: 3. **Allowed Web Origins**: (Optional) `https://app.teable.ai` 4. Click **Save Changes** at the bottom of the page -> **Warning**: Make sure to save your changes before leaving the page. +Make sure to save your changes before leaving the page. ## Step 5: Configure OAuth Endpoints @@ -55,7 +55,7 @@ In Teable, fill in the following OAuth endpoints using your Auth0 domain: - **User Info URL**: `https://{yourDomain}/userinfo` - **Issuer**: `https://{yourDomain}/` -> **Note**: Replace `{yourDomain}` with your actual Auth0 domain from Step 4. +Replace `{yourDomain}` with your actual Auth0 domain from Step 4. ## Step 6: Configure Connections (Optional) diff --git a/en/basic/sso/authentik.md b/en/basic/sso/authentik.mdx similarity index 90% rename from en/basic/sso/authentik.md rename to en/basic/sso/authentik.mdx index 1ea11130..491e4a4d 100644 --- a/en/basic/sso/authentik.md +++ b/en/basic/sso/authentik.mdx @@ -34,8 +34,10 @@ description: "Configure Authentik as your SSO authentication provider for Teable ### Redirect URIs - **Redirect URIs/Origins (RegEx)**: Paste the **Callback URL** from Teable - - For exact match: `https://app.teable.ai/api/auth/callback/authentik` - - For regex pattern: `https://app\.teable\.ai/api/auth/callback/.*` + - For exact match: `https://app.teable.ai/api/auth/authentication/__providerId__/callback` + - For regex pattern: `https://app\.teable\.ai/api/auth/authentication/.*/callback` + +Replace `__providerId__` in the URL with the providerId shown after creating the authentication provider in Teable, or copy the callback URL directly from the Teable page. ### Advanced Settings @@ -56,7 +58,7 @@ After creating the provider: 2. Copy the **Client Secret** (this is shown only once during creation) 3. Paste both values into the Teable SSO configuration -> **Warning**: Store the Client Secret securely. You can regenerate it later if needed. +Store the Client Secret securely. You can regenerate it later if needed. ## Step 5: Create an Application @@ -80,7 +82,7 @@ In Teable, fill in the following OAuth endpoints using your Authentik domain: - **User Info URL**: `https://{your-authentik-domain}/application/o/userinfo/` - **Issuer**: `https://{your-authentik-domain}/application/o/{application-slug}/` -> **Note**: Replace `{your-authentik-domain}` with your actual Authentik instance domain and `{application-slug}` with the slug you configured (e.g., `teable`). +Replace `{your-authentik-domain}` with your actual Authentik instance domain and `{application-slug}` with the slug you configured (e.g., `teable`). ## Step 7: Configure Application Access @@ -191,4 +193,3 @@ You have two options to enable SSO login: 2. Review authentication events and errors 3. Set up notification rules for important events 4. Configure event retention policies in **System** → **Settings** - diff --git a/en/basic/sso/azure-entra-id.md b/en/basic/sso/azure-entra-id.mdx similarity index 96% rename from en/basic/sso/azure-entra-id.md rename to en/basic/sso/azure-entra-id.mdx index 8dcad9d1..5819c9d7 100644 --- a/en/basic/sso/azure-entra-id.md +++ b/en/basic/sso/azure-entra-id.mdx @@ -42,7 +42,7 @@ Fill in the following OAuth endpoints in Teable using your **Tenant ID**: - **User Info URL**: `https://graph.microsoft.com/oidc/userinfo` - **Issuer**: `https://login.microsoftonline.com/_YOUR_TENANT_ID_/v2.0` -> **Note**: Replace `_YOUR_TENANT_ID_` with your actual Azure Tenant ID. +Replace `_YOUR_TENANT_ID_` with your actual Azure Tenant ID. ## Step 4: Register a New Application @@ -123,7 +123,7 @@ Click **Register** to create the application. className="docs-screenshot" /> -> **Warning**: The secret value is only visible once. Make sure to save it immediately. +The secret value is only visible once. Make sure to save it immediately. ## Step 8: Configure API Permissions diff --git a/en/basic/sso/google-workspace.md b/en/basic/sso/google-workspace.mdx similarity index 97% rename from en/basic/sso/google-workspace.md rename to en/basic/sso/google-workspace.mdx index 86f1acec..c59099df 100644 --- a/en/basic/sso/google-workspace.md +++ b/en/basic/sso/google-workspace.mdx @@ -70,7 +70,7 @@ After creating the OAuth client, a dialog will appear with your credentials: 3. Click **OK** 4. Paste both values into the Teable SSO configuration -> **Note**: You can always retrieve these credentials later from the Credentials page. +You can always retrieve these credentials later from the Credentials page. ## Step 7: Configure OAuth Endpoints diff --git a/en/basic/sso/okta.md b/en/basic/sso/okta.mdx similarity index 93% rename from en/basic/sso/okta.md rename to en/basic/sso/okta.mdx index 7d30dbc7..7b09f6c2 100644 --- a/en/basic/sso/okta.md +++ b/en/basic/sso/okta.mdx @@ -43,7 +43,7 @@ After creating the application, you'll see the application details page: 2. Copy the **Client Secret** (click "Show" if needed) 3. Paste both values into the Teable SSO configuration -> **Warning**: Keep your Client Secret secure and never share it publicly. +Keep your Client Secret secure and never share it publicly. ## Step 6: Configure OAuth Endpoints @@ -54,7 +54,7 @@ In Teable, fill in the following OAuth endpoints: - **User Info URL**: `https://{yourOktaDomain}/oauth2/v1/userinfo` - **Issuer**: `https://{yourOktaDomain}` -> **Note**: Replace `{yourOktaDomain}` with your actual Okta domain (e.g., `dev-123456.okta.com` or `mycompany.okta.com`) +Replace `{yourOktaDomain}` with your actual Okta domain (e.g., `dev-123456.okta.com` or `mycompany.okta.com`) ## Step 7: Assign Users or Groups diff --git a/en/basic/sso/onelogin.md b/en/basic/sso/onelogin.mdx similarity index 94% rename from en/basic/sso/onelogin.md rename to en/basic/sso/onelogin.mdx index d9fa20c9..a0d3c603 100644 --- a/en/basic/sso/onelogin.md +++ b/en/basic/sso/onelogin.mdx @@ -52,7 +52,7 @@ Go to the **SSO** tab: 2. Find the **Client Secret** field and copy the value (you may need to click "Show" first) 3. Paste both values into the Teable SSO configuration -> **Warning**: Keep your Client Secret secure. You can regenerate it if needed from this page. +Keep your Client Secret secure. You can regenerate it if needed from this page. ## Step 6: Configure OAuth Endpoints @@ -63,7 +63,7 @@ In the **SSO** tab, you'll find your OneLogin subdomain. Use it to configure the - **User Info URL**: `https://{subdomain}.onelogin.com/oidc/2/me` - **Issuer**: `https://{subdomain}.onelogin.com/oidc/2` -> **Note**: Replace `{subdomain}` with your actual OneLogin subdomain (e.g., `mycompany.onelogin.com`). You can find this in your OneLogin portal URL. +Replace `{subdomain}` with your actual OneLogin subdomain (e.g., `mycompany.onelogin.com`). You can find this in your OneLogin portal URL. ## Step 7: Configure Application Access diff --git a/en/basic/sso/overview.md b/en/basic/sso/overview.mdx similarity index 87% rename from en/basic/sso/overview.md rename to en/basic/sso/overview.mdx index 66918478..a73692c2 100644 --- a/en/basic/sso/overview.md +++ b/en/basic/sso/overview.mdx @@ -1,13 +1,18 @@ --- title: "Single Sign-On (SSO)" -description: "Configure SSO authentication for your Teable workspace using OpenID Connect" +description: "Configure SSO for a Teable space." --- Available for Business plan and above ## Overview -Teable supports SSO authentication based on the **OpenID Connect (OIDC)** standard protocol. +In Teable Cloud, enter the target space: + +1. Click `···` in the upper-right corner of the space +2. Open **Space Settings** +3. Go to **Authentication** +4. Add or manage an SSO provider ## Supported Identity Providers diff --git a/en/basic/table.mdx b/en/basic/table.mdx index 09b6f5fd..86679006 100644 --- a/en/basic/table.mdx +++ b/en/basic/table.mdx @@ -1,5 +1,6 @@ --- title: "Overview" +description: "Create, import, share, and manage tables in a base." --- Each base can contain multiple tables. A table is a structured data storage method used to store collections of related data within a base. @@ -80,12 +81,26 @@ Detailed field properties ![](/images/2025-02-14-15-15-36.png) +### Share a Table + +In a table, click **Share** in the upper-right corner, switch to **Share table**, and turn on **Share to web** to generate a table share link. + +For table shares, you can configure these link permissions: + +- **Can view**: Anyone with the link can view table data. +- **Can edit**: Logged-in users can edit records in the shared table. +- **Can save as copy**: Anyone with the link can save a copy to their space. + +You can also configure **Allow viewers to copy data**, **Restrict by password**, regenerate the link, delete the share link, and copy the embed config. + +If you only need to share the current view, switch to **Share view**. For details, see [Share view](/en/basic/view/toolbar/share). + ### Ways to Access Tables Users can access tables in two ways on Teable Cloud: -* [Views](/en/basic/view) -* [API](/en/api-doc) +* [Grid view](/en/basic/view/grid) +* [API overview](/en/api-doc/overview) Views are the most intuitive of these methods. Users can search, manipulate, and build complex applications through various views. diff --git a/en/basic/table/export.mdx b/en/basic/table/export.mdx index c96f05b6..38b02e3f 100644 --- a/en/basic/table/export.mdx +++ b/en/basic/table/export.mdx @@ -2,17 +2,30 @@ title: "Export" --- -### Exporting Tables +## Basic operations -Teable supports data export functionality, allowing users to download table data in their preferred format for easy data synchronization and backup. +Teable supports two export scopes to fit different data export needs. -#### Supported Export Formats +- Format: CSV (Comma-Separated Values) -* CSV (Comma Separated Values) +### 1. Export an entire table (all data) -#### How to Export Your Table +Use table export when you need all raw data in the table, including hidden fields and records. -Click the icon next to the table and select "Download CSV". The downloaded file will be saved to your device's default download folder. +- **Steps**: + 1. In the left sidebar, hover over the target table name + 2. Click the `...` button that appears on the right + 3. Select **Download CSV** -![](/images/ji-ben-gong-neng/shu-ju-biao/84222f81e5165f12.png) +![](/images/2025-12-01-23-33-11.png) +### 2. Export a specific view (filtered data) + +Use view export when you only want to export the data currently shown in a view, such as "Orders this month" or "Completed tasks". + +- **Steps**: + 1. Switch to the target view, making sure the desired filters, sorting, or hidden fields are applied + 2. Click the `...` menu next to the view name, or the view settings button + 3. Select **Download CSV** + +![](/images/2025-12-01-23-34-44.png) diff --git a/en/basic/table/import.mdx b/en/basic/table/import.mdx index ca7deafa..fe9d0647 100644 --- a/en/basic/table/import.mdx +++ b/en/basic/table/import.mdx @@ -2,9 +2,11 @@ title: "Import" --- -Teable makes it easy to import data from CSV, TSV, and Excel files into tables. This article will guide you through the process of importing spreadsheet files into tables. +Teable makes it easy to import data from CSV and Excel files into tables. This article will guide you through the process of importing spreadsheet files into tables. -> Note: Excel files are currently limited to 5MB or less. For importing large amounts of data, please use CSV or TSV file formats. + +Excel files are limited to **5MB**. If you need to import a larger dataset, save it as **CSV** first and then import it. + ## Importing a New Table @@ -41,4 +43,3 @@ After uploading your file, select which columns should map to which fields in yo Step 3: Import Success ![](/images/ji-ben-gong-neng/shu-ju-biao/8c22b9e21ce63584.png) - diff --git a/en/basic/view/toolbar/share.mdx b/en/basic/view/toolbar/share.mdx index 9093a01e..af54fa7c 100644 --- a/en/basic/view/toolbar/share.mdx +++ b/en/basic/view/toolbar/share.mdx @@ -1,37 +1,88 @@ --- title: "Share" -description: "Publish the current view as a public link so external users can view or embed it." +description: "Publish the current view as a public link and configure copy, password, login, embed, and theme options." --- -## 1. Enable Sharing +**Share view** is used to publish the current view as a public link. Anyone with the link can access the data in this view, but cannot directly modify the original table records. -Click `Share` in the view toolbar and turn on `Publicly share this view to the web` to generate a share link. + +To share an entire base, a specific table, or a folder instead of only the current view, use base sharing in [Base](/en/basic/base). + -- Anyone who visits the share link gets read-only access and cannot directly edit the data. +## 1. Share View and Share Table -## 2. Settings +In the table share entry, the current table usually shows both **Share table** and **Share view**: -- `Allow copying view data`: Controls whether visitors can copy data. -- `Show all fields in expanded records`: This toggle is available only in Grid view. -- `Set access password`: Adds password protection to the link. -- `Require login to submit`: This appears only on share pages that support submission, mainly Form view. +| Share option | Use case | +|------|------| +| **Share table** | Share the current table when visitors need broader access to table content. | +| **Share view** | Share only the current view when you want to publish a filtered, sorted, grouped, hidden-field, or layout-specific result. | -## 3. Link and Embed +A view share link only allows access to the current view. If you later change the view configuration, such as filters, sorting, grouping, hidden fields, or layout, the shared link reflects those changes. -- `Copy link` -- `QR code` -- `Generate new link` -- `Embed` -- `Hide toolbar`: This toggle does not appear for Form view. -- `Theme`: Supports `System`, `Light`, and `Dark` +## 2. Enable Sharing + +1. Open the view you want to share +2. Click **Share** in the view toolbar +3. Switch to **Share view** +4. Turn on **Share view to web** +5. Copy the generated share link, or share the QR code + +If you do not have permission to share the view, the sharing switch is unavailable. + +After **Share view to web** is turned off, existing share links can no longer be accessed. + +## 3. Link Management + +After sharing is enabled, you can manage the link in the share panel: + +- **Copy link**: Copy the current share link. +- **QR code**: Generate a QR code for the current share link. +- **Generate new link**: Regenerate the share link. After generation, distribute the new link instead of continuing to use the old one. + + +Public links can be forwarded. Before enabling sharing, confirm that the current view does not include fields or records that should not be public. + + +## 4. Advanced Options + +Different view types show different advanced options. + +| Option | Applies to | Description | +|------|------|------| +| **Allow viewers to copy data out of this view** | Grid view | Controls whether visitors can copy data from the shared grid view. | +| **Show all fields in expanded records** | Grid view | Controls whether visitors can see fields hidden from the current view when opening record details. | +| **Restrict by password** | All view shares | Adds password protection to the share link. Visitors must enter the correct password before opening the share page. | +| **Require login to submit** | Form view | Requires visitors to log in before submitting the form. | + +## 5. Embed in Another Page + +Share views can be embedded in other webpages. Click **Embed config** to: + +- Preview the embed +- Copy iframe code +- Configure whether to hide the toolbar +- Configure the theme + +Example: -### Embed Code -If you need to embed the view in another webpage, you can use the generated iframe code directly: ```html - ``` + +### Hide Toolbar + +**Hide toolbar** adds `hideToolBar=true` to the link and hides the filter, sort, search, and other toolbar controls on the share page. This option does not apply to Form view. + +### Theme + +Theme is controlled through link parameters: + +- **System** +- **Light** +- **Dark** diff --git a/en/deploy/activate.mdx b/en/deploy/activate.mdx index 5ccccb96..6add49ff 100644 --- a/en/deploy/activate.mdx +++ b/en/deploy/activate.mdx @@ -119,7 +119,7 @@ If your **billable user count** exceeds the subscribed seats in a paid plan, usa **Billable users** are counted at the **instance level** and include users with **Editor** role or higher (Owner, Creator, Editor). Users with **Commenter** or **Viewer** (Read-only) roles are free and do not count towards your seat limit. -Administrators can disable "Allow everyone to create new spaces" in **Admin Panel** → **Settings** to prevent users from creating spaces that add billable collaborators. +Administrators can disable "Allow everyone to create new spaces" in **Admin Panel** → **Instance settings** to prevent users from creating spaces that add billable collaborators. diff --git a/en/deploy/dashboard.mdx b/en/deploy/dashboard.mdx index 2a5f0a3c..d88febd1 100644 --- a/en/deploy/dashboard.mdx +++ b/en/deploy/dashboard.mdx @@ -6,7 +6,7 @@ description: "How to enable the Standalone Dashboard feature for self-hosted dep The Standalone Dashboard feature has been replaced by App Builder. **We strongly recommend using App Builder to build more powerful, customizable dashboards for the best experience.** -**However, if you are unable to connect to the v0 service** to build dashboards, you can follow the configuration steps below to enable the Standalone Dashboard as an alternative. Please note that we currently have no plans to further develop this feature, and we appreciate your understanding. +If you still need to use the legacy Dashboard node, you can follow the configuration steps below to enable Standalone Dashboard. Please note that we currently have no plans to further develop this feature. ## Overview diff --git a/en/deploy/email.mdx b/en/deploy/email.mdx index 0e333f2d..e171d31e 100644 --- a/en/deploy/email.mdx +++ b/en/deploy/email.mdx @@ -23,25 +23,37 @@ Teable supports two ways to configure email service: The easiest way to configure email is through the Admin Panel: 1. Log in as an administrator (the first registered user) -2. Go to **Admin Panel** → **Settings** -3. Find the **Email Configuration** section -4. Click the **+** or **✏️** button to configure +2. Go to **Admin Panel** → **Instance settings** +3. Find the **Email** section +4. Configure **Notify email** and **Automation email** as needed The Admin Panel configuration supports **live testing** — you can verify your SMTP settings work before saving. +- **Notify email**: Used for user verification, password reset, invitations, system notifications, and similar emails. +- **Automation email**: Used as the default mail service for automation Send Email actions. A single Send Email action can also configure its own [custom SMTP server](/en/basic/automation/actions/communication/smtp-sender). + +### Configuration sources and priority + +We recommend configuring mail service in **Admin Panel → Instance settings → Email** first. The effective priority is: + +1. **Custom mail server inside the Send Email action**: Applies only to that specific Send Email action in the current automation. +2. **Admin Panel → Instance settings → Email → Automation email**: Used by automation emails when the Send Email action does not configure its own mail server. +3. **Admin Panel → Instance settings → Email → Notify email**: Used for user verification, password reset, invitations, system notifications, and similar emails. It is also used as the fallback for automation emails if Automation email is not configured. +4. **`BACKEND_MAIL_*` environment variables**: Deployment-level default mail configuration. Used only as a fallback when the corresponding mailbox is not configured in the Admin Panel. + ### Configuration Fields | Field | Description | Example | |-------|-------------|---------| -| SMTP Host | SMTP server address | `smtp.gmail.com` | +| Server address | SMTP server address | `smtp.gmail.com` | | Port | SMTP port | `465` (SSL) or `587` (TLS) | -| Secure | Use SSL/TLS | `true` | -| Sender Email | From address | `noreply@company.com` | -| Sender Name | Display name | `Teable Notification` | +| SSL/TLS | Whether to use SSL/TLS | `true` | | Username | SMTP authentication user | `noreply@company.com` | | Password | SMTP password or app password | `xxxxxxxxxxxxxx` | +| Sender address | From address | `noreply@company.com` | +| Sender name | Display name | `Teable Notification` | --- @@ -49,6 +61,10 @@ The Admin Panel configuration supports **live testing** — you can verify your For deployments where you prefer file-based configuration, use environment variables: + +We recommend configuring Notify email and Automation email in **Admin Panel → Instance settings → Email** first. Environment variables are mainly used as deployment-level defaults and fallback configuration. + + ```sh BACKEND_MAIL_HOST=smtp.example.com BACKEND_MAIL_PORT=465 diff --git a/en/deploy/env.mdx b/en/deploy/env.mdx index 2c83ef60..62d2fc39 100644 --- a/en/deploy/env.mdx +++ b/en/deploy/env.mdx @@ -11,13 +11,13 @@ Also ensure the public bucket is configured with **public-read + CORS**. See: [O | Environment Variable | Description | Default Value | Required | Example | | ----------------------------------------- | -------------------------------------------------------------------------- | --------------- | -------- | ------------------------------------------------- | -| Core Configuration | +| **Core Configuration** | | | | | | PUBLIC_ORIGIN | Public origin for generating complete URLs, must be set to your app's access address | - | Yes | https://app.teable.ai | | SECRET_KEY | Key for JWT, sessions, and sharing, use a strong password | defaultSecretKey | Yes | yourStrongSecretKey | | PORT | Port on which the application runs | 3000 | - | 3000 | | LOG_LEVEL | Log level, options: fatal, error, warn, info, debug, trace | info | - | debug | | NEXT_ENV_IMAGES_ALL_REMOTE | Whether to allow loading third-party images | false | - | true | -| Storage Configuration | +| **Storage Configuration** | | | | | | BACKEND_STORAGE_PROVIDER | Storage provider, options: local, minio, s3, aliyun | local | - | s3 | | BACKEND_STORAGE_LOCAL_PATH | Local storage path | .assets/uploads | - | .assets/uploads | | BACKEND_STORAGE_PUBLIC_BUCKET | Public bucket name | public | - | teable-public | @@ -40,12 +40,12 @@ Also ensure the public bucket is configured with **public-read + CORS**. See: [O | BACKEND_STORAGE_MINIO_REGION | MinIO region (optional) | - | - | us-east-1 | | BACKEND_STORAGE_UPLOAD_METHOD | Upload method | put | - | put | | STORAGE_PREFIX | Storage prefix, defaults to PUBLIC_ORIGIN | PUBLIC_ORIGIN | - | http://localhost:3000 | -| Cache Configuration | +| **Cache Configuration** | | | | | | BACKEND_CACHE_PROVIDER | Cache provider, options: sqlite, memory, redis | sqlite | - | redis | | BACKEND_CACHE_REDIS_URI | Redis cache connection URI, required when BACKEND_CACHE_PROVIDER is redis | - | - | redis://default:teable@127.0.0.1:6379/0 | -| Performance Cache Configuration | +| **Performance Cache Configuration** | | | | | | BACKEND_PERFORMANCE_CACHE | Performance cache Redis URL for query result caching, improves multi-user collaboration efficiency. Recommended to use separate Redis instance from BACKEND_CACHE_REDIS_URI | - | - | redis://default:teable@127.0.0.1:6379/0 | -| Authentication Configuration | +| **Authentication Configuration** | | | | | | SOCIAL_AUTH_PROVIDERS | List of social auth providers, comma-separated | - | - | github,google,oidc | | BACKEND_GITHUB_CLIENT_ID | GitHub OAuth client ID | - | - | github_client_id | | BACKEND_GITHUB_CLIENT_SECRET | GitHub OAuth client secret | - | - | github_client_secret | @@ -54,33 +54,36 @@ Also ensure the public bucket is configured with **public-read + CORS**. See: [O | BACKEND_OIDC_CLIENT_ID | OIDC client ID | - | - | google_client_id | | BACKEND_OIDC_CLIENT_SECRET | OIDC client secret | - | - | google_client_secret | | BACKEND_OIDC_CALLBACK_URL | OIDC callback URL | - | - | https://app.teable.ai/api/auth/oidc/callback | -| Security & Verification | +| **Security & Verification** | | | | | | TURNSTILE_SITE_KEY | Cloudflare Turnstile site key for authentication verification | - | - | 1x00000000000000000000AA | | TURNSTILE_SECRET_KEY | Cloudflare Turnstile secret key for authentication verification | - | - | 1x0000000000000000000000000000000AA | | BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | Rate limit interval (seconds) for sending signup verification emails | - | - | 30 | -| Email Configuration (Deprecated - Use Admin Panel Settings) | -| BACKEND_MAIL_HOST | **[DEPRECATED]** Email server host. Please use Admin Panel > Settings for visual email configuration | - | - | smtp.gmail.com | -| BACKEND_MAIL_PORT | **[DEPRECATED]** Email server port. Please use Admin Panel > Settings for visual email configuration | - | - | 465 | -| BACKEND_MAIL_AUTH_USER | **[DEPRECATED]** Email server authentication username. Please use Admin Panel > Settings for visual email configuration | - | - | username | -| BACKEND_MAIL_AUTH_PASS | **[DEPRECATED]** Email server authentication password. Please use Admin Panel > Settings for visual email configuration | - | - | usertoken | -| Session/JWT Configuration | +| **Email Configuration (Deprecated - Use Admin Panel > Instance settings > Email)** | | | | | +| BACKEND_MAIL_HOST | Default mail server address. We recommend configuring Notify email and Automation email visually in Admin Panel > Instance settings > Email | smtp.teable.ai | - | smtp.gmail.com | +| BACKEND_MAIL_PORT | Default mail server port | 465 | - | 465 | +| BACKEND_MAIL_SECURE | Whether the default mail service uses SSL/TLS | true | - | true | +| BACKEND_MAIL_SENDER | Default sender address | noreply.teable.ai | - | noreply@company.com | +| BACKEND_MAIL_SENDER_NAME | Default sender name | Teable | - | Teable | +| BACKEND_MAIL_AUTH_USER | Default mail server authentication username | - | - | username | +| BACKEND_MAIL_AUTH_PASS | Default mail server authentication password | - | - | usertoken | +| **Session/JWT Configuration** | | | | | | BACKEND_SESSION_EXPIRES_IN | Session expiration time | 7d | - | 7d | | BACKEND_SESSION_COOKIE_SECURE | Whether to secure session cookie | false | - | true | | BACKEND_JWT_EXPIRES_IN | JWT expiration time | 20d | - | 20d | | BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | Reset password email expiration time | 30m | - | 30m | -| Resource Limits | +| **Resource Limits** | | | | | | MAX_COPY_CELLS | Maximum number of cells to copy in a single request | - | - | 50000 | | MAX_READ_ROWS | Maximum number of rows to read in a single request | - | - | 10000 | | MAX_ATTACHMENT_UPLOAD_SIZE | Maximum attachment upload size (bytes) | - | - | 2147483648 | | MAX_SPACE_OWNER_COUNT | Maximum number of spaces a user can own | 10 | - | 10 | -| Feature Toggles | +| **Feature Toggles** | | | | | | RECORD_HISTORY_DISABLED | Whether to disable record history, defaults to false | false | - | true | | PASSWORD_LOGIN_DISABLED | Whether to disable password login (OAuth and OIDC still available) | false | - | true | -| Analytics & Monitoring | +| **Analytics & Monitoring** | | | | | | MICROSOFT_CLARITY_ID | Microsoft Clarity metrics ID, for enabling Microsoft Clarity analytics | - | - | your-metrics-id | | OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry OTLP endpoint | - | - | http://jaeger:4317 | | TELEMETRY_REPORT_DISABLED | Disable self-hosted telemetry reporting, including license compliance reports from connected instances | false | - | true | -| Database Configuration | +| **Database Configuration** | | | | | | PRISMA_DATABASE_URL | Database connection URL, must be configured | - | Yes | postgresql://teable:teable@127.0.0.1:5432/teable | | PRISMA_TRANSACTION_TIMEOUT | Maximum time (ms) a transaction can run before timing out. Increase for long-running transactions (e.g., bulk updates with many foreign keys) | 5000 | - | 60000 | | PRISMA_TRANSACTION_MAX_WAIT | Maximum time (ms) to wait to acquire a transaction from the pool | 2000 | - | 5000 | diff --git a/en/deploy/oidc.mdx b/en/deploy/oidc.mdx index 0c6b63c2..5bf0ef34 100644 --- a/en/deploy/oidc.mdx +++ b/en/deploy/oidc.mdx @@ -22,7 +22,7 @@ BACKEND_OIDC_USER_INFO_URL=https://your-idp.com/userinfo BACKEND_OIDC_ISSUER=https://your-idp.com # Additional Options -BACKEND_OIDC_OTHER={"scope": ["email", "profile"]} +BACKEND_OIDC_OTHER={"scope":["email","profile"]} # Enable OIDC as auth provider SOCIAL_AUTH_PROVIDERS=oidc @@ -42,39 +42,6 @@ SOCIAL_AUTH_PROVIDERS=oidc | `BACKEND_OIDC_OTHER` | Additional options in JSON format (e.g., scopes) | | `SOCIAL_AUTH_PROVIDERS` | Include `oidc` to enable OIDC login button | ---- - -## Identity Provider Setup Guides - - -The linked guides show Admin Panel SSO configuration for **Cloud users' single space**. - -For **self-hosted deployments**, use these guides to set up your IdP application and obtain the required parameters, then configure them using the environment variables above for **instance-wide global authentication**. - - - - - Microsoft Azure AD / Entra ID - - - Okta identity platform - - - Auth0 identity platform - - - Google Workspace accounts - - - OneLogin identity management - - - Authentik open-source IdP - - - ---- - ## Enabling Multiple Auth Providers You can enable multiple authentication methods: diff --git a/zh/api-doc/record/create.mdx b/zh/api-doc/record/create.mdx index 3aa818d5..aaa6c99a 100644 --- a/zh/api-doc/record/create.mdx +++ b/zh/api-doc/record/create.mdx @@ -21,14 +21,14 @@ POST /api/table/\{tableId}/record ```json [ { - fields: { + "fields": { "Name": "John Doe", "Age": 30, "Email": "john@example.com" } }, { - fields: { + "fields": { "Name": "Jane Smith", "Age": 28, "Email": "jane@example.com" @@ -50,7 +50,7 @@ POST /api/table/\{tableId}/record * 当设置为 "name" 时: ```json { - fields: { + "fields": { "Name": "John Doe", "Age": 30 } @@ -59,7 +59,7 @@ POST /api/table/\{tableId}/record * 当设置为 "id" 时: ```json { - fields: { + "fields": { "fldABCDEFGHIJKLMN": "John Doe", "fldOPQRSTUVWXYZ12": 30 } @@ -112,9 +112,9 @@ POST /api/table/\{tableId}/record * 完整示例: ```json { - viewId: "viwABCDEFGHIJKLMN", - anchorId: "rec123456789ABCDE", - position: "after" + "viewId": "viwABCDEFGHIJKLMN", + "anchorId": "rec123456789ABCDE", + "position": "after" } ``` * 说明:使用 order 可以精确控制新记录在特定视图中的位置。 @@ -239,4 +239,3 @@ POST /api/table/\{tableId}/record print(response.json()) ``` - diff --git a/zh/api-doc/record/update.mdx b/zh/api-doc/record/update.mdx index fa53a0b1..522a9953 100644 --- a/zh/api-doc/record/update.mdx +++ b/zh/api-doc/record/update.mdx @@ -45,7 +45,7 @@ PATCH /api/table/\{tableId}/record/\{recordId} * 当设置为 "name" 时: ```json { - fields: { + "fields": { "Name": "John Doe", "Age": 30 } @@ -54,7 +54,7 @@ PATCH /api/table/\{tableId}/record/\{recordId} * 当设置为 "id" 时: ```json { - fields: { + "fields": { "fldABCDEFGHIJKLMN": "John Doe", "fldOPQRSTUVWXYZ12": 30 } @@ -88,6 +88,22 @@ PATCH /api/table/\{tableId}/record/\{recordId} 如果需要上传新文件到附件字段,请参阅[上传附件](/zh/api-doc/record/upload-attachment)章节 +* **order(可选)** + * 描述:更新记录后,将该记录移动到指定视图中的指定位置。 + * 类型:对象 + * 包含以下属性: + * viewId:视图 ID + * anchorId:锚点记录 ID + * position:相对于锚点记录的位置,可选值为 `"before"` 或 `"after"` + * 示例: + ```json + { + "viewId": "viwABCDEFGHIJKLMN", + "anchorId": "rec123456789ABCDE", + "position": "after" + } + ``` + ### 响应 #### 成功响应 @@ -191,4 +207,3 @@ PATCH /api/table/\{tableId}/record/\{recordId} print(response.json()) ``` - diff --git a/zh/basic/admin-panel/ai-setting.mdx b/zh/basic/admin-panel/ai-setting.mdx index f0d8df01..f851c31e 100644 --- a/zh/basic/admin-panel/ai-setting.mdx +++ b/zh/basic/admin-panel/ai-setting.mdx @@ -5,13 +5,13 @@ description: "为私有化部署实例配置 AI Chat、AI 字段、AI 自动化 私有化部署商业版及以上适用 -路径:管理面板 → AI 设置 +路径:管理面板 → AI 配置 -**AI 设置** 页用于配置 **AI 对话**、**AI 字段**、**AI 自动化** 和 **应用构建器**。右侧的 **待配置项** 会提示当前还缺少哪些关键配置,建议按顺序逐项完成。 +**AI 配置** 页用于配置 **AI 对话**、**AI 字段**、**AI 自动化** 和 **应用构建器**。右侧的 **待配置项** 会提示当前还缺少哪些关键配置,建议按顺序逐项完成。 ## 开始前的准备 -在进入 AI 设置页之前,先确认下面这些准备项已经就绪。**AI 聊天运行环境** 和 **应用构建器** 都依赖 Vercel。 +在进入 AI 配置页之前,先确认下面这些准备项已经就绪。**AI 聊天运行环境** 和 **应用构建器** 都依赖 Vercel。 只需要一个 Vercel 账户,就可以完成这些配置。 diff --git a/zh/basic/admin-panel/automation-management.mdx b/zh/basic/admin-panel/automation-management.mdx new file mode 100644 index 00000000..e8708833 --- /dev/null +++ b/zh/basic/admin-panel/automation-management.mdx @@ -0,0 +1,62 @@ +--- +title: "自动化管理" +description: "在管理员后台查看自动化的运行状态、成功率和运行历史。" +--- + +私有化部署商业版及以上适用 + +路径:管理面板 → 自动化管理 + +**自动化管理** 用于查看实例内自动化的运行状态。 + +## 一、 总览指标 + +页面顶部展示所选时间范围内的整体状态: + +| 指标 | 说明 | +|------|------| +| **活跃的自动化** | 当前仍处于启用状态的自动化数量 | +| **总运行次数** | 所选时间范围内的运行总数 | +| **成功率** | 成功运行占全部运行的比例 | +| **失败运行** | 所选时间范围内失败的运行数量 | +| **健康概览** | 按正常、警告、严重等状态展示自动化健康情况 | +| **运行状态分布** | 按成功、失败、处理中、等待、已取消等运行状态展示分布 | + +## 二、 筛选范围 + +主页面可以通过筛选器调整显示范围: + +- **日期范围**:最近 30 分钟、1 小时、6 小时、1 天、3 天、7 天或 30 天。 +- **触发器**:按触发器类型筛选对应自动化。 + +## 三、 自动化列表 + +列表中可以查看每个自动化的运行摘要: + +- 最后运行时间 +- 总运行次数 +- 平均耗时 +- 当前健康状态 +- 是否需要关注 + +如果自动化已停用,列表会显示为 **已停用**。 + +## 四、 运行记录 + +打开某个自动化后,可以查看 **运行历史**: + +| 字段 | 说明 | +|------|------| +| **状态** | 本次运行是成功、失败、处理中、等待还是已取消 | +| **开始时间** | 本次运行开始的时间 | +| **时长** | 本次运行耗时 | +| **错误** | 失败时显示错误信息 | + +运行历史支持按状态筛选成功、失败、处理中、等待或已取消的运行。 + +## 五、 管理操作 + +自动化列表中可以执行: + +- **停用**:停止该自动化继续触发。 +- **标记删除**:将自动化标记为待删除状态。 diff --git a/zh/basic/admin-panel/multitenancy.mdx b/zh/basic/admin-panel/multitenancy.mdx index 9f5fce57..97fe38bf 100644 --- a/zh/basic/admin-panel/multitenancy.mdx +++ b/zh/basic/admin-panel/multitenancy.mdx @@ -80,7 +80,3 @@ Teable 实例 ├── 市场部门组织 └── 销售部门组织 ``` - - -组织管理功能需要企业版许可证支持。如需升级许可证,请访问许可证管理页面。 - diff --git a/zh/basic/admin-panel/overview.mdx b/zh/basic/admin-panel/overview.mdx index 6cb9f7a2..7e8cc724 100644 --- a/zh/basic/admin-panel/overview.mdx +++ b/zh/basic/admin-panel/overview.mdx @@ -1,11 +1,11 @@ --- title: "概述" -description: "Teable 私有化部署企业版的管理员后台,用于管理实例的用户、空间和系统配置。" +description: "Teable 私有化部署的管理员后台,用于管理实例的用户、空间和系统配置。" --- 私有化部署商业版及以上适用 -管理员后台提供对 Teable 实例的集中管理。作为管理员,您可以管理用户管理、空间管理、模板管理、实例设置和 AI 设置。 +管理员后台提供对 Teable 实例的集中管理。管理员可以在这里管理用户、空间、模板、实例设置和 AI 配置。 ### 访问管理后台 @@ -19,9 +19,12 @@ description: "Teable 私有化部署企业版的管理员后台,用于管理 - **[用户管理](/zh/basic/admin-panel/users)** - 管理用户账户、权限和访问 - **[空间管理](/zh/basic/admin-panel/spaces)** - 管理空间和自动加入设置 +- **[自托管许可证](/zh/deploy/activate)** - 注册、更新和查看当前实例许可证 - **[模板管理](/zh/basic/admin-panel/template-admin)** - 配置模板中心和自定义模板 - **[实例设置](/zh/basic/admin-panel/settings)** - 配置系统级设置和权限 -- **[AI 设置](/zh/basic/admin-panel/ai-setting)** - 配置 AI 功能和模型 +- **[AI 配置](/zh/basic/admin-panel/ai-setting)** - 配置 AI 功能和模型 +- **[自动化管理](/zh/basic/admin-panel/automation-management)** - 查看自动化运行状态和历史记录 +- **[沙箱 Agent](/zh/basic/admin-panel/sandbox-agent)** - 配置沙箱 Agent 运行限制和基础快照 ### 管理员权限 diff --git a/zh/basic/admin-panel/sandbox-agent.mdx b/zh/basic/admin-panel/sandbox-agent.mdx new file mode 100644 index 00000000..ee0c8ea5 --- /dev/null +++ b/zh/basic/admin-panel/sandbox-agent.mdx @@ -0,0 +1,47 @@ +--- +title: "沙箱 Agent" +description: "配置沙箱 Agent 的启用范围、运行限制和基础快照。" +--- + +私有化部署商业版及以上适用 + +路径:管理面板 → 沙箱 Agent + +**沙箱 Agent** 页面包含 **设置** 和 **沙箱** 两个页签,用于配置 AI 对话的沙箱运行方式。 + +## 一、启用范围 + +在 **设置** 页签中: + +1. 打开 **启用沙箱 Agent**。 +2. 在 **已启用的空间** 中配置可使用沙箱 Agent 的空间。 +3. 如需对全部空间启用,可使用 **对所有空间启用**。 + +## 二、运行限制 + +在 **设置** 页签中配置运行限制: + +| 设置 | 说明 | +|------|------| +| **模型** | 配置每个 Agent 类型可选的模型列表 | +| **流式空闲超时** | 设置流式空闲后的终止时间 | +| **空闲超时** | 设置沙箱无活动后的回收时间 | +| **同时聊天上限** | 设置每个用户可同时运行的 AI 聊天数量 | +| **vCPU 数量** | 设置每个沙箱实例的 vCPU 数量 | +| **思考深度** | 设置 Agent 默认思考深度 | + +配置完成后点击 **保存**。 + +## 三、基础快照 + +在 **基础快照** 区域创建和管理快照。 + +- 使用 **快速设置** 按向导完成 **导入技能**、**Chat 快照** 和 **App Builder 快照**。 +- 使用 **创建快照** 自定义 Agent SDK、系统工具、Skills 和自定义 apt 包。 +- 快照状态为 **就绪** 后,可将其设为 **活跃**。 + +## 四、沙箱页签 + +在 **沙箱** 页签中查看活跃沙箱和会话历史。 + +列表中可查看沙箱 ID、提供商、状态、运行时间和最后活动时间。必要时可按页面提示销毁沙箱。 diff --git a/zh/basic/ai/overview.mdx b/zh/basic/ai/overview.mdx index 7b0ba1d0..07dcf3bf 100644 --- a/zh/basic/ai/overview.mdx +++ b/zh/basic/ai/overview.mdx @@ -15,10 +15,10 @@ Teable 在整个平台中集成了强大的 AI 能力,帮助您更智能地处 使用 AI 驱动的字段自动生成、总结、翻译和提取数据信息。 - + 将 AI 处理集成到自动化工作流中,实现智能数据处理。 - + 编写自定义 AI 驱动的脚本,扩展自动化能力。 @@ -42,8 +42,8 @@ Teable 在整个平台中集成了强大的 AI 能力,帮助您更智能地处 ## 开始使用 -1. **启用 AI**(仅限私有部署)- Teable Cloud 内置 AI 可直接使用。私有部署用户需先完成 [AI 配置](/zh/basic/admin-panel/ai-setting);如需接入自己的模型,可继续参考 [自定义 AI 模型](/zh/basic/ai/custom-model)。 +1. **启用 AI**(仅限私有部署)- Teable 内置 AI 可直接使用。私有部署用户需先完成 [AI 配置](/zh/basic/admin-panel/ai-setting);如需接入自己的模型,可继续参考 [自定义 AI 模型](/zh/basic/ai/custom-model)。 2. **使用 AI Chat** - 询问有关数据的问题或生成图表 3. **构建应用** - 通过简单的提示词将数据库转化为 Web 应用 4. **创建 AI 字段** - 添加 AI 驱动的字段来自动处理数据 -5. **构建自动化** - 在工作流中使用 AI 动作进行智能处理 +5. **构建自动化** - 在工作流中使用 AI 生成和运行脚本操作 diff --git a/zh/basic/automation/action.mdx b/zh/basic/automation/action.mdx index ab6fd096..298b78e6 100644 --- a/zh/basic/automation/action.mdx +++ b/zh/basic/automation/action.mdx @@ -2,6 +2,8 @@ title: "动作" --- +此页面已弃用,且不再出现在文档目录中;内容仅保留给旧链接访问。请改用自动化目录下的具体动作页面。 + 动作定义了触发器被激活后要执行的具体操作。Teable 提供了多种动作类型,让您能够实现各种自动化需求。以下是详细的动作配置说明: ### 1. 创建记录 @@ -251,4 +253,3 @@ Teable 的自动化功能支持跨数据库访问记录,这大大增强了自 * 批量验证信息 通过灵活组合这些动作,您可以构建复杂的自动化工作流,大大提高工作效率和数据处理的准确性。 - diff --git a/zh/basic/automation/actions/ai/ai-generate.mdx b/zh/basic/automation/actions/ai/ai-generate.mdx index c63e204f..9a9ea732 100644 --- a/zh/basic/automation/actions/ai/ai-generate.mdx +++ b/zh/basic/automation/actions/ai/ai-generate.mdx @@ -166,13 +166,13 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, - AI 生成的结果可能不完全准确,建议在关键业务场景中增加人工审核环节。 - 提示词越具体、上下文越充分,AI 的输出质量越高。 - JSON 输出模式下,如果 AI 返回的 JSON 格式不正确,后续引用字段时可能获取不到值。建议在提示词中提供明确的格式说明和示例。 -- 通过**空间 → 设置 → AI 设置**可以连接第三方 AI 模型(如 OpenAI、Azure OpenAI 等)。 +- 通过**空间 → 设置 → AI 配置**可以连接第三方 AI 模型(如 OpenAI、Azure OpenAI 等)。详细步骤请参考[自定义 AI 模型](/zh/basic/ai/custom-model)。 -通过**空间 → 设置 → AI 设置**连接第三方 AI 模型。 +通过**空间 → 设置 → AI 配置**连接第三方 AI 模型。 ## 相关文档 - [循环执行](/zh/basic/automation/actions/logic/loop-run) -- [AI 脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [更新记录](/zh/basic/automation/actions/records/update-record) diff --git a/zh/basic/automation/actions/ai/ai-script.mdx b/zh/basic/automation/actions/ai/ai-script.mdx index 040e4d3e..0dcbb178 100644 --- a/zh/basic/automation/actions/ai/ai-script.mdx +++ b/zh/basic/automation/actions/ai/ai-script.mdx @@ -11,7 +11,7 @@ description: "用自然语言描述需求,AI 自动生成自动化脚本" 自动化操作的最强方式。描述你的需求,AI 编写代码。无需编程经验。 -## 用 AI 创建 +## 使用 AI 构建 打开表格右侧边栏的 AI 对话,描述你的需求。 @@ -24,8 +24,8 @@ AI 会为你处理一切:创建触发器,编写脚本,映射字段,自 ## 如何使用 - **添加触发器** — 选择触发类型(如"记录创建时")并配置 -- **添加操作** — 点击 **+**,进入 **用 AI 创建**,选择 **运行脚本** -- **打开编辑器** — 在配置面板中点击 **打开编辑器** +- **添加操作** — 点击 **+**,进入 **使用 AI 构建**,选择 **运行脚本** +- **手动编辑** — 在配置面板中点击 **手动编辑** - **描述或选择** — 从内置建议中选择,或在右侧 AI 面板中输入你的需求 - **应用** — AI 生成代码并在左侧展示流程图,点击 **应用** - **测试并启用** — 点击 **测试** 用真实数据运行,然后 **启用** 工作流 diff --git a/zh/basic/automation/actions/communication/send-email-overview.mdx b/zh/basic/automation/actions/communication/send-email-overview.mdx index d05c271e..760f4981 100644 --- a/zh/basic/automation/actions/communication/send-email-overview.mdx +++ b/zh/basic/automation/actions/communication/send-email-overview.mdx @@ -17,7 +17,7 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, 只需描述一次目标,工作流即刻就绪,无需手动配置。 -此操作向一个或多个收件人发送邮件。你可以自定义邮件的每个部分 — 收件人、主题、正文、附件 — 并使用前序步骤中的动态变量来个性化每条消息。 +此操作向一个或多个收件人发送邮件。你可以自定义收件人、主题、正文和回复地址,并使用前序步骤中的动态变量来个性化每条消息。 默认使用 Teable 内置邮件服务发送。如需从自己的域名发送,请配置[自定义 SMTP 服务器](/zh/basic/automation/actions/communication/smtp-sender)。 @@ -32,7 +32,6 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, | 抄送(CC) | 否 | 抄送收件人 | | 密送(BCC) | 否 | 密送收件人 | | 回复地址(Reply-To) | 否 | 收件人回复时使用的地址(如果与发件人不同) | -| 附件(Attachments) | 否 | 来自前序步骤或附件字段的文件附件 | \* **收件人**和**密送**至少填写一项。 @@ -49,8 +48,7 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, - **HTML** — 直接编写 HTML 标签,完全控制格式。 - **动态变量** — 在正文任意位置点击 **+** 插入前序步骤中的值。 5. (可选)根据需要设置**发件人姓名**、**抄送**、**密送**或**回复地址**。 -6. (可选)通过引用前序步骤中的附件字段来添加**附件**。 -7. 保存操作。 +6. 保存操作。 ## 在主题和正文中使用变量 @@ -82,16 +80,6 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, 你可以在同一正文中混合使用 Markdown 和动态变量。对于复杂的邮件设计,HTML 提供最大的灵活性。 -## 附件处理 - -要包含附件: - -- 引用前序步骤中的**附件字段**(例如上传到记录中的文件)。 -- 附件将作为文件包含在发出的邮件中。 -- 支持多个附件。 - -请注意,附件会增加邮件大小。较大的附件可能会因收件方邮件服务器的限制而导致投递问题。 - ## 适用场景 - **发送订单确认。** 新订单创建时,自动发送包含订单详情和感谢信息的邮件。 @@ -105,7 +93,6 @@ AI 会为你处理一切:选择合适的触发器和操作,映射字段, - **使用自定义 SMTP**:如果发送高频量或业务关键邮件,建议使用自定义 SMTP。Teable 内置服务适合基本通知,但从您自己的域名发送的邮件更容易到达收件人的收件箱。 - **避免垃圾邮件风格的内容**:主题和正文中避免过多大写字母、感叹号或大量链接,这些可能触发垃圾邮件过滤器。 - **设置回复地址**:让收件人可以回复到真实的收件箱,而不是无回复地址。 -- **控制附件大小。** 如需共享大文件,请改为包含下载链接。 - **正式启用前测试邮件**:使用测试数据手动运行自动化,验证格式和投递情况。 ## 相关文档 diff --git a/zh/basic/automation/actions/communication/send-email.mdx b/zh/basic/automation/actions/communication/send-email.mdx index c19695c5..e08ac2fa 100644 --- a/zh/basic/automation/actions/communication/send-email.mdx +++ b/zh/basic/automation/actions/communication/send-email.mdx @@ -9,7 +9,7 @@ description: "在工作流中发送自定义邮件" 你也可以不手动配置,直接在表格右侧边栏的 AI 对话中描述需求,AI 会为你搭建包含此操作的完整自动化。 -此操作向一个或多个收件人发送邮件。你可以自定义邮件的每个部分 — 收件人、主题、正文、附件 — 并使用前序步骤中的动态变量来个性化每条消息。 +此操作向一个或多个收件人发送邮件。你可以自定义收件人、主题、正文和回复地址,并使用前序步骤中的动态变量来个性化每条消息。 默认使用 Teable 内置邮件服务发送。如需从自己的域名发送,请配置[自定义 SMTP 服务器](/zh/basic/automation/actions/communication/smtp-sender)。 @@ -24,7 +24,6 @@ description: "在工作流中发送自定义邮件" | 抄送(CC) | 否 | 抄送收件人 | | 密送(BCC) | 否 | 密送收件人 | | 回复地址(Reply-To) | 否 | 收件人回复时使用的地址(如果与发件人不同) | -| 附件(Attachments) | 否 | 来自前序步骤或附件字段的文件附件 | \* **收件人**和**密送**至少填写一项。 @@ -41,8 +40,7 @@ description: "在工作流中发送自定义邮件" - **HTML** — 直接编写 HTML 标签,完全控制格式。 - **动态变量** — 在正文任意位置点击 **+** 插入前序步骤中的值。 5. (可选)根据需要设置**发件人姓名**、**抄送**、**密送**或**回复地址**。 -6. (可选)通过引用前序步骤中的附件字段来添加**附件**。 -7. 保存操作。 +6. 保存操作。 ## 在主题和正文中使用变量 @@ -74,16 +72,6 @@ description: "在工作流中发送自定义邮件" 你可以在同一正文中混合使用 Markdown 和动态变量。对于复杂的邮件设计,HTML 提供最大的灵活性。 -## 附件处理 - -要包含附件: - -- 引用前序步骤中的**附件字段**(例如上传到记录中的文件)。 -- 附件将作为文件包含在发出的邮件中。 -- 支持多个附件。 - -请注意,附件会增加邮件大小。较大的附件可能会因收件方邮件服务器的限制而导致投递问题。 - ## 适用场景 - **发送订单确认。** 新订单创建时,自动发送包含订单详情和感谢信息的邮件。 @@ -97,7 +85,6 @@ description: "在工作流中发送自定义邮件" - **使用自定义 SMTP**:如果发送高频量或业务关键邮件,建议使用自定义 SMTP。Teable 内置服务适合基本通知,但从您自己的域名发送的邮件更容易到达收件人的收件箱。 - **避免垃圾邮件风格的内容**:主题和正文中避免过多大写字母、感叹号或大量链接,这些可能触发垃圾邮件过滤器。 - **设置回复地址**:让收件人可以回复到真实的收件箱,而不是无回复地址。 -- **控制附件大小。** 如需共享大文件,请改为包含下载链接。 - **正式启用前测试邮件**:使用测试数据手动运行自动化,验证格式和投递情况。 ## 相关文档 diff --git a/zh/basic/automation/actions/logic/http-request.mdx b/zh/basic/automation/actions/logic/http-request.mdx index 99745c0d..ce53d446 100644 --- a/zh/basic/automation/actions/logic/http-request.mdx +++ b/zh/basic/automation/actions/logic/http-request.mdx @@ -171,4 +171,4 @@ HTTP 请求执行后,响应数据可供后续步骤引用。通常包括: - [循环执行](/zh/basic/automation/actions/logic/loop-run) - [Webhook 接收时](/zh/basic/automation/trigger/external/webhook-received) -- [AI 脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) diff --git a/zh/basic/automation/actions/logic/loop-run.mdx b/zh/basic/automation/actions/logic/loop-run.mdx index fa9d6cfc..5ebb0354 100644 --- a/zh/basic/automation/actions/logic/loop-run.mdx +++ b/zh/basic/automation/actions/logic/loop-run.mdx @@ -114,4 +114,4 @@ description: "通过遍历数组在一个操作中批量处理多个项目" - [查询记录](/zh/basic/automation/actions/records/get-records) - [创建记录](/zh/basic/automation/actions/records/create-record) - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) diff --git a/zh/basic/automation/ai-action.mdx b/zh/basic/automation/ai-action.mdx index 7a9b377f..2ee545fa 100644 --- a/zh/basic/automation/ai-action.mdx +++ b/zh/basic/automation/ai-action.mdx @@ -80,5 +80,5 @@ title: "AI 动作" 除了 Teable 官方提供的模型外,Teable 还支持集成自定义的第三方模型 API。 -- **设置路径**:进入 **空间 → 设置 → AI 设置** 中进行配置。 -- 详细指南请参考:[使用第三方模型 API](/zh/basic/space/ai-setting) +- **设置路径**:进入 **空间 → 设置 → AI 配置** 中进行配置。 +- 详细指南请参考:[自定义 AI 模型](/zh/basic/ai/custom-model) diff --git a/zh/basic/automation/ai/scripting/ai-script-guide.mdx b/zh/basic/automation/ai/scripting/ai-script-guide.mdx index 054d8c87..ebbeaa27 100644 --- a/zh/basic/automation/ai/scripting/ai-script-guide.mdx +++ b/zh/basic/automation/ai/scripting/ai-script-guide.mdx @@ -1,24 +1,24 @@ --- -title: "AI 脚本指南" +title: "运行脚本指南" description: "在安全沙箱中运行自定义 JavaScript,处理内置操作无法覆盖的逻辑" --- -脚本操作允许你编写自定义 JavaScript 代码,在安全沙箱环境中运行。当内置操作无法满足你的需求时——比如复杂的数据转换、条件分支逻辑、多步 API 调用——脚本是最灵活的解决方案。 +运行脚本操作允许你编写自定义 JavaScript 代码,在安全沙箱环境中运行。当内置操作无法满足你的需求时,例如复杂的数据转换、条件分支逻辑或多步 API 调用,可以使用运行脚本处理。 -## 何时使用脚本 vs 内置操作 +## 何时使用运行脚本 vs 内置操作 | 场景 | 推荐方式 | 原因 | |---|---|---| | 创建 / 更新 / 查询记录 | 内置操作 | 配置简单,无需编码 | | 发送邮件 | 内置操作 | 可视化配置,支持模板 | | 调用单个 API | HTTP 请求操作 | 可视化配置,无需写代码 | -| 复杂数据转换和计算 | 脚本 | 需要编程逻辑处理 | -| 多个 API 的串联调用 | 脚本 | 一个脚本中完成多步操作 | -| 条件分支处理 | 脚本 | 根据不同条件执行不同逻辑 | -| JSON 解析和重组 | 脚本 | 灵活操作数据结构 | -| 日期计算和格式化 | 脚本 | JavaScript 原生支持 | +| 复杂数据转换和计算 | 运行脚本 | 需要编程逻辑处理 | +| 多个 API 的串联调用 | 运行脚本 | 在一个脚本中完成多步操作 | +| 条件分支处理 | 运行脚本 | 根据不同条件执行不同逻辑 | +| JSON 解析和重组 | 运行脚本 | 灵活操作数据结构 | +| 日期计算和格式化 | 运行脚本 | JavaScript 原生支持 | -尽可能使用内置操作。只在内置操作无法满足需求时才使用脚本。 +尽可能使用内置操作。只在内置操作无法满足需求时才使用运行脚本。 ## 运行环境 @@ -31,7 +31,7 @@ description: "在安全沙箱中运行自定义 JavaScript,处理内置操作 ## 如何设置 -1. 在工作流中添加**脚本**操作。 +1. 在工作流中添加**运行脚本**操作。 2. 在代码编辑器中编写 JavaScript 代码。 3. 通过 `input` 对象访问前序步骤的数据。 4. 通过 `output.set()` 将结果传递给后续步骤。 diff --git a/zh/basic/automation/ai/scripting/sample-scripts.mdx b/zh/basic/automation/ai/scripting/sample-scripts.mdx index 1fa38bb8..c89c344e 100644 --- a/zh/basic/automation/ai/scripting/sample-scripts.mdx +++ b/zh/basic/automation/ai/scripting/sample-scripts.mdx @@ -334,6 +334,6 @@ output.set("sent", res.ok); ## 相关文档 -- [AI 脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) +- [运行脚本指南](/zh/basic/automation/ai/scripting/ai-script-guide) - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) - [循环执行](/zh/basic/automation/actions/logic/loop-run) diff --git a/zh/basic/automation/example.mdx b/zh/basic/automation/example.mdx index 1b5dae99..8bf11f11 100644 --- a/zh/basic/automation/example.mdx +++ b/zh/basic/automation/example.mdx @@ -3,6 +3,8 @@ title: "示例:用 JavaScript 创建自动化" description: "通过调用 Teable 接口创建自动化" --- +此页面已弃用,且不再出现在文档目录中;内容仅保留给旧链接访问。请参考当前自动化目录下的示例页面。 + > 场景:电商订单从“已支付”更新为“已发货”后,自动向企业微信机器人群通知,便于客服与仓配实时同步。 ### 前置准备 @@ -233,4 +235,4 @@ main().catch((e) => { ### 相关文档 -- [`自动化接口文档`](/zh/api-reference/automation/put-base-workflow-action) \ No newline at end of file +- [`自动化接口文档`](/zh/api-reference/automation/put-base-workflow-action) diff --git a/zh/basic/automation/examples/api-automation.mdx b/zh/basic/automation/examples/api-automation.mdx index 9772e8d2..13a5552f 100644 --- a/zh/basic/automation/examples/api-automation.mdx +++ b/zh/basic/automation/examples/api-automation.mdx @@ -21,7 +21,7 @@ AI 会自动创建完整的工作流。你可以查看生成的脚本,用真 ## 辅助函数 ```javascript -const baseUrl = "https://app.teable.io/api"; +const baseUrl = "https://app.teable.ai/api"; const token = process.env.TEABLE_TOKEN; const baseId = "bserxxxxxx"; diff --git a/zh/basic/automation/trigger/email/email-received-overview.mdx b/zh/basic/automation/trigger/email/email-received-overview.mdx index cade9a50..f0589739 100644 --- a/zh/basic/automation/trigger/email/email-received-overview.mdx +++ b/zh/basic/automation/trigger/email/email-received-overview.mdx @@ -103,5 +103,5 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 - [创建记录](/zh/basic/automation/actions/records/create-record) - [AI 生成](/zh/basic/automation/actions/ai/ai-generate) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [配置 SMTP 和发件人](/zh/basic/automation/actions/communication/smtp-sender) diff --git a/zh/basic/automation/trigger/external/scheduled-time.mdx b/zh/basic/automation/trigger/external/scheduled-time.mdx index 5084ae40..5ccb89d2 100644 --- a/zh/basic/automation/trigger/external/scheduled-time.mdx +++ b/zh/basic/automation/trigger/external/scheduled-time.mdx @@ -88,5 +88,5 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 - [查询记录](/zh/basic/automation/actions/records/get-records) - [循环执行](/zh/basic/automation/actions/logic/loop-run) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) diff --git a/zh/basic/automation/trigger/forms/button-click.mdx b/zh/basic/automation/trigger/forms/button-click.mdx index d6426453..59c911f7 100644 --- a/zh/basic/automation/trigger/forms/button-click.mdx +++ b/zh/basic/automation/trigger/forms/button-click.mdx @@ -73,6 +73,6 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 ## 相关文档 - [更新记录](/zh/basic/automation/actions/records/update-record) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [HTTP 请求](/zh/basic/automation/actions/logic/http-request) - [AI 生成](/zh/basic/automation/actions/ai/ai-generate) diff --git a/zh/basic/automation/trigger/forms/form-submitted.mdx b/zh/basic/automation/trigger/forms/form-submitted.mdx index 46d3b716..be666c6a 100644 --- a/zh/basic/automation/trigger/forms/form-submitted.mdx +++ b/zh/basic/automation/trigger/forms/form-submitted.mdx @@ -62,6 +62,6 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 ## 相关文档 - [记录创建时](/zh/basic/automation/trigger/records/record-created) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [AI 生成](/zh/basic/automation/actions/ai/ai-generate) - [创建记录](/zh/basic/automation/actions/records/create-record) diff --git a/zh/basic/automation/trigger/records/record-created.mdx b/zh/basic/automation/trigger/records/record-created.mdx index e1aabf8d..93183583 100644 --- a/zh/basic/automation/trigger/records/record-created.mdx +++ b/zh/basic/automation/trigger/records/record-created.mdx @@ -69,4 +69,4 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 - [记录更新时](/zh/basic/automation/trigger/records/record-updated) - [记录满足条件时](/zh/basic/automation/trigger/records/record-matches-conditions) - [创建记录(操作)](/zh/basic/automation/actions/records/create-record) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) diff --git a/zh/basic/automation/trigger/records/record-matches-conditions.mdx b/zh/basic/automation/trigger/records/record-matches-conditions.mdx index a55e3f3e..a80c6b57 100644 --- a/zh/basic/automation/trigger/records/record-matches-conditions.mdx +++ b/zh/basic/automation/trigger/records/record-matches-conditions.mdx @@ -68,5 +68,5 @@ AI 会为你处理一切:选择合适的触发器,映射相关字段,自 - [记录创建时](/zh/basic/automation/trigger/records/record-created) - [记录更新时](/zh/basic/automation/trigger/records/record-updated) -- [发送邮件](/zh/basic/automation/actions/communication/send-email) +- [发送邮件](/zh/basic/automation/actions/communication/send-email-overview) - [更新记录](/zh/basic/automation/actions/records/update-record) diff --git a/zh/basic/base.mdx b/zh/basic/base.mdx index 91b936c0..4cc1da8d 100644 --- a/zh/basic/base.mdx +++ b/zh/basic/base.mdx @@ -38,6 +38,16 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te className="docs-screenshot" /> +### 整理数据库中的资源 + +进入数据库后,左侧目录栏会显示当前数据库内的资源,例如表格、应用和自动化。你可以使用文件夹整理这些资源,让大型数据库更容易浏览。 + +常见操作包括: + +- **创建文件夹**:在左侧目录栏中创建文件夹,用于归类相关资源。 +- **移动资源**:将表格、应用或自动化拖入文件夹,或拖动调整顺序。 +- **整理层级**:文件夹可以包含子节点。为了保持导航清晰,请避免创建过深的层级。 + ### 复制数据库到另一个空间 第一步:在当前空间中选择要复制的数据库 @@ -92,6 +102,25 @@ description: "创建、管理、导入导出数据库。通过 .tea 文件在 Te **数据迁移提示**:要在 Teable 实例之间迁移数据,从源实例导出数据库,然后将 `.tea` 文件导入到目标实例。所有数据和配置都会保留。 +### 分享数据库 + +数据库可以通过公开链接分享。分享范围可以是整个数据库,也可以是当前选中的某个节点。 + +1. 进入目标数据库 +2. 打开数据库或节点的分享入口 +3. 开启 **公开分享到网络** +4. 复制分享链接或二维码 + +分享范围包括: + +| 范围 | 说明 | +|------|------| +| **分享整个数据库** | 分享当前数据库中的全部节点。之后新增的数据表和文件夹也会自动包含在分享范围内。 | +| **分享选定的节点** | 分享当前选中的节点。分享文件夹时,会同时包含该文件夹下的子节点。 | + +分享设置中可以配置链接权限、允许查看者复制数据、访问密码,也可以重新生成链接、删除分享链接或复制嵌入配置。 + +如果分享范围中包含应用节点,应用需要先发布后才能通过公开链接访问。 ### 数据库内的功能 diff --git a/zh/basic/field.mdx b/zh/basic/field.mdx index f6522667..8f0d7682 100644 --- a/zh/basic/field.mdx +++ b/zh/basic/field.mdx @@ -25,7 +25,6 @@ description: "字段是表格中的列,用来存放不同类型的数据。通 3. 在编辑字段对话框中调整字段配置 4. 点击`保存` -**建议修改为:** 编辑字段类型时可能会触发字段类型转换。您可以将现有字段更改为其他类型,例如将单行文本字段转换为单选字段。 @@ -55,4 +54,4 @@ description: "字段是表格中的列,用来存放不同类型的数据。通 在隐藏字段工具中,点击当前视图中可见的字段名称,表格会滚动到对应列并短暂高亮。需要显示或隐藏字段时,请使用字段旁边的开关。 ![](/images/2025-11-25-23-23-41.png) -有关视图工具栏的详细使用方法,请参阅 [视图工具栏](/zh/basic/view/toolbar) 文档。 +有关视图筛选、排序和分组等工具栏能力,请参阅[筛选](/zh/basic/view/toolbar/filter)、[排序](/zh/basic/view/toolbar/sort)和[分组](/zh/basic/view/toolbar/group)文档。 diff --git a/zh/basic/field/advanced/rollup.mdx b/zh/basic/field/advanced/rollup.mdx index 5e27b0e5..845f5136 100644 --- a/zh/basic/field/advanced/rollup.mdx +++ b/zh/basic/field/advanced/rollup.mdx @@ -27,7 +27,7 @@ description: "汇总字段用于对关联表中的多条数据进行聚合计算 - **场景**: 一个订单中可能包含多本书,系统需要自动计算出该订单的总金额,无需人工按计算器 - **操作步骤**: - 1. 在 **订单表** 中,确保 `所选书籍` 字段关联了多本具体的书(如订单001关联了《代码大全》$60 和 《设计模式》$40) + 1. 在 **订单表** 中,确保 `所选书籍` 字段关联了多本具体的书(如订单001关联了《代码大全》`$60` 和 《设计模式》`$40`) 2. 新建 **汇总** 字段,命名为 `订单总额` 3. 配置逻辑:通过 `所选书籍` 关联,选择目标字段 `价格`,统计函数选择 `求和` 4. **结果**:订单001 的总额会自动显示为 `$100` diff --git a/zh/basic/field/basic/attachment.mdx b/zh/basic/field/basic/attachment.mdx new file mode 100644 index 00000000..054f7aa3 --- /dev/null +++ b/zh/basic/field/basic/attachment.mdx @@ -0,0 +1,62 @@ +--- +title: "附件" +description: "用于在记录中保存图片、PDF、文档和其他文件,支持预览、下载和批量下载。" +--- + +**附件**字段用于在单元格中保存一个或多个文件。常见场景包括上传合同、图片、发票、设计稿、简历、报告或由 AI 字段生成的图片。 + +## 一、 创建附件字段 + +1. 在表格中点击 `+` 添加字段 +2. 选择字段类型 **附件** +3. 输入字段名称,例如“文件”“图片”“合同附件” +4. 点击 `保存` + +创建后,每条记录都可以在该字段中上传一个或多个附件。 + +## 二、 上传和查看附件 + +附件字段可以保存多种文件类型,例如图片、PDF、文档和压缩包。 + +- **上传文件**:在单元格或记录详情中点击附件区域,选择本地文件上传。 +- **保存多个附件**:同一个附件单元格可以包含多个文件。 +- **预览文件**:图片和部分文件类型可以直接在单元格或记录详情中预览。 +- **下载单个附件**:打开附件后,可以下载对应文件。 + + +附件字段保存的是文件,不是普通文本。将文本类字段转换为附件字段时,原文本内容无法自动转换为文件。字段转换前请先确认数据是否需要备份。 + + +## 三、 批量下载附件 + +在附件字段的字段菜单中,可以批量下载当前字段里的附件。 + +批量下载会生成一个 ZIP 文件,并遵循当前表格的搜索结果范围: + +- 如果当前没有搜索条件,会下载该附件字段中可下载的附件。 +- 如果当前表格正在搜索并隐藏不匹配的行,只会下载匹配记录中的附件。 + +下载 ZIP 时,可以选择附件名前缀: + +| 前缀方式 | 说明 | +|------|------| +| **默认序号** | 使用系统生成的序号作为前缀,便于区分文件顺序 | +| **选择字段作为前缀** | 使用某个字段的值作为文件名前缀,适合按编号、客户名或项目名整理附件 | +| **无前缀** | 尽量保留原始文件名 | + +如果 ZIP 中出现重名文件,Teable 会自动追加后缀,保证文件名唯一。 + +## 四、 与 AI 字段配合使用 + +AI 字段可以读取附件,也可以把生成的图片保存到附件字段。 + +- **读取附件**:在 AI 字段设置中,把附件字段添加为输入字段。是否能识别图片或文件内容,取决于所选模型。 +- **保存图片**:把 AI 字段的输出设置为附件字段,生成的图片会保存到该附件字段中。 + +更多信息请参阅 [AI 字段](/zh/basic/field/ai/ai-field)。 + +## 五、 通过 API 上传附件 + +附件上传 API 支持上传本地文件或通过 URL 上传文件,并将新附件追加到指定记录的附件字段末尾。 + +请参阅 [上传附件 API](/zh/api-doc/record/upload-attachment)。 diff --git a/zh/basic/space.mdx b/zh/basic/space.mdx index 9de43e13..13f6e52f 100644 --- a/zh/basic/space.mdx +++ b/zh/basic/space.mdx @@ -1,5 +1,6 @@ --- title: "概览" +description: "创建、重命名、删除和管理 Teable 空间。" --- 功能层级 ![](/images/ji-ben-gong-neng/30558ca439f98335.png) @@ -44,6 +45,18 @@ title: "概览" ![](/images/ji-ben-gong-neng/800e5de85dc0652b.png) +### 分享给我的数据库 + +当别人把数据库作为协作者分享给你时,该数据库会显示在空间侧边栏的 **分享给我的** 中。 + +分享给你的数据库和自己空间中的数据库不同: + +- 访问权限由分享方控制 +- 可执行的操作取决于你被授予的数据库权限 +- 如果分享方移除你的访问权限,该数据库将不再显示 + +关于数据库公开分享,请参阅 [数据库](/zh/basic/base)。 + ### 空间设置 * 点击空间右上角 「···」 按钮,打开空间菜单 @@ -63,8 +76,20 @@ title: "概览" **AI 配置** -在 AI 配置页面中,空间所有者可以为当前空间配置自定义模型提供商。 +在 AI 配置页面中,空间所有者可以为当前空间配置自定义模型提供商。具体配置请参阅 [自定义 AI 模型](/zh/basic/ai/custom-model)。 + +**IM 集成** + +在 IM 集成页面中,可以为当前空间配置 Feishu 自建应用,让 CuppyClaw 机器人连接到飞书群组。请参阅 [IM 集成](/zh/basic/space/im-integration)。 + +**订阅计划** + +在订阅计划页面中可以查看当前空间可用的计划能力。 **计费** 在计费页面中可以查看当前订阅计划以及用量统计。 + +**认证设置** + +在认证设置页面中可以为空间配置 SSO 身份提供商,并管理 **通过 URL 登录** 和 **通过按钮登录**。请参阅 [单点登录 (SSO)](/zh/basic/sso/overview)。 diff --git a/zh/basic/space/billing.mdx b/zh/basic/space/billing.mdx index 34c9b541..5ea40a69 100644 --- a/zh/basic/space/billing.mdx +++ b/zh/basic/space/billing.mdx @@ -59,7 +59,7 @@ description: "了解如何管理订阅、查看账单详情、监控用量以及 - **专业版**:1,000 算力/席位/月 - **商业版**:2,000 算力/席位/月 -添加新的计费协作者后,席位数量会在下一个计费周期开始时更新。新席位的算力将按比例分配。 +添加新的计费协作者后,席位数量会在下一个计费周期开始时更新。新席位的算力将按比例分配。如果在此之前需要算力,可以购买额外算力订阅以立即使用。 **购买额外算力:** 专业版及以上用户可以购买额外算力。 @@ -215,7 +215,7 @@ Teable 遵循"物有所值"的取消政策。当您取消订阅时,您并非 - 算力根据已计费的席位数分配。添加新的计费协作者后,席位数量会在下一个计费周期开始时更新。新席位的算力将按比例分配。 + 算力根据已计费的席位数分配。添加新的计费协作者后,席位数量会在下一个计费周期开始时更新。新席位的算力将按比例分配。如果在此之前需要算力,可以购买额外算力订阅以立即使用。 diff --git a/zh/basic/space/im-integration.mdx b/zh/basic/space/im-integration.mdx new file mode 100644 index 00000000..970fecd9 --- /dev/null +++ b/zh/basic/space/im-integration.mdx @@ -0,0 +1,75 @@ +--- +title: "IM 集成" +description: "在空间设置中配置 Feishu 自建应用,让 CuppyClaw 机器人可以在飞书群组中工作。" +--- + +**IM 集成**用于把当前空间中的 CuppyClaw 机器人连接到即时通讯平台。当前配置入口面向飞书自建应用。 + +路径:空间设置 → IM 集成 + + +该设置是空间级配置。不同空间可以使用不同的飞书自建应用凭证。 + + +## 一、 创建飞书自建应用 + +1. 打开 [飞书开放平台](https://open.feishu.cn/app) +2. 创建企业自建应用 +3. 在应用能力中启用 **机器人** + +启用机器人后,后续才能把该应用添加到飞书群组中接收消息。 + +## 二、 填写应用凭证 + +在飞书应用的 **凭证与基础信息** 页面获取: + +- **App ID** +- **App Secret** + +回到 Teable 的 **IM 集成** 页面,填入凭证并保存。保存或更新配置时都需要填写 App Secret。 + +已保存过配置后,点击 **测试连接** 可以不重新填写 App Secret;系统会复用已保存的密钥。只有需要保存新的凭证或更换密钥时,才需要重新填写 App Secret 并保存。 + +## 三、 导入权限范围 + +在飞书应用的 **权限管理** 中,使用 **批量导入/导出权限** 导入页面中提供的 Scopes JSON。 + +这些权限用于让机器人处理所在会话中发给机器人的消息、访问必要的会话信息,并以机器人身份发送回复。导入后请按飞书页面要求提交或保存权限变更。 + +## 四、 配置事件订阅 + +在飞书应用的 **事件与回调** → **事件配置** 中配置事件订阅: + +1. 订阅方式选择 **将事件发送至开发者服务器**,不要选择长连接。 +2. 将请求地址设置为 Teable 页面中显示的 Webhook URL。格式通常是: + +```text +https://your-teable-domain.com/api/im-webhook/feishu +``` + +3. 添加事件: + +```text +im.message.receive_v1 +``` + +该事件用于让 Teable 接收机器人收到的消息。 + +## 五、 发布应用并设置可用范围 + +在飞书应用的 **版本管理与发布** 中创建新版本并发布应用。 + +发布时请确认 **可用范围** 设置为 **全员**,这样空间成员才能搜索并添加机器人。 + +## 六、 测试连接 + +回到 Teable 的 **IM 集成** 页面,点击 **测试连接**。 + +测试通过后,将机器人添加到飞书群组,并在群内验证 CuppyClaw 是否能收到消息和响应。 + +## 七、 常见排查 + +- **测试连接失败**:先确认 App ID 和 App Secret 是否来自同一个飞书应用。 +- **群里无法使用机器人**:确认应用已发布,并且可用范围包含当前成员。 +- **机器人收不到消息**:检查事件订阅方式是否为 **将事件发送至开发者服务器**,以及是否添加了 `im.message.receive_v1` 事件。 +- **更换应用密钥**:在 IM 集成页面重新填写 App Secret 并保存。 diff --git a/zh/basic/sso/auth0.md b/zh/basic/sso/auth0.mdx similarity index 96% rename from zh/basic/sso/auth0.md rename to zh/basic/sso/auth0.mdx index 3f076b75..3b47b7ab 100644 --- a/zh/basic/sso/auth0.md +++ b/zh/basic/sso/auth0.mdx @@ -44,7 +44,7 @@ description: "配置 Auth0 作为 Teable 的 SSO 认证提供商" 3. **Allowed Web Origins**(允许的 Web 来源):(可选)`https://app.teable.cn` 4. 点击页面底部的 **Save Changes** -> **警告**:在离开页面之前务必保存更改。 +在离开页面之前务必保存更改。 ## 步骤 5:配置 OAuth 端点 @@ -55,7 +55,7 @@ description: "配置 Auth0 作为 Teable 的 SSO 认证提供商" - **User Info URL**(用户信息 URL):`https://{yourDomain}/userinfo` - **Issuer**(颁发者):`https://{yourDomain}/` -> **注意**:请将 `{yourDomain}` 替换为步骤 4 中的实际 Auth0 域名。 +请将 `{yourDomain}` 替换为步骤 4 中的实际 Auth0 域名。 ## 步骤 6:配置连接(可选) diff --git a/zh/basic/sso/authentik.md b/zh/basic/sso/authentik.mdx similarity index 90% rename from zh/basic/sso/authentik.md rename to zh/basic/sso/authentik.mdx index d04b5425..2830232b 100644 --- a/zh/basic/sso/authentik.md +++ b/zh/basic/sso/authentik.mdx @@ -34,8 +34,10 @@ description: "配置 Authentik 作为 Teable 的 SSO 认证提供商" ### 重定向 URI - **Redirect URIs/Origins (RegEx)**(重定向 URI/来源):粘贴 Teable 中的**回调 URL** - - 精确匹配:`https://app.teable.cn/api/auth/callback/authentik` - - 正则表达式模式:`https://app\.teable\.cn/api/auth/callback/.*` + - 精确匹配:`https://app.teable.cn/api/auth/authentication/__providerId__/callback` + - 正则表达式模式:`https://app\.teable\.cn/api/auth/authentication/.*/callback` + +请将 URL 中的 `__providerId__` 替换为 Teable 中创建认证提供商后显示的 providerId,或直接复制 Teable 页面中的回调 URL。 ### 高级设置 @@ -56,7 +58,7 @@ description: "配置 Authentik 作为 Teable 的 SSO 认证提供商" 2. 复制 **Client Secret**(客户端密钥,仅在创建时显示一次) 3. 将这两个值粘贴到 Teable 的 SSO 配置中 -> **警告**:请安全地存储客户端密钥。如需要,你可以稍后重新生成。 +请安全地存储客户端密钥。如需要,你可以稍后重新生成。 ## 步骤 5:创建应用程序 @@ -80,7 +82,7 @@ description: "配置 Authentik 作为 Teable 的 SSO 认证提供商" - **User Info URL**(用户信息 URL):`https://{your-authentik-domain}/application/o/userinfo/` - **Issuer**(颁发者):`https://{your-authentik-domain}/application/o/{application-slug}/` -> **注意**:请将 `{your-authentik-domain}` 替换为你的实际 Authentik 实例域名,将 `{application-slug}` 替换为你配置的标识符(例如:`teable`)。 +请将 `{your-authentik-domain}` 替换为你的实际 Authentik 实例域名,将 `{application-slug}` 替换为你配置的标识符(例如:`teable`)。 ## 步骤 7:配置应用程序访问 @@ -191,4 +193,3 @@ description: "配置 Authentik 作为 Teable 的 SSO 认证提供商" 2. 审查认证事件和错误 3. 为重要事件设置通知规则 4. 在 **System** → **Settings** 中配置事件保留策略 - diff --git a/zh/basic/sso/azure-entra-id.md b/zh/basic/sso/azure-entra-id.mdx similarity index 97% rename from zh/basic/sso/azure-entra-id.md rename to zh/basic/sso/azure-entra-id.mdx index da6321a7..0d241761 100644 --- a/zh/basic/sso/azure-entra-id.md +++ b/zh/basic/sso/azure-entra-id.mdx @@ -42,7 +42,7 @@ description: "配置 Azure Entra ID 作为 Teable 的 SSO 认证提供商" - **User Info URL**(用户信息 URL):`https://graph.microsoft.com/oidc/userinfo` - **Issuer**(颁发者):`https://login.microsoftonline.com/_YOUR_TENANT_ID_/v2.0` -> **注意**:请将 `_YOUR_TENANT_ID_` 替换为你的实际 Azure 租户 ID。 +请将 `_YOUR_TENANT_ID_` 替换为你的实际 Azure 租户 ID。 ## 步骤 4:注册新应用程序 @@ -123,7 +123,7 @@ description: "配置 Azure Entra ID 作为 Teable 的 SSO 认证提供商" className="docs-screenshot" /> -> **警告**:密钥值仅显示一次,请务必立即保存。 +密钥值仅显示一次,请务必立即保存。 ## 步骤 8:配置 API 权限 diff --git a/zh/basic/sso/google-workspace.md b/zh/basic/sso/google-workspace.mdx similarity index 98% rename from zh/basic/sso/google-workspace.md rename to zh/basic/sso/google-workspace.mdx index cf08259a..0f5569a1 100644 --- a/zh/basic/sso/google-workspace.md +++ b/zh/basic/sso/google-workspace.mdx @@ -70,7 +70,7 @@ description: "配置 Google Workspace 作为 Teable 的 SSO 认证提供商" 3. 点击 **OK** 4. 将这两个值粘贴到 Teable 的 SSO 配置中 -> **注意**:你可以随时从 Credentials 页面检索这些凭据。 +你可以随时从 Credentials 页面检索这些凭据。 ## 步骤 7:配置 OAuth 端点 diff --git a/zh/basic/sso/okta.md b/zh/basic/sso/okta.mdx similarity index 93% rename from zh/basic/sso/okta.md rename to zh/basic/sso/okta.mdx index 10d628a4..08f3af13 100644 --- a/zh/basic/sso/okta.md +++ b/zh/basic/sso/okta.mdx @@ -43,7 +43,7 @@ description: "配置 Okta 作为 Teable 的 SSO 认证提供商" 2. 复制 **Client Secret**(客户端密钥,如需要请点击 "Show") 3. 将这两个值粘贴到 Teable 的 SSO 配置中 -> **警告**:请妥善保管你的客户端密钥,切勿公开分享。 +请妥善保管你的客户端密钥,切勿公开分享。 ## 步骤 6:配置 OAuth 端点 @@ -54,7 +54,7 @@ description: "配置 Okta 作为 Teable 的 SSO 认证提供商" - **User Info URL**(用户信息 URL):`https://{yourOktaDomain}/oauth2/v1/userinfo` - **Issuer**(颁发者):`https://{yourOktaDomain}` -> **注意**:请将 `{yourOktaDomain}` 替换为你的实际 Okta 域名(例如:`dev-123456.okta.com` 或 `mycompany.okta.com`) +请将 `{yourOktaDomain}` 替换为你的实际 Okta 域名(例如:`dev-123456.okta.com` 或 `mycompany.okta.com`) ## 步骤 7:分配用户或组 diff --git a/zh/basic/sso/onelogin.md b/zh/basic/sso/onelogin.mdx similarity index 94% rename from zh/basic/sso/onelogin.md rename to zh/basic/sso/onelogin.mdx index ab49e182..a69f1b3e 100644 --- a/zh/basic/sso/onelogin.md +++ b/zh/basic/sso/onelogin.mdx @@ -52,7 +52,7 @@ description: "配置 OneLogin 作为 Teable 的 SSO 认证提供商" 2. 找到 **Client Secret** 字段并复制其值(可能需要先点击 "Show") 3. 将这两个值粘贴到 Teable 的 SSO 配置中 -> **警告**:请妥善保管你的客户端密钥。如需要,你可以从此页面重新生成。 +请妥善保管你的客户端密钥。如需要,你可以从此页面重新生成。 ## 步骤 6:配置 OAuth 端点 @@ -63,7 +63,7 @@ description: "配置 OneLogin 作为 Teable 的 SSO 认证提供商" - **User Info URL**(用户信息 URL):`https://{subdomain}.onelogin.com/oidc/2/me` - **Issuer**(颁发者):`https://{subdomain}.onelogin.com/oidc/2` -> **注意**:请将 `{subdomain}` 替换为你的实际 OneLogin 子域名(例如:`mycompany.onelogin.com`)。你可以在 OneLogin 门户 URL 中找到它。 +请将 `{subdomain}` 替换为你的实际 OneLogin 子域名(例如:`mycompany.onelogin.com`)。你可以在 OneLogin 门户 URL 中找到它。 ## 步骤 7:配置应用程序访问 diff --git a/zh/basic/sso/overview.md b/zh/basic/sso/overview.mdx similarity index 80% rename from zh/basic/sso/overview.md rename to zh/basic/sso/overview.mdx index c91dfb29..f08d2069 100644 --- a/zh/basic/sso/overview.md +++ b/zh/basic/sso/overview.mdx @@ -1,13 +1,18 @@ --- title: "单点登录 (SSO)" -description: "使用 OpenID Connect 为你的 Teable 工作区配置 SSO 认证" +description: "为 Teable 空间配置 SSO。" --- 适用于商业版及以上版本 ## 概述 -Teable 支持基于 **OpenID Connect (OIDC)** 标准协议的单点登录认证。 +在 Teable Cloud 中,进入目标空间后: + +1. 点击空间右上角的 `···` +2. 打开 **空间设置** +3. 进入 **认证设置** +4. 添加或管理 SSO 身份提供商 ## 支持的身份提供商 @@ -15,26 +20,30 @@ Teable 支持基于 **OpenID Connect (OIDC)** 标准协议的单点登录认证 使用 Microsoft Azure Entra ID(原 Azure Active Directory)配置 SSO - + 使用 Okta 身份平台配置 SSO - + 使用 Google Workspace 账户配置 SSO - + 使用 Auth0 身份平台配置 SSO - + 使用 OneLogin 身份管理配置 SSO - + 使用 Authentik 开源身份提供商配置 SSO + + + 使用飞书或 Lark 配置 SSO + ## 工作原理 diff --git a/zh/basic/table.mdx b/zh/basic/table.mdx index 11e9b920..a29709e3 100644 --- a/zh/basic/table.mdx +++ b/zh/basic/table.mdx @@ -64,13 +64,27 @@ description: "表格是数据库中存储数据的核心容器。与 Excel 中 ![](/images/ji-ben-gong-neng/7120f4c7aa1ad8e2.png) +### 3. 分享表格 + +在表格中点击右上角 **分享**,切换到 **分享表**,打开 **公开分享到网络**,即可生成表格分享链接。 + +分享表可以配置链接访问权限: + +- **可查看**:获得链接的人可以查看表格数据。 +- **可编辑**:登录用户可以编辑分享表格中的记录。 +- **可另存为副本**:获得链接的人可以把分享内容保存到自己的空间。 + +还可以配置 **允许查看者复制数据**、**需要密码访问**、重新生成链接、删除分享链接和嵌入配置。 + +如果只需要分享当前视图,请切换到 **分享视图**。更多信息请参阅 [分享视图](/zh/basic/view/toolbar/share)。 + --- ## 三、 查看 在 Teable Cloud 中,用户可通过两种方式访问表格: -- **[视图](/zh/basic/view)** -- **[API](/zh/api-doc)** +- **[表格视图](/zh/basic/view/grid)** +- **[API 概览](/zh/api-doc/overview)** 视图是最直观的访问方式。用户可通过各种视图对表格进行操作,并构建复杂的应用。 diff --git a/zh/basic/table/export.mdx b/zh/basic/table/export.mdx index 4aa4ad4a..8a24eaae 100644 --- a/zh/basic/table/export.mdx +++ b/zh/basic/table/export.mdx @@ -16,7 +16,7 @@ Teable 支持两个单位的数据导出,满足不同的数据获取需求。 2. 点击右侧出现的 `...` 按钮 3. 选择 **下载 CSV** - +![](/images/2025-12-01-23-33-11.png) ### 2. 导出特定视图 (筛选后数据) 只想导出当前看到的这部分数据(例如:只导出“本月订单”或“已完成任务”),请使用视图导出。 @@ -25,4 +25,4 @@ Teable 支持两个单位的数据导出,满足不同的数据获取需求。 2. 点击视图名称旁边的 `...` 菜单(或视图设置按钮) 3. 选择 **下载 CSV** - \ No newline at end of file +![](/images/2025-12-01-23-34-44.png) \ No newline at end of file diff --git a/zh/basic/table/import.mdx b/zh/basic/table/import.mdx index 6a473fe0..bad7de2c 100644 --- a/zh/basic/table/import.mdx +++ b/zh/basic/table/import.mdx @@ -3,7 +3,9 @@ title: "导入" description: "将外部的 CSV 或 Excel 文件快速迁移至 Teable。您既可以通过导入直接创建一张全新的表格,也可以将数据追加到现有的表格中,实现数据的快速初始化或增量更新。" --- -Excel 文件大小限制为 **5MB**。如果您需要导入更大规模的数据,先将其另存为 **CSV** 格式后再进行导入。 + +Excel 文件大小限制为 **5MB**。如果您需要导入更大规模的数据,先将其另存为 **CSV** 格式后再进行导入。 + ## 一、 导入为新表格 diff --git a/zh/basic/view/toolbar/share.mdx b/zh/basic/view/toolbar/share.mdx index 4280dac1..3bcd45ce 100644 --- a/zh/basic/view/toolbar/share.mdx +++ b/zh/basic/view/toolbar/share.mdx @@ -1,36 +1,88 @@ --- title: "分享" -description: "把当前视图公开成一个可访问链接,方便外部人员查看或嵌入。" +description: "把当前视图公开为链接,并配置复制、密码、嵌入和主题选项。" --- -## 一、 开启分享 +**分享视图**用于把当前视图发布成一个公开链接。获得链接的人可以访问这个视图中的数据,但不能直接修改原表格记录。 -点击视图工具栏里的 `分享`,把 `公开分享视图到网络` 打开,就会生成一个分享链接。 -- 通过分享链接访问的人只有查看权限,不能直接改动数据。 + +如果需要分享整个数据库、指定表格或文件夹,而不是只分享当前视图,请在 [数据库](/zh/basic/base) 中使用数据库分享。 + -## 二、 可配置项 +## 一、 视图分享和表格分享的区别 -- `允许拷贝视图数据`:控制访问者是否可以复制数据。 -- `显示展开记录中的所有字段`:只有网格视图提供这个开关。 -- `设置访问密码`:给链接加密码,输入正确后才能访问。 -- `需要登录提交`:只有带提交能力的分享页才会显示,主要是表单视图。 +在表格的分享入口中,当前表格通常会同时出现 **分享表** 和 **分享视图** 两个选项: -## 三、 链接和嵌入 +| 分享方式 | 适合场景 | +|------|------| +| **分享表** | 分享当前表格,适合让外部人员访问更完整的表格内容。 | +| **分享视图** | 只分享当前视图,适合只公开一个经过筛选、排序、隐藏字段或特定布局处理后的结果。 | -- `复制链接` -- `二维码` -- `生成新链接` -- `嵌入` -- `隐藏工具栏`:表单视图不会显示这个开关。 -- `主题`:支持 `跟随系统`、`浅色`、`深色` +视图分享链接只允许访问当前视图。后续如果你修改了这个视图的配置,例如筛选、排序、分组、隐藏字段或视图布局,分享链接中看到的内容也会跟着变化。 + +## 二、 开启分享 + +1. 打开要分享的视图 +2. 点击视图工具栏中的 **分享** +3. 切换到 **分享视图** +4. 打开 **公开分享视图到网络** +5. 复制生成的分享链接,或使用二维码分享 + +如果你没有视图分享权限,分享开关会不可用。 + +关闭 **公开分享视图到网络** 后,已有分享链接将无法继续访问。 + +## 三、 链接管理 + +开启分享后,可以在分享面板中管理链接: + +- **复制链接**:复制当前分享链接。 +- **二维码**:生成当前分享链接的二维码。 +- **生成新链接**:重新生成分享链接。生成后请重新分发新链接,不要继续使用旧链接。 + + +公开链接可能被转发。开启前请确认当前视图中没有不应公开的字段或记录。 + + +## 四、 高级选项 + +不同视图类型会显示不同的高级选项。 + +| 选项 | 适用范围 | 说明 | +|------|------|------| +| **允许拷贝视图数据** | 网格视图 | 控制访问者是否可以从分享的网格视图中复制数据。关闭后,访问者不能复制分享视图中的数据。 | +| **显示展开记录中的所有字段** | 网格视图 | 控制访问者打开记录详情时,是否可以看到当前视图中隐藏的字段。 | +| **设置访问密码** | 所有视图分享 | 给分享链接加密码。访问者需要输入正确密码后才能打开分享页。密码至少需要 3 个字符。 | +| **需要登录提交** | 表单视图 | 要求访问者登录后才能提交表单。未登录访问者会被引导登录。 | + +## 五、 嵌入到其他页面 + +分享视图可以嵌入到其他网页。点击 **嵌入配置** 后,可以: + +- 预览嵌入效果 +- 复制 iframe 代码 +- 设置是否隐藏工具栏 +- 设置主题 + +示例: -### 嵌入代码 -如果需要把视图嵌到其他网页,可以直接使用系统生成的 iframe 代码: ```html - ``` + +### 隐藏工具栏 + +**隐藏工具栏** 会在链接中加入 `hideToolBar=true`,用于隐藏分享页中的筛选、排序、搜索等工具栏。这个选项不适用于表单视图。 + +### 主题 + +主题通过链接参数控制: + +- **跟随系统** +- **浅色** +- **深色** diff --git a/zh/deploy/activate.mdx b/zh/deploy/activate.mdx index 1cec09d9..9cf0610b 100644 --- a/zh/deploy/activate.mdx +++ b/zh/deploy/activate.mdx @@ -118,7 +118,7 @@ Teable 为自托管部署提供了不同的订阅计划,每个计划都有其 **计费用户**按**整个实例**级别统计,包括具有**可编辑**及以上权限(所有者、可搭建、可编辑)的用户。具有**可评论**或**可查看**(只读)权限的用户免费,不计入席位限制。 -管理员可以在**管理员后台** → **设置**中禁用"允许所有人创建新空间"选项,以防止用户创建可能增加计费协作者的空间。 +管理员可以在**管理员后台** → **实例设置**中禁用"允许所有人创建新空间"选项,以防止用户创建可能增加计费协作者的空间。 diff --git a/zh/deploy/dashboard.mdx b/zh/deploy/dashboard.mdx index fa4dd1b0..3277819e 100644 --- a/zh/deploy/dashboard.mdx +++ b/zh/deploy/dashboard.mdx @@ -6,7 +6,7 @@ description: "自部署用户如何开启 Standalone Dashboard 功能" Standalone Dashboard 功能已被 App Builder 取代。**我们强烈推荐你使用 App Builder 来构建更强大、可自定义的仪表盘,以获得最佳体验。** -**但如果你无法接入 v0 服务**来搭建仪表盘,你可以通过以下配置步骤来启用 Standalone Dashboard 作为替代方案。但需要了解的是,我们暂无计划再对此功能进行迭代,希望理解。 +如果你仍需要使用旧版 Dashboard 节点,可以通过以下配置步骤启用 Standalone Dashboard。但需要了解的是,我们暂无计划再对此功能进行迭代。 ## 概述 diff --git a/zh/deploy/docker.mdx b/zh/deploy/docker.mdx index c8209014..f81f6a5b 100644 --- a/zh/deploy/docker.mdx +++ b/zh/deploy/docker.mdx @@ -1,5 +1,6 @@ --- title: "Docker 部署" +description: "使用 Docker Compose 部署 Teable,并配置常用部署选项。" --- @@ -495,11 +496,8 @@ PUBLIC_ORIGIN=https://teable.example.com - -使用管理员账号(默认为第一个注册的用户)打开管理面板。 -![](/images/2025-08-13-15-40-33.png) -进入「设置」页面,页面下拉至最底部。找到「实例ID」信息,点击旁边的复制按钮即可完成复制。 -![](/images/2025-08-13-15-43-16.png) + +使用管理员账号(默认为第一个注册的用户)打开管理面板,进入 **私有化部署许可证** 页面,复制 **实例 ID**。 @@ -532,4 +530,4 @@ PUBLIC_ORIGIN=https://teable.example.com ``` 对于生产环境,我们建议设置自动化的每日备份并制定保留策略。 - \ No newline at end of file + diff --git a/zh/deploy/email.mdx b/zh/deploy/email.mdx index b77cf027..639e3b46 100644 --- a/zh/deploy/email.mdx +++ b/zh/deploy/email.mdx @@ -23,25 +23,37 @@ Teable 支持两种方式配置邮件服务: 最简单的配置方式是通过管理面板: 1. 使用管理员账号登录(默认为第一个注册的用户) -2. 进入 **管理面板** → **设置** -3. 找到 **邮件配置** 部分 -4. 点击 **+** 或 **✏️** 按钮进行配置 +2. 进入 **管理面板** → **实例设置** +3. 找到 **邮箱** 部分 +4. 分别按需配置**通知邮箱**和**自动化邮箱** 管理面板配置支持**在线测试** — 保存前可以验证 SMTP 设置是否正确。 +- **通知邮箱**:用于用户验证、重置密码、邀请、系统通知等邮件。 +- **自动化邮箱**:作为自动化发送邮件操作的默认邮件服务。单个发送邮件操作也可以配置自己的[自定义邮件服务器](/zh/basic/automation/actions/communication/smtp-sender)。 + +### 配置来源和优先级 + +建议优先在 **管理面板 → 实例设置 → 邮箱** 中配置邮件服务。不同来源的生效顺序如下: + +1. **发送邮件动作内的自定义邮件服务器**:只作用于当前自动化的这一个发送邮件动作。 +2. **管理面板 → 实例设置 → 邮箱 → 自动化邮箱**:当发送邮件动作没有单独配置邮件服务器时,自动化邮件默认使用这里的配置。 +3. **管理面板 → 实例设置 → 邮箱 → 通知邮箱**:用于用户验证、重置密码、邀请、系统通知等邮件;如果未配置自动化邮箱,也会作为自动化邮件的回退配置。 +4. **环境变量 `BACKEND_MAIL_*`**:部署级默认邮件配置。只有在管理面板中没有配置对应邮箱时,才作为兜底配置使用。 + ### 配置字段说明 | 字段 | 说明 | 示例 | |------|------|------| -| SMTP 主机 | SMTP 服务器地址 | `smtp.qq.com` | +| 服务器地址 | SMTP 服务器地址 | `smtp.qq.com` | | 端口 | SMTP 端口 | `465` (SSL) 或 `587` (TLS) | -| 安全连接 | 使用 SSL/TLS | `true` | -| 发件人邮箱 | 发件地址 | `noreply@company.com` | -| 发件人名称 | 显示名称 | `系统通知` | +| SSL/TLS | 是否使用 SSL/TLS | `true` | | 用户名 | SMTP 认证用户 | `noreply@company.com` | | 密码 | SMTP 密码或授权码 | `xxxxxxxxxxxxxx` | +| 发件人地址 | 发件地址 | `noreply@company.com` | +| 发件人名称 | 显示名称 | `系统通知` | --- @@ -49,6 +61,10 @@ Teable 支持两种方式配置邮件服务: 如果你更倾向于基于文件的配置,可以使用环境变量: + +推荐优先在 **管理面板 → 实例设置 → 邮箱** 中配置通知邮箱和自动化邮箱。环境变量主要作为部署级默认配置和兜底配置。 + + ```sh BACKEND_MAIL_HOST=smtp.example.com BACKEND_MAIL_PORT=465 diff --git a/zh/deploy/env.mdx b/zh/deploy/env.mdx index 425bcf1d..f8ec9d2d 100644 --- a/zh/deploy/env.mdx +++ b/zh/deploy/env.mdx @@ -11,13 +11,13 @@ mode: "wide" | 环境变量 | 描述 | 默认值 | 必填 | 示例 | | -------------------------------------------- | ------------------------------------------------------- | ---------------- | ---- | ------------------------------------------------ | -| 核心配置 | +| **核心配置** | | | | | | PUBLIC_ORIGIN | 用于生成完整 URL 的公共源,必须设置为您的应用程序访问地址 | - | 是 | https://app.teable.ai | | SECRET_KEY | 用于 JWT、会话和共享的密钥,请使用强密码 | defaultSecretKey | 是 | yourStrongSecretKey | | PORT | 应用程序运行的端口 | 3000 | - | 3000 | | LOG_LEVEL | 日志级别,可选值:fatal、error、warn、info、debug、trace | info | - | debug | | NEXT_ENV_IMAGES_ALL_REMOTE | 是否允许加载第三方图片 | false | - | true | -| 存储配置 | +| **存储配置** | | | | | | BACKEND_STORAGE_PROVIDER | 存储提供商,可选值:local、minio、s3、aliyun | local | - | s3 | | BACKEND_STORAGE_LOCAL_PATH | 本地存储路径 | .assets/uploads | - | .assets/uploads | | BACKEND_STORAGE_PUBLIC_BUCKET | public bucket 名称 | public | - | teable-public | @@ -40,12 +40,12 @@ mode: "wide" | BACKEND_STORAGE_MINIO_REGION | Minio region(可选) | - | - | us-east-1 | | BACKEND_STORAGE_UPLOAD_METHOD | 上传方式 | put | - | put | | STORAGE_PREFIX | 存储前缀,默认为 PUBLIC_ORIGIN | PUBLIC_ORIGIN | - | http://localhost:3000 | -| 缓存配置 | +| **缓存配置** | | | | | | BACKEND_CACHE_PROVIDER | 缓存提供商,可选值:sqlite、memory、redis | sqlite | - | redis | | BACKEND_CACHE_REDIS_URI | Redis 缓存连接 URI,当 BACKEND_CACHE_PROVIDER 为 redis 时需要配置 | - | - | redis://default:teable@127.0.0.1:6379/0 | -| 性能缓存配置 | +| **性能缓存配置** | | | | | | BACKEND_PERFORMANCE_CACHE | 性能缓存 Redis URL,用于查询结果缓存,大幅提高多人协作场景下的处理效率,建议配置单独的 Redis 实例,不要与 BACKEND_CACHE_REDIS_URI 一样 | - | - | redis://default:teable@127.0.0.1:6379/0 | -| 认证配置 | +| **认证配置** | | | | | | SOCIAL_AUTH_PROVIDERS | 社交认证提供商列表,多个提供商用逗号分隔 | - | - | github,google,oidc | | BACKEND_GITHUB_CLIENT_ID | GitHub OAuth 客户端 ID | - | - | github_client_id | | BACKEND_GITHUB_CLIENT_SECRET | GitHub OAuth 客户端密钥 | - | - | github_client_secret | @@ -54,33 +54,36 @@ mode: "wide" | BACKEND_OIDC_CLIENT_ID | OIDC 客户端 ID | - | - | google_client_id | | BACKEND_OIDC_CLIENT_SECRET | OIDC 客户端密钥 | - | - | google_client_secret | | BACKEND_OIDC_CALLBACK_URL | OIDC 回调 URL | - | - | https://app.teable.ai/api/auth/oidc/callback | -| 安全验证配置 | +| **安全验证配置** | | | | | | TURNSTILE_SITE_KEY | Cloudflare Turnstile 站点密钥,用于身份验证验证 | - | - | 1x00000000000000000000AA | | TURNSTILE_SECRET_KEY | Cloudflare Turnstile 秘密密钥,用于身份验证验证 | - | - | 1x0000000000000000000000000000000AA | | BACKEND_SIGNUP_VERIFICATION_CODE_RATE_LIMIT_SECONDS | 注册验证邮箱发送频率间隔限制(秒) | - | - | 30 | -| 邮件配置(已弃用 - 请使用管理面板设置) | -| BACKEND_MAIL_HOST | **[已弃用]** 邮件服务器主机。请使用管理面板 > 设置进行可视化邮件配置 | - | - | smtp.gmail.com | -| BACKEND_MAIL_PORT | **[已弃用]** 邮件服务器端口。请使用管理面板 > 设置进行可视化邮件配置 | - | - | 465 | -| BACKEND_MAIL_AUTH_USER | **[已弃用]** 邮件服务器认证用户名。请使用管理面板 > 设置进行可视化邮件配置 | - | - | username | -| BACKEND_MAIL_AUTH_PASS | **[已弃用]** 邮件服务器认证密码。请使用管理面板 > 设置进行可视化邮件配置 | - | - | usertoken | -| 会话/JWT 配置 | +| **邮件配置(已弃用 - 请使用管理面板 > 实例设置 > 邮箱)** | | | | | +| BACKEND_MAIL_HOST | 默认邮件服务器地址。推荐在管理面板 > 实例设置 > 邮箱中可视化配置通知邮箱和自动化邮箱 | smtp.teable.ai | - | smtp.gmail.com | +| BACKEND_MAIL_PORT | 默认邮件服务器端口 | 465 | - | 465 | +| BACKEND_MAIL_SECURE | 默认邮件服务是否使用 SSL/TLS | true | - | true | +| BACKEND_MAIL_SENDER | 默认发件人地址 | noreply.teable.ai | - | noreply@company.com | +| BACKEND_MAIL_SENDER_NAME | 默认发件人名称 | Teable | - | Teable | +| BACKEND_MAIL_AUTH_USER | 默认邮件服务器认证用户名 | - | - | username | +| BACKEND_MAIL_AUTH_PASS | 默认邮件服务器认证密码 | - | - | usertoken | +| **会话/JWT 配置** | | | | | | BACKEND_SESSION_EXPIRES_IN | 会话过期时间 | 7d | - | 7d | | BACKEND_SESSION_COOKIE_SECURE | 是否启用会话 Cookie 安全保护,默认为 false | false | - | true | | BACKEND_JWT_EXPIRES_IN | JWT 过期时间 | 20d | - | 20d | | BACKEND_RESET_PASSWORD_EMAIL_EXPIRES_IN | 重置密码邮件过期时间 | 30m | - | 30m | -| 资源限制 | +| **资源限制** | | | | | | MAX_COPY_CELLS | 单次请求最大复制单元格数 | - | - | 50000 | | MAX_READ_ROWS | 单次请求最大读取行数 | - | - | 10000 | | MAX_ATTACHMENT_UPLOAD_SIZE | 附件上传最大大小(字节) | - | - | 2147483648 | | MAX_SPACE_OWNER_COUNT | 单个用户可作为所有者拥有或管理的最大空间数量 | 10 | - | 10 | -| 功能开关 | +| **功能开关** | | | | | | RECORD_HISTORY_DISABLED | 是否禁用记录历史,默认为 false | false | - | true | | PASSWORD_LOGIN_DISABLED | 是否禁用密码登录(OAuth 和 OIDC 仍然可用),默认为 false | false | - | true | -| 分析监控 | +| **分析监控** | | | | | | MICROSOFT_CLARITY_ID | Microsoft Clarity 指标 ID,用于启用 Microsoft Clarity 分析 | - | - | your-metrics-id | | OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry OTLP 端点 | - | - | http://jaeger:4317 | | TELEMETRY_REPORT_DISABLED | 禁用自托管遥测上报,包括联网实例的许可合规上报 | false | - | true | -| 数据库配置 | +| **数据库配置** | | | | | | PRISMA_DATABASE_URL | 数据库连接 URL,必须配置 | - | 是 | postgresql://teable:teable@127.0.0.1:5432/teable | | PRISMA_TRANSACTION_TIMEOUT | 事务运行超时时间(毫秒),对于长时间运行的事务(如包含多个外键的批量更新)可以增加此值 | 5000 | - | 60000 | | PRISMA_TRANSACTION_MAX_WAIT | 从连接池获取事务的最大等待时间(毫秒) | 2000 | - | 5000 | diff --git a/zh/deploy/oidc.mdx b/zh/deploy/oidc.mdx index 11414255..a82b81e9 100644 --- a/zh/deploy/oidc.mdx +++ b/zh/deploy/oidc.mdx @@ -22,7 +22,7 @@ BACKEND_OIDC_USER_INFO_URL=https://your-idp.com/userinfo BACKEND_OIDC_ISSUER=https://your-idp.com # 其他选项 -BACKEND_OIDC_OTHER={"scope": ["email", "profile"]} +BACKEND_OIDC_OTHER={"scope":["email","profile"]} # 启用 OIDC 认证 SOCIAL_AUTH_PROVIDERS=oidc @@ -42,39 +42,6 @@ SOCIAL_AUTH_PROVIDERS=oidc | `BACKEND_OIDC_OTHER` | JSON 格式的其他选项(如 scope) | | `SOCIAL_AUTH_PROVIDERS` | 包含 `oidc` 以启用 OIDC 登录按钮 | ---- - -## 身份提供商配置指南 - - -以下指南展示的是 **Cloud 用户单个空间** 的管理面板 SSO 配置方式。 - -对于 **私有化部署**,请参考这些指南来设置您的 IdP 应用并获取所需参数,然后使用上述环境变量进行 **全局实例级别的认证配置**。 - - - - - Microsoft Azure AD / Entra ID - - - Okta 身份平台 - - - Auth0 身份平台 - - - Google Workspace 账号 - - - OneLogin 身份管理 - - - Authentik 开源身份提供商 - - - ---- - ## 启用多种认证方式 可以同时启用多种认证方式: