Lightdash Learn 应用内课程优先级:九大实战演练的规划、交付与验证指南

Lightdash Learn 应用内课程优先级:九大实战演练的规划、交付与验证指南 Lightdash Learn 应用内课程优先级九大实战演练的规划、交付与验证指南【免费下载链接】lightdashAgentic BI. Analytics at the speed of code ⚡️项目地址: https://gitcode.com/GitHub_Trending/li/lightdash导读本文围绕 Lightdash 仓库中 docs/learn/walkthrough-priorities.md 所定义的Learn 应用内课程In-app curriculum优先级清单展开说明 Lightdash 如何以「真实产品操作 一次性训练副本」的方式通过九条已生成的实战演练walkthrough覆盖 9 个权限 scope并配套交付标准、验证机制与后续排期。读完本文你将掌握这九条演练各自要达成的可观察结果、data-tour-*标记驱动的生成式课程机制以及如何在 CI、scope-tour smoke 与权限测试三层保障下维护这些课程不失效。背景课程交付策略的一次方向性调整2026-09-09 的决策只保留有应用内路径的 scopewalkthrough-priorities.md记录了 Lightdash 团队在 2026-09-09 由 Josh 确认的课程方向优先覆盖已经具备应用内in-app操作路径的 scope。Learn 的使命是让学习者在一次性的训练副本里通过真实产品交互学会某个权限 scope因此「阅读即认可」不再算作一个动手型 scope 的完成结果。这一决策直接反映在课程形态上九条课程条目改用生成式应用内演练generated in-app walkthroughs其中七条是新增路径两条是复用既有演练其余 21 条 scope 条目统一显示Coming Soon阅读式交付reading delivery已于 2026-09-10 移除。从源码侧可以印证这一「未实现交互式交付即归为 Coming Soon」的机制packages/frontend/src/features/learn/comingSoon.ts 中维护了COMING_SOON_SCOPES常量清单12 个 embedding、3 个 content-as-code、2 个 promotion、validation、analytics、2 个 agent-document 类 scope并在 scripts/scope-tours/coverage.ts 的SCOPE_DISPOSITIONS中为这些 scope 统一标记了status: coming-soon其 reason 明确写着「Interactive delivery is not implemented. Reading lessons were removed by the product decision of 2026-09-10; future formats will be separate work.」九条优先级课程清单完整继承下表是原文档的核心内容每一条课程所对应的权限 scope、要完成的开发工作以及判定完成的必需结果Required result。注意其中几个条目成对出现顺序号相同因为它们的教学对象是同一功能的不同权限侧面。顺序Scope工作内容必需结果1manage:CustomSql检查并复用 CS-224 中已有的 SQL Runner 保存流程。学习者保存一个 SQL chart并看到已保存的 chart。2view:ContentVerification复用或扩展 CS-220让学习者检查验证verification指示器。学习者在已验证内容上定位到该指示器。2manage:VerifiedContent在验证教学基础上扩展「编辑已验证内容」的步骤。学习者看到该编辑对验证状态产生的文档化效果。仅验证内容本身不满足本条目。3manage:ChangeCsvResults扩展导出流程并协调 PR #28911 带来的变更。学习者更改一个导出选项并获得对应结果。仅有解释不够。4view:SpotlightTableConfig新增「管理列可见性」的路径。学习者检查已保存的目录catalog列配置。4manage:SpotlightTableConfig在学习者副本中切换一个列并保存配置。变更后的可见性在副本重新加载后仍然持久。5manage:VirtualView用 Explorer 菜单的编辑路径扩展虚拟视图的创建教学。学习者编辑一个可丢弃的虚拟视图并看到变更生效。5delete:VirtualView新增删除可丢弃虚拟视图的教学。学习者删除该视图并确认其已移除。仅创建不满足本条目。6manage:DeletedContent检查「最近删除」Recently deleted的可用性并新增恢复一个可丢弃 chart 的教学。恢复的 chart 重新出现在其空间中。若教授永久删除需使用单独的另一个可丢弃条目。可以看到「必需结果」反复强调两件事一是必须观察到实际产物保存的 chart、持久化的列配置、恢复的 chart二是仅做创建/验证/解释不算完成——这正是 2026-09-09 方向决策动手才算数在每一条目上的具体落地。与 scope 注册表的对应上述 scope 都来自 Lightdash 的权限 scope 注册表getTrainingProjectScopes()位于 packages/common/src/authorization/roleToScopeMapping.ts。训练副本授予的是「项目管理员 scope 列表去掉组织级 scope 与排除项」之后的集合而课程库packages/frontend/src/features/learn/catalogue.ts会为每个 trainee scope 生成一个模块标题取自 scope 注册表的描述、分组取自注册表分组、只有存在生成演练时模块才可用。这些优先级条目正是「已有生成演练」的那一批与generated.ts中的SCOPE_TOURS一一对应。生成式演练课程如何从产品自身长出来在深入九条课程的交付细节之前需要理解这些课程的制作方式。Lightdash 的 walkthrough 不是手工编写的步骤列表而是从产品组件上的data-tour-*标记与文档仓库的句子中构建出来的数据。核心入口在 scripts/scope-tours/generate.ts每个被某 scope 解锁的控制在权限检查旁同时携带data-tour-scope所属 scope、data-tour-step步序、data-tour-route所在页面、data-tour-label一句话操作说明、data-tour-docs正文引用的文档章节等标记生成器读取这些标记和文档仓库LIGHTDASH_DOCS_DIR默认指向../mintlify-docs写出 packages/frontend/src/features/scopeTours/generated.ts每个 scope 一个 tour步骤正文取自被引用的文档句子链接仅允许指向文档站点课程顺序由pnpm scope-tours:order生成到curriculum.ts完整的标记词汇表含data-tour-via路径、data-tour-then后续点击、data-tour-return返回路径、data-tour-suggest输入建议、data-tour-busy等待面、data-tour-result结果面等记录在 scripts/scope-tours/generate.ts 文件头部的注释中。这种「从产品与文档生成课程」的方式带来一个关键推论标题来自 scope 注册表解释文字来自标记引用的文档句子构建时没有任何内容是被凭空发明的Nothing is invented at build time。九条优先级课程同样遵循这一机制任何一条课程在库中的标题、文案、步骤全部可由标记与文档推导出来。优先级条目如何复用既有演练manage:CustomSql与view:ContentVerification两条被标注为「复用」——前者复用 CS-224 的 SQL Runner 保存流程后者复用或扩展 CS-220 的验证指示器教学。复用不是简单的拷贝交付标准要求「scope 映射只有在某条 tour 的操作与可观察结果确实能教会该 scope 时才能复用它」。这正是data-tour-covers标记存在的意义一个交互动作若同时教多个 scope可以用该标记声明额外覆盖的 scope逗号/空格分隔、不允许重复从而让一次生成服务于多条课程条目。交付标准Delivery criteria原文档定义了五条硬性交付标准它们共同约束九条课程的开发方式优先复用既有控件与锚点而非新增。新增标记之前先看现有产品能否表达该步骤scope 映射只有在某条 tour 的动作与可观察结果确实能教该 scope 时才允许复用。步骤从前端标记生成正文来自规范文档并遵循 skills/developing-in-lightdash 仓库技能中add-scope-walkthrough的配方即 skills/developing-in-lightdash/SKILL.md 体系下新增演练的完整流程。使用既有受训者权限。若发现缺路由、缺 feature flag、缺 fixture 或控件不可达则是一个需要显式调查的依赖项而不是绕过权限的理由。在全新的训练副本中用录制账号验证每条流程包括可见结果、与共享源的隔离、以及副本清理。未支持的模块显示 Coming Soon内容呈现与已验证的动手完成在覆盖率与报表中严格区分。第 4 点中的「录制账号」指的是walkthrough-recorderlightdash.com专用账号——用专用账号做 smoke 运行是为了保证 smoke 不会误删某个正在使用的真人训练副本。从源码看第 1、2 点分别由两个工具强制生成检查器scripts/scope-tours/check.ts 会验证路径选择器是否能在前端解析到带data-tour-hint的锚点、文档锚点是否存在、句子范围是否越界、步骤标题是否超过 12 个词、正文是否超过 60 个词、输入型步骤是否带data-tour-suggest、路由是否属于已知项目路由、最后一个步骤是否为「观察型Got it」而非点击型等覆盖率审计scripts/scope-tours/coverage.ts 的auditCoverage会把训练 scope 全集与当前生成的 tours 做比对输出generated/pending/coming-soon/excluded/unclassified等分类确保每个训练副本授予的权限要么有演练、要么有显式处置Coming Soon 或 excluded CS 工单任何未分类 scope 都会让审计不通过。验证三层防线第一层生成检查与覆盖率审计CICI 中的Scope walkthrough checks见 scripts/scope-tours/check.ts 的检查规则清单会在每次触及packages/frontend/src的 PR 上运行捕获结构性破坏——被标记的控件被删、改名、丢失属性或点击路径指向了不存在的锚点。与此同时覆盖率审计的失败输出会明确指出问题属于哪一类unclassified某权限既无演练也无处置——通常是新增了 scope 或删除了某演练的标记staleDispositions已列出的 scope 现在有了演练或已不存在应删除处置条目pending/related已登记但尚未解决的缺口会阻塞发布。注意 CI 有一个设计上的边界结构性破坏能被抓到行为性破坏抓不到。行为性破坏是指标记都在、但学习者无法通过点击高亮控件到达目标新增了弹窗、控件被移到另一次点击之后、控件在数据加载前处于禁用态、只在某些配置下渲染。这类问题只有第二层防线能发现。第二层scope-tour smoke 驱动手工运行scripts/scope-tours/smoke.ts 会以学习者身份在运行中的实例上启动每条演练并只点击演练高亮的控件高亮环内的控件或卡片自带的按钮来完成它。一个演练在以下情况判失败某步骤超时无进展、Got it 打不开完成对话框、Back to library 没有落在共享训练项目的课程库、scope 不在学习者副本授予的 trainee 集合里、或者学习者在真实项目中已经持有该 scope没有可训练的余地。运行方式来自 docs/learn/maintaining-walkthroughs.mdSMOKE_BASE_URLhttp://localhost:frontend port \ SMOKE_EMAILdemo3lightdash.com SMOKE_PASSWORDdemo_password! \ SMOKE_SCOPESmanage:SavedChart,manage:CustomFields \ pnpm scope-tours:smoke关键约束启动演练会删除该账号当前的训练副本因此绝不能用正在被真人测试的账号跑 smokeEnterprise 类演练AI agent、data app需要许可证data app 还需要对应 feature flag否则演练会卡在未渲染的控件上实例配置不同演练行为可能不同若变更依赖配置应在相同配置下再跑一次例如设置AUTH_GOOGLE_OAUTH2_CLIENT_ID与GOOGLE_DRIVE_API_KEY为任意非空值会让导出菜单显示 Cloud 上才有的 Google Sheets 选项smoke 是按需手工运行、不进 CI 的一次产品变更如果保留了所有标记但改变了点击路径CI 依然通过只有 smoke 能暴露它。SMOKE_DEBUG1会打印每步到达情况、每次页面跳转和每个改动数据的请求SMOKE_OUT_DIR可改截图输出目录--thumbnails参数会把动作步骤的页面快照保存到packages/frontend/src/features/learn/thumbnails/scope.jpg用作课程卡片图带。第三层权限测试区分「组合角色」与「单独授权」原文档特别强调权限测试必须区分组合后的训练角色与单独的一次授权。这四条规则是课程不改变既有授权语义的底线原始验证者verifier可以保存并重新验证自己的内容原始删除者deleter可以恢复自己的内容虚拟视图更新在后端检查create:VirtualViewmanage:ChangeCsvResults在前端门控导出选项。也就是说课程只负责「教会」这些权限在训练副本中的用法而授权规则本身packages/common/src/authorization/roleToScopeMapping.ts 中的getTrainingProjectScopes()/getTrainingProjectViewerScopes()不被课程改动。文档原文的总结是The curriculum does not change those authorization rules.从 docs/learn/architecture.md 可以补充这一层的系统语义训练权限层只增加权限、从不移除用户已有的权限service account 与个人访问令牌永远不会获得 trainee 权限权限按用户所属组织解析因此用户不会在别的组织的项目上获得它。这正是「原始验证者可重新验证、原始删除者可恢复」能够成立的根本原因——训练副本只是叠加了一个 trainee 视图没有剥夺任何既有能力。后续工作与边界21 条 Coming Soon 条目课程库中其余 21 条 scope 条目目前统一显示 Coming Soon12 个 embedding 类、3 个 content-as-code 类、2 个 promotion 类以及 validation、analytics 和 2 个 agent-document 类 scope完整清单见 packages/frontend/src/features/learn/comingSoon.ts。这些条目的执行环境与访问约束需要单独的工作新的交互式格式将作为独立工单交付——这正是 2026-09-10 移除阅读式交付后的必然结果没有交互式实现就没有课程内容。一个值得注意的例外是manage:DeletedContent它原本身在优先级清单第 6 位但当前在 scripts/scope-tours/coverage.ts 中被标记为 coming-soon原因是其唯一可达路径是「为 Learn 新增的 Browse 菜单入口」该入口在产品决策落地前被移除了CS-311。这恰好演示了「缺失入口 显式依赖项」的交付标准在实践中如何运作一条课程可以因为产品侧缺少入口而被暂时撤下而不是勉强用一个不真实的路径教学。课程库的其余构成九条优先课程并非课程库的全部。课程库还包含查看与构建保存的 metrics tree、查看 AI agent、查看 data app 等条目其前置条件包括 metrics-tree 的种子数据与复制、教学样本的保留、以及表单恢复。从 packages/frontend/src/features/learn/catalogue.ts 可见课程库的分组结构Foundations查看者已能做的事排在最前其后按 scope 注册表的 CONTENT、SHARING、EMBED、DATA、AI、PROJECT_MANAGEMENT、SPOTLIGHT、ORGANIZATION_MANAGEMENT 分组排列每个模块还带有gate字段enterprise / dataApps / aiAgents / softDelete决定该模块在当前实例是否渲染——没有许可证或 flag 时模块会被库隐藏而直接通过 URL 启动被隐藏模块的演练会卡在一个未渲染的控件上这是 docs/learn/architecture.md 明确记录的陷阱。实战要点总结判断一条课程是否完成看「必需结果」而不是「做没做动作」保存并看到 chart、看到验证指示器、看到编辑对验证的影响、获得改导出选项后的结果、列配置刷新后仍在、编辑虚拟视图后看到变更、删除后确认移除、恢复后 chart 回到空间——九条课程全部以可观察产物收尾。课程从产品标记与文档句子生成维护的核心是data-tour-*属性与文档引用而不是手写的步骤文件。修改 UI 时若动到被标记控件要么把属性放回等价控件要么重新生成并提交generated.tsCI 无法捕获行为性破坏只有pnpm scope-tours:smoke能兜底详见 docs/learn/maintaining-walkthroughs.md。新增一个 scope 的处置必须显式新权限默认进入 Coming SoonCOMING_SOON_SCOPES或给出带 CS 工单的 excluded 理由SCOPE_DISPOSITIONS否则覆盖率审计会报unclassified并阻塞 CI。训练副本是隔离的沙箱副本是provisioning_source training的普通预览项目只携带种子内容永不携带学习者在共享项目或其他副本里的产出识别「是不是训练副本」只看 provisioning source而不能依赖copied_from或 upstream 链接两者都可通过公开 API 伪造。课程不改变授权规则训练角色只是对既有 scope 集合做减法与叠加验证者、删除者等原始授权在任何时候都优先于课程内容生效。输出文章【免费下载链接】lightdashAgentic BI. Analytics at the speed of code ⚡️项目地址: https://gitcode.com/GitHub_Trending/li/lightdash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考