用途
add-sample-data 用于向 Dataverse 表填充贴近真实的示例记录,使刚搭建好的代码应用在首次启动时就能显示看起来真实的数据。它依据每张表的架构生成行数据,并按依赖顺序插入。典型用法是在 /add-dataverse(或 /setup-datamodel)已经建好表之后运行。
主要能力
- 按表架构生成有上下文的示例数据,值需匹配列名与类型;例如巡检应用中的 cr3e9_sitename 列会得到“Westside Construction Site”,而不是“Sample Name 1”。
- 按依赖顺序插入,父表/被引用表先于子表/引用表,保证查找 ID 可用。
- 支持场景感知:读取 native-app-plan.md(尤其是共享约定与屏幕模板中的操作模式值),否则使用当前数据请求与已验证的架构;示例行应能覆盖应用实际工作流,如状态、日期、关系、优先级/严重程度、媒体元数据与边界情况。
- 失败时优雅降级:插入失败会记录错误并继续处理剩余记录,不会自动回滚,用户可在修复后重新运行。
- 幂等重跑:若上次运行部分完成,第二次运行会读取 memory-bank.md 的已填充数据表并跳过已插入的记录。
- 解决方案范围插入:始终传入 --solution <uniqueName>,使记录落入指定解决方案而非默认位置。
使用方式与工作流
技能流程为:解析已批准填充范围 → 校验项目与身份验证 → 发现范围内的表 → 选择表与数量 → 生成并预览 → 插入 → 汇总。
输入是技能参数而非用于 dataverse-request.js 的标志:--working-dir 指定绝对根目录;--tables 提供已批准填充表的允许清单;--exclude-tables 列出即将退役的表名。编排调用时,必须在身份验证、记录数查询或生成之前提供范围交接与匹配的 --tables;缺少或格式错误的允许清单会返回 NEEDS_CONTEXT,而不会退回到清单中的所有表。显式为空的允许清单属于空操作,报告没有已批准的填充表并直接返回。
在数据生成阶段:字符串按列名语义生成(如 *email 为 firstname.lastname@example.com,*phone 为 (555) 123-NNNN);备注生成 1-3 句相关文本;整数/小数/货币按列名给出合理范围;日期时间使用过去 30 天至未来 14 天内的 ISO 日期;布尔值混合真假;选项列先查询可选值再从中挑选;查找列引用已验证的现有父记录或在批准填充范围内插入的记录。图片/文件列默认跳过并留空,除非启用了媒体填充且该列属于业务数据。
填充数量按表的类别自动调整:参考表默认约 3 条;连接表约 3 倍父记录数、上限 9 条;事务表 5 条;明细/行项目每父记录 2-3 条;问题/发现每事务父记录 3-4 条;证据/附件约每 30% 父记录 1 条;日志/事件每事务父记录 2 条;越权/审批约每 20% 父记录 1 条。目标不是演示数据集,而是让每个屏幕都有内容可渲染。
适用场景
适用于需在 Dataverse 表上快速生成真实感示例记录的场景,例如刚搭建完代码应用、希望在首屏就展示真实数据;或在使用 /prototype-to-real-app 将 mock 原型转为 Dataverse 后复用已有的原型种子文件(--from-seed)。
限制与注意事项
- 填充范围以已批准的允许清单为准,清单中出现的表并不自动获得填充许可;退役表始终排除。
- 覆盖范围限定在已批准范围内,而不是整个清单。
- 不得编辑 .datamodel-manifest.json 或应用计划来让被排除的表变得合规;扩大范围需回到对应的审批环节。
- 若被选中的表引用了未选中的父表,只能复用已验证的现有父记录;没有合适记录时返回 NEEDS_CONTEXT,而不是自动添加父表或省略必需的查找。
- 未经额外的共享环境确认,不得填充标准系统表(如 contact、account、systemuser)。
- 填充前会做记录数检查:已有 ≥5 条记录的表会被整体跳过;少于 5 条则只补足差额。
- 关于收费、价格、平台支持范围与具体效果,资料暂未提供。