Repository navigation
docs(guides): import-and-export 按实测改写——导入向导在列表视图而非 Setup → Data,Salesforce 迁移标注未落地 (#763) - #797
Merged
Merged
Conversation
…force 迁移标注未落地 (#763) `Setup → Data` 分组根本不存在(Setup 应用只有 Overview/Apps/People & Organization/Access Control/Approvals/Configuration/Diagnostics/Integrations/ Advanced 九组),因此本页几乎每一步指向的都是不存在的界面。 但 issue「Import Wizard 不存在」这一条不成立:Console 的 object grid 确实 随附导入向导,入口在对象列表视图工具栏的 Import,并通过 `listImportMappings` → `meta.getItems('mapping')` 按 targetObject 列出本应用 自己的三个具名映射——与 importing-your-data.mdx 的 API 路线是同一条服务端 通路的两端。已按此改写,两页互链。 未落地的部分(Salesforce 迁移向导、OAuth、定时导出、数据主体请求)按 #755/#756 先例标注「尚未落地」并保留设计意图;能落地的部分对着 exportOptions、allowExport 授权与真实向导步骤重写。三语同改。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
CI 的 link-check(gaurav-nelson/github-action-markdown-link-check)扫描面是 `.md`,`.changeset/*.md` 在内;它把 `[...](...)` 里的路径当 URL 校验,而 `/docs/guides/importing-your-data` 这样的站内根相对路径无法解析 → Status: 400 / ERROR: 1 dead links found!。config 的 ignorePatterns 也没有 覆盖根相对路径。 本地首轮只核了 .mdx 页,因此没撞上这条。改为反引号纯文本;三个 mdx 页里的 站内链接不受影响(那些是 .mdx,不在该 action 的扫描面内)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
This was referenced Aug 5, 2026
Collaborator
Author
|
越界发现,均已单独立单(不带 label 的两条留给 PM 定级,第三条按观察项打
另:CI 的 link-check 首轮红了,root cause 在 changeset 而非文档页——该 action 的扫描面是 Generated by Claude Code |
yinlianghui
marked this pull request as ready for review
August 5, 2026 20:33
This was referenced Aug 5, 2026
同一缺陷类:guides/import-and-export.mdx 声称随箱提供 Salesforce 迁移向导与「Setup → Data → Import Wizard」,两者都不存在
#763
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #763
前提核实(对 origin/main 实测)——部分不成立,已如实改写
issue 的主干成立,但其中一条被证伪,而那一条恰恰改变了本页该怎么写。
成立的部分
Setup → Data分组根本不存在。 Setup 是真实存在的平台管理应用(@objectstack/setup,SETUP_APP来自@objectstack/platform-objects/apps),但它的导航分组只有九个:没有 Data 分组,也没有 Privacy 分组。所以本页原先的
Setup → Data → Import Wizard、→ Migrate from Salesforce、→ Migrate from HubSpot、→ Scheduled Exports、以及Setup → Privacy → Data Subject Requests—— 五条路径全部指向不存在的界面。Salesforce 迁移向导确实不存在。
src/全树 14 处salesforce(不分大小写)命中,逐条看过,没有一处是能力:全是把 Salesforce 当业界设计参照引用的注释(forecast.object.ts:22预测分类阶梯、case.object.ts:182FirstResponseDateTime、pages/*.page.tsLightning 版面、mappings/_shared.ts:10恰恰在说「外部导出会写、而 HotCRM 没有对应选项的词」)。没有连接器、没有向导、没有读 Salesforce 的 action。没有对外 OAuth。
grep -rni oauth src/ objectstack.config.ts零命中。Setup 的 Advanced → OAuth Applications(sys_oauth_application,描述为 "Registered OAuth/OIDC client applications")登记的是调用进入 ObjectStack 的客户端 —— 方向正好相反,不能拿来向别人的 Salesforce org 取得授权。这一处比 issue 的「没有 OAuth 授权面」更精确,本 PR 按精确版写。「完成后发邮件」不存在。 REST 导入作业路径上没有任何 sendMail / notify;
plugin-email未配 provider 时回落LogTransport("mail will NOT be sent",#755 已实测)。被证伪的一条:Import Wizard 存在,只是不在 Setup 里
issue 写「
src/apps/与src/pages/下没有 Import Wizard / Migrate 页面」—— 前提正确(应用侧确实没有),结论过宽:向导由平台 Console 随附,入口在对象自己的列表视图工具栏。实测链路:
@objectstack/console的objectViewi18n 带import: "Import"/importTitle: "Import from CSV",按钮打开plugin-grid懒加载的ImportWizard;Upload / Mapping / Preview,支持拖放 CSV/Excel 或从表格粘贴、Download template、按表头自动匹配并给置信度;Always create new/Update existing (skip if no match)/Update if matched, else create,外加 Match on 选匹配字段;Importing {{processed}} of {{total}} rows;History + Undo import("Records it created will be deleted and records it updated will be restored to their previous values.")。关键的一处对账:向导通过
dataSource.listImportMappings(object)→client.meta.getItems('mapping')拉取元数据里全部mapping项,再按targetObject等于当前对象过滤 —— 也就是本应用自己的具名映射。因此crm_account_import/crm_contact_import/crm_lead_import会出现在 Accounts / Contacts / Leads 列表视图的导入向导里 —— 和importing-your-data.mdx的 curl 路线是同一条服务端通路的两端。issue 说「两页各说各话」,真正的修法不是删掉一页,而是把它们接成一件事的两个入口。本 PR 按此改写,两页互链(对侧的回链本来就有,未动该文件)。因此本页导入段落不是标注未落地,而是改写为实测的真实步骤;标注未落地的是 Salesforce/HubSpot 迁移、定时导出、数据主体请求。
同页其余断言的实测校正
for large files (up to 50,000 rows))Update existing (**skip** if no match)upsertKey是 Account Name / Email / Emailexternal_id列并标记为匹配键」external_id字段;且具名映射是严格投影,未声明的列在写入前即被丢弃 —— 这条建议完全空转。改写为「业务键」,并保留其承诺的幂等性(那部分是真的)src/objects/无任何 multiselect 字段,删除而非臆测exportOptions: ['csv','xlsx']的只有 account / contact / lead / opportunity 四个视图allowExport是 17.0 起的选择性开启硬门,未设即拒,viewAllRecords/modifyAllRecords都不替代;本 PR 按src/profiles/逐个角色列表src/与平台能力清单均无;audit与reports都不在本应用requires(automation, triggers, analytics, auth, ui, approvals, sharing+ 平台常开的queue, job, cache, settings, email, storage, sms, sharing, messaging, analytics)一处如实点破而非粉饰:工单(
crm_case)在五个角色里都拿到allowExport,但没有任何工单列表视图声明exportOptions—— 那条授权面向的是报表导出,而reports能力不在requires。页面按 #762 处理 webhooks 的姿态写成「部署侧的事实」,并另行立单(见下)。一处状态分层:Salesforce 迁移不在路线图上,而 HubSpot 导入在(路线图原文 "More connectors — Slack, Microsoft Teams, Google Workspace, HubSpot import")。两者不是同一种「未落地」,页面分别写明。
关于反向验证
本页的散文断言没有门禁覆盖(
docs-object-coverage只保证每个crm_*对象有一页文档),所以不存在「改前红、改后绿」可展示,这里不编造。能拿到的真实反向验证是三语一致那条,方向按预测为红:临时删掉 zh-Hans 页的一个 callout 后test/docs-drift.test.ts按预期变红并点名本页 ——恢复后
docs-drift+docs-object-coverage2 files / 53 passed。说明守卫读的是新页,不是空过。验证
pnpm hygiene→✓ source hygiene clean(注:它只扫src, test, e2e, scripts242 个文件,不覆盖content/,故另行 grep 自扫)pnpm typecheck→ clean(exit 0)pnpm validate→✓ Validation passed (1518ms),5 条警告均为存量、与本 PR 无关pnpm test --maxWorkers=2→ 63 files / 1521 passed, 1 skippedgrep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]'四个文件零命中文件面
content/docs/guides/import-and-export.mdx+ zh-Hans / zh-Hant + 一个 changeset(docs, patch)。未动src/**、未动importing-your-data.mdx(对账基准)、未新建守卫、未动content/docs/releases/。越界发现另行立单(见下方 issue 链接),均不带 label、不 assign。